#4 今年お世話になったgemその1 KAYAC Advent Calendar 2013

こんにちは、@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 先輩です!

お楽しみに!!