13
第第第 gem 第第第第第第第第第 2013/07/11 Web team MTG morimorihoge@BPS

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

Embed Size (px)

DESCRIPTION

弊社社内チームミーティングでの資料です.ここ最近のRails開発(3.2系)で使っているGemの紹介など. http://techracho.bpsinc.jp/author/morimorihoge にて他の記事も書いてますので,興味があればご覧下さい.

Citation preview

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

第一回こんな gem使ってますよ的な

話2013/07/11 Web team MTG

morimorihoge@BPS

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

本資料について• 本資料は社内で行った発表資料です–外部向けに書かれていない記述などがあります

–空き時間で作成しているためクオリティはそれほど高くないです

–一部公開のために削除・追記したスライドがあるかもしれません

• 本資料の取り扱いについて–基本公開としますが,社外発表などで利用する際は[email protected]に連絡して下さい

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

はじめに• 目的–数多くの Railsプロジェクトが走っている中で,良く使う gem情報を共有して,楽に品質の良いアプリを作ろうぜ

• 突っ込み歓迎–これが良かった,これはメジャーだけど使ってみたら今一つ,などどんどん突っ込みして下さい

• 第一回?–たまに共有して更新していきたいですねー

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

基本 gem: 知らないと恥ずかしいレベル

• mysql2: MySQL使うならこの connector• pg: PostgreSQL使うならこの connector• unicorn: 現状 BPSでの標準 Railsサーバ

 流石に知ってると思いますが,一応.

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

案件にも寄るが,良く使うgems

みたことあるのが多いはず

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

サービス・機能拡張系• 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するタイミングでエラーを吐くので利用に注意

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

バックグラウンド実行・サーバ系• 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サーバが使われています

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

テスト系• rspec-rails( rspec/rspec-rails)

– Unit/Integrationテスト gem– 最近はminitestが見直されているっぽいけど, rspecがまあ今のところまだ主流っぽい

– もっとちゃんと使いたいけどあまり使いこなせてないので多くは語りません

• cucumber-rails( cucumber/cucumber-rails)– Behaviorテスト gem– ちゃんと書くと良いです. seleniumなんかと組み合わせるとブラウザ使った自動テストも書けます.重いけど

• Guardなどなど

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

案件によっては使う,知ってると便利系 gems

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

もろもろ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ログインしたいと言われたらこれ– テスト環境を作るのが少し面倒になる(テストサーバ用のアプリ登録をする必要がある)ので注意

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

もろもろ2• Virtus( solnic/virtus)

– Rubyの classを拡張できる gem– attribute :name, String, default: “morimori”とかできます– form classを作るときなんかに使うと便利なことがあるかも( XXXでmorimori実装あり)

• ThinReports( http://www.thinreports.org/)– PDF帳票を簡単に作成できちゃう gem– 作ってるのは日本の株式会社マツケイというところ– かなり良くできているので,業務システムなどをやるのであれば,触ってみると良いです.GUIのエディタツールなんかもあります

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

Using gems

• Gemはいっぱい• バグもいっぱい• 使う時は流行ってる度合いをチェック!

• あと, latest committedの日付もチェック.メンテされていない場合,最悪自力で不具合対応する覚悟で使うこと

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

まとめ• こんなのあるよ!ってのがあればぜひ共有してください

• この gemは最近いけてないらしいぞ?という話も good

• こんな gem作ったがあると楽しいですね

• 社内ネットワークで気軽に流してください