第一回
こんなgem使ってますよ的な
話
2013/07/11 Web team MTG
morimorihoge@BPS
本資料について
• 本資料は社内で行った発表資料です
– 外部向けに書かれていない記述などがありま
す
– 空き時間で作成しているためクオリティはそ
れほど高くないです
– 一部公開のために削除・追記したスライドが
あるかもしれません
• 本資料の取り扱いについて
– 基本公開としますが,社外発表などで利用す
る際はmorimori@bpsinc.jpに連絡して下さい
はじめに
• 目的
– 数多くのRailsプロジェクトが走っている中で,
良く使うgem情報を共有して,楽に品質の良
いアプリを作ろうぜ
• 突っ込み歓迎
– これが良かった,これはメジャーだけど使っ
てみたら今一つ,などどんどん突っ込みして
下さい
• 第一回?
– たまに共有して更新していきたいですねー
基本gem: 知らないと恥ずかしいレベル
• mysql2: MySQL使うならこのconnector
• pg: PostgreSQL使うならこのconnector
• unicorn: 現状BPSでの標準Railsサーバ
流石に知ってると思いますが,一応.
案件にも寄るが,良く使う
gems
みたことあるのが多いはず
サービス・機能拡張系
• Devise(plataformatec/devise)
– 言わずと知れた会員登録・ユーザ認証gem
– でかくて癖のあるライブラリだが,会員周りの良く使う機能が一通り
あるので覚えるべき
• Paperclip(thoughtbot/paperclip)
– 添付ファイルをActiveModel透過に扱うことのできるgem
– AWS S3へのアップロード,画像のリサイズにも対応しているので,知
らなければtutorial位は見ておきましょう
– BPSではpolymorphic associationを使ってattachments的なtableにまとめ,
他テーブルからhas_many参照させるのがメジャー
– 最近はCarrierWave(carrierwaveuploader/carrierwave)が良いという話も.
興味があれば囓ってみてレポート下さい
• ActsAsParanoid(goncalossilva/acts_as_paranoid)
– ARの#destroyで論理削除を実現するgem
– add_indexでDBにUnique Keyを付与した場合,validates :uniquenessはpass
するのにDBにINSERT/UPDATEするタイミングでエラーを吐くので利用に
注意
バックグラウンド実行・サーバ
系
• Capistrano(capistrano/capistrano)
– cap deployでお世話になるgem
– 初期設定などはサーバエンジニアとの連携が必要だが,ホスト依存設定ファイルを変更した場合にはcapistranoの設定
ファイルも編集する必要があるので注意
– 合わせて入れたい
• capistrano-extでmultistage対応(cap staging deployとか)
• capistrano_colorsで色付け
• rvm-capistrano:RVM対応
• capistrano-unicorn:unicornのstart/stop対応
• Delayed::Job(collectiveidea/delayed_job)
– 非同期実行gem
– Queueとなるtableに実行に必要なパラメータが入り,workerが上から順に実行していく形式
– とにかく単純で考えることが少ないので,ただの重いCSV作成とかならこれで十分
– AWS ELBを使う場合,60秒でTCPセッションがタイムアウトするので重い処理には必須
– もっと複雑なことをしたければ,Resque(resque/resque),Sidekiq(Sidekiq)を検討しましょう
• Whenever(javan/whenever)
– Cron(定時実行)gem
– 毎日の〆処理など,バッチ実行のお供.インストールした場合,capistrano側にも設定が必要なので忘れずに
• New Relic Ruby Agent(newrelic/rpm)
– サービス監視サービスNewRelicのクライアントgem
– 最近のアプリには入れるようにしてるので,もし入ってなかったら入れたいです
• AirBrake(airbrake/airbrake)
– エラーがあるとメール通知してくれるgem
– AirBrake(元Hoptoad)はすごくお高くなってしまって手が届かないのでErrbit(errbit/errbit)サーバを使いましょう.
プロトコル互換です
– BPSではばばErrbitサーバが使われています
テスト系
• rspec-rails(rspec/rspec-rails)
– Unit/Integrationテストgem
– 最近はminitestが見直されているっぽいけど,rspecが
まあ今のところまだ主流っぽい
– もっとちゃんと使いたいけどあまり使いこなせてな
いので多くは語りません
• cucumber-rails(cucumber/cucumber-rails)
– Behaviorテストgem
– ちゃんと書くと良いです.seleniumなんかと組み合わ
せるとブラウザ使った自動テストも書けます.重い
けど
• Guardなどなど
案件によっては使う,知って
ると便利系gems
もろもろ1
• Roo(Empact/roo)
– Excel/Excelx/Openoffice/Google Spreadsheets/Libreoffice/CSV
を透過的に扱えるgem
– fork元のhmcgowan/rooは活動停止したので注意!
– データ取り込み時にExcelを使えるので,お客さんにデータ
作成してもらう時に便利
• 改行や特殊文字があってもparseできる
• OmniAuth(intridea/omniauth)
– TwitterなどのOauth,Facebook認証などの外部アプリ認証
gem
– Facebookログインとかtwitterログインしたいと言われたら
これ
– テスト環境を作るのが少し面倒になる(テストサーバ用の
アプリ登録をする必要がある)ので注意
もろもろ2
• Virtus(solnic/virtus)
– Rubyのclassを拡張できるgem
– attribute :name, String, default: “morimori”とかできます
– form classを作るときなんかに使うと便利なことがあ
るかも(XXXでmorimori実装あり)
• ThinReports(http://www.thinreports.org/)
– PDF帳票を簡単に作成できちゃうgem
– 作ってるのは日本の株式会社マツケイというところ
– かなり良くできているので,業務システムなどをや
るのであれば,触ってみると良いです.GUIのエディ
タツールなんかもあります
Using gems
• Gemはいっぱい
• バグもいっぱい
• 使う時は流行ってる度合いをチェック!
• あと,latest committedの日付もチェック.メ
ンテされていない場合,最悪自力で不具合対
応する覚悟で使うこと
まとめ
• こんなのあるよ!ってのがあればぜひ共
有してください
• このgemは最近いけてないらしいぞ?とい
う話もgood
• こんなgem作ったがあると楽しいですね
• 社内ネットワークで気軽に流してくださ
い

こんなGemつかってますよ話

  • 1.
  • 2.
    本資料について • 本資料は社内で行った発表資料です – 外部向けに書かれていない記述などがありま す –空き時間で作成しているためクオリティはそ れほど高くないです – 一部公開のために削除・追記したスライドが あるかもしれません • 本資料の取り扱いについて – 基本公開としますが,社外発表などで利用す る際は[email protected]に連絡して下さい
  • 3.
    はじめに • 目的 – 数多くのRailsプロジェクトが走っている中で, 良く使うgem情報を共有して,楽に品質の良 いアプリを作ろうぜ •突っ込み歓迎 – これが良かった,これはメジャーだけど使っ てみたら今一つ,などどんどん突っ込みして 下さい • 第一回? – たまに共有して更新していきたいですねー
  • 4.
    基本gem: 知らないと恥ずかしいレベル • mysql2:MySQL使うならこのconnector • pg: PostgreSQL使うならこのconnector • unicorn: 現状BPSでの標準Railsサーバ 流石に知ってると思いますが,一応.
  • 5.
  • 6.
    サービス・機能拡張系 • Devise(plataformatec/devise) – 言わずと知れた会員登録・ユーザ認証gem –でかくて癖のあるライブラリだが,会員周りの良く使う機能が一通り あるので覚えるべき • Paperclip(thoughtbot/paperclip) – 添付ファイルをActiveModel透過に扱うことのできるgem – AWS S3へのアップロード,画像のリサイズにも対応しているので,知 らなければtutorial位は見ておきましょう – BPSではpolymorphic associationを使ってattachments的なtableにまとめ, 他テーブルからhas_many参照させるのがメジャー – 最近はCarrierWave(carrierwaveuploader/carrierwave)が良いという話も. 興味があれば囓ってみてレポート下さい • ActsAsParanoid(goncalossilva/acts_as_paranoid) – ARの#destroyで論理削除を実現するgem – add_indexでDBにUnique Keyを付与した場合,validates :uniquenessはpass するのにDBにINSERT/UPDATEするタイミングでエラーを吐くので利用に 注意
  • 7.
    バックグラウンド実行・サーバ 系 • Capistrano(capistrano/capistrano) – capdeployでお世話になるgem – 初期設定などはサーバエンジニアとの連携が必要だが,ホスト依存設定ファイルを変更した場合にはcapistranoの設定 ファイルも編集する必要があるので注意 – 合わせて入れたい • capistrano-extでmultistage対応(cap staging deployとか) • capistrano_colorsで色付け • rvm-capistrano:RVM対応 • capistrano-unicorn:unicornのstart/stop対応 • Delayed::Job(collectiveidea/delayed_job) – 非同期実行gem – Queueとなるtableに実行に必要なパラメータが入り,workerが上から順に実行していく形式 – とにかく単純で考えることが少ないので,ただの重いCSV作成とかならこれで十分 – AWS ELBを使う場合,60秒でTCPセッションがタイムアウトするので重い処理には必須 – もっと複雑なことをしたければ,Resque(resque/resque),Sidekiq(Sidekiq)を検討しましょう • Whenever(javan/whenever) – Cron(定時実行)gem – 毎日の〆処理など,バッチ実行のお供.インストールした場合,capistrano側にも設定が必要なので忘れずに • New Relic Ruby Agent(newrelic/rpm) – サービス監視サービスNewRelicのクライアントgem – 最近のアプリには入れるようにしてるので,もし入ってなかったら入れたいです • AirBrake(airbrake/airbrake) – エラーがあるとメール通知してくれるgem – AirBrake(元Hoptoad)はすごくお高くなってしまって手が届かないのでErrbit(errbit/errbit)サーバを使いましょう. プロトコル互換です – BPSではばばErrbitサーバが使われています
  • 8.
    テスト系 • rspec-rails(rspec/rspec-rails) – Unit/Integrationテストgem –最近はminitestが見直されているっぽいけど,rspecが まあ今のところまだ主流っぽい – もっとちゃんと使いたいけどあまり使いこなせてな いので多くは語りません • cucumber-rails(cucumber/cucumber-rails) – Behaviorテストgem – ちゃんと書くと良いです.seleniumなんかと組み合わ せるとブラウザ使った自動テストも書けます.重い けど • Guardなどなど
  • 9.
  • 10.
    もろもろ1 • Roo(Empact/roo) – Excel/Excelx/Openoffice/GoogleSpreadsheets/Libreoffice/CSV を透過的に扱えるgem – fork元のhmcgowan/rooは活動停止したので注意! – データ取り込み時にExcelを使えるので,お客さんにデータ 作成してもらう時に便利 • 改行や特殊文字があってもparseできる • OmniAuth(intridea/omniauth) – TwitterなどのOauth,Facebook認証などの外部アプリ認証 gem – Facebookログインとかtwitterログインしたいと言われたら これ – テスト環境を作るのが少し面倒になる(テストサーバ用の アプリ登録をする必要がある)ので注意
  • 11.
    もろもろ2 • Virtus(solnic/virtus) – Rubyのclassを拡張できるgem –attribute :name, String, default: “morimori”とかできます – form classを作るときなんかに使うと便利なことがあ るかも(XXXでmorimori実装あり) • ThinReports(http://www.thinreports.org/) – PDF帳票を簡単に作成できちゃうgem – 作ってるのは日本の株式会社マツケイというところ – かなり良くできているので,業務システムなどをや るのであれば,触ってみると良いです.GUIのエディ タツールなんかもあります
  • 12.
    Using gems • Gemはいっぱい •バグもいっぱい • 使う時は流行ってる度合いをチェック! • あと,latest committedの日付もチェック.メ ンテされていない場合,最悪自力で不具合対 応する覚悟で使うこと
  • 13.
    まとめ • こんなのあるよ!ってのがあればぜひ共 有してください • このgemは最近いけてないらしいぞ?とい う話もgood •こんなgem作ったがあると楽しいですね • 社内ネットワークで気軽に流してくださ い