こんにちは、@Konboi です!
このエントリーはtech.kayac.com Advent Calendar 2013の4日目のエントリーです。
今日のエントリーでは今年1年間、クライアントワークのプロジェクトでお世話になったgem10選の紹介とそれらの簡単なtipsを、 自分と明日担当の@hilotterの2人で2回に分けて紹介したいと思います!
( カヤックはPerlの会社として知られていますが、クライアントワーク事業部ではRailsを使用したプロジェクトも数多くあります!)
それでは、早速いってみましょう!
carrierwave
まず1つ目に紹介するのは、ファイルアップローダの決定版 carrierwaveです。
carrierwaveは下記のように設定をしておけば画像のアップロード時に s,m,l のサイズをまとめて生成してくれます!
呼び出す側では、 .url.(:s)
, .current_path.(:m)
このように画像のURL,パスを簡単に呼び出せます。
version :s do process :resize_to_fill => [34, 34] end version :m do process :resize_to_fill => [120, 120] end version :l do process :resize_to_fill => [150, 150] end
実際のプロジェクトで使う場合は fog という Amazon S3 と簡単に連携することができる gemと掛け合わせることが多く、config/initializer/carrierwave.rb
にこのように記述をすることで、
本番環境では、S3に画像をアップロードし、本番環境以外ではローカルに画像を保存することが出来ます!
if Rails.env.production? CarrierWave.configure do |config| config.storage = :fog config.fog_credentials = { :provider => 'AWS', :aws_access_key_id => access_key_id, :aws_secret_access_key => secet_access_key, :region => reigon, } config.fog_directory = directory, config.asset_host = host end else CarrierWave.configure do |config| config.storage = :file config.asset_host = Settings.host end end
是非、活用してみてください!
devise
2つ目は、認証機能を手軽に作ることのできるgem deviseです。 ログイン機能だったり、管理画面の認証だったりと 認証機能を作るのは非常に面倒です。
しかし、deviseを使うことで、簡単にログイン機能を作ることができます。
詳細な使い方はここに書くには長いので、別途自分のブログをご覧いただければと思います!
devise と cancan を使って権限管理可能な管理画面を作る。 (1)
devise と cancan を使って権限管理可能な管理画面を作る。 (2)
deviseでログインにemailではなくusernameを使用する
kaminari
3つ目は、Rubyのページャーライブラリといったらこれ!!
kaminariです。
ドキュメントに沿って設定すると、簡単にModelのpagerを設定することができます。
しかし、kaminariの便利なところはそれだけではありません。
あまり知られていないかもしれませんが、 kaminariを使って配列に対してのページャーを作成する でも書いたように、 kaminariは配列に対してもページャーを作ることができます。
Kaminari.paginate_array(array).page(page).per(per_limit)
こんな感じで、配列のページャーもサクッと書けちゃいます。
ページャーを実装しないといけないことがあったら是非使ってみてください。
koala
次はfacebook用のgem koala です。
クライアントワークでは、facebookを使用した案件が数多くあります。
そこで、活躍するのがkoalaです。
koala は facebookのOAuth認証機能部分からユーザー情報の取得、発言はもちろんのこと、
koalaが用意している put_object
メソッドを使うことで facebook api で提供しているものなら、ほとんどこのkoalaから扱うことができます。
例) facebookへアップロードした写真へのタグ付けのサンプル
facebookやtwitterのログイン機能を作る場合は、omnioauth を使うことも少なくありませんが、ログイン後に色々とするなら koala も是非オススメです。
whenever
本日、最後に紹介するのは cron の記述を Rubyで簡潔に記述することができる gem whenever です。
crontab を編集する時に、特定の曜日だけ動かすのってどう書くんだっけ、 毎時15分と30分だけ設定はどうするんだっけと、なる人は自分だけじゃないはず…
wheneverはそんな人のためのgemです。
bundle exec wheneverize
と打つと config/schedule.rb が生成されます。
# 毎週月曜日、午前9時に実行させる every :mondey, :at => '9am' do set :output, {:standard => 'log/cron.log', :error => 'log/cron_error.log'} command "/usr/bin/some_great_command" end
このように記述し、
bundle exec whenever --update-cron
とすることで crontab に任意の処理を記述してくれます!
これで、面倒なcrontabの設定が楽にできます!
まとめ
以上、本日は今年お世話になったgem 5つを紹介いたしました。 振り返ってみると、王道のgemばかりになってしまったかなと思いますが、 少しでも多くの人の参考になってくれれば幸いです。
本日紹介したgemを活用して作られた、 悩みに対して音楽で回答するサービス - オンガクスリ も作業用BGMがてらに使ってみてください!
明日は、クライアントワーク事業部 技術部のエース @hilotter 先輩です!
お楽しみに!!