開発環境
- Rails 5.0.0.1
- Ruby 2.3
仕事でWebアプリケーションを作っている際に使ったGemで、特に気に入っている物をリストアップしました。それぞれRails5.0.0.1で動作確認済みです。
Rails Assets
https://rails-assets.org/
Gemではないけど、紹介です。
source 'https://rails-assets.org' do
gem 'rails-assets-hogehoge'
end
と書くことで、bowerで管理しているパッケージをgemにラップしたものをbundlerで簡単にインストールできます。通常のgem同様にバージョン指定も出来るので、railsで使うjsライブラリを管理する際に非常に便利です。
とはいえ今時のフロントにはReactなどのJSフレームワークを使うことが多いので、npmで管理した方がよりナウい感じがしますね(
draper
https://github.com/drapergem/draper
decoraterを提供してくれるGem。この手のやつは幾つかありますが、draperが一番有名そうなので使いました(小並感
class Hoge
# Viewで表示するときに使うメソッド
def hogehoge_name
"hogehoge#{name}"
end
def fugahuga_name
def mogemoge_name
...
end
上記のようにレコードの内容をViewで表示する際にモデル側で処理したり、ViewHelperを使って処理していた部分を…
class HogeDecorator < Draper::Decorator
delegate_all
def hogehoge_name
"hogehoge#{name}"
end
def fugahuga_name
def mogemoge_name
...
end
このようにdecorator層に分離して、Viewで以下のようにdecorateされたメソッドを呼び出すことが出来ます。
hoge = Hoge.new
hoge.decorate.hogehoge_name
モデルに蓄積されつつあるメソッドを分離することでモデルの見通しが良くなって、女の子にモテます。もてたい(´・ω・`)
gretel
https://github.com/lassebunk/gretel
パンくずリストを作るGemです。
この手のものも幾つかありますが、gretelは他の物とは違い、コントローラーにロジックを書く必要が無く、このGemが提供する設定ファイルconfig/breadcrumbs.rbにロジックを全て記載して、Viewに呼び出す記述をするだけで済みます。結果としてパンくずリストのロジックが一カ所に集まるので、見通しが良くなります。
crumb :root do
link "Home", root_path
end
crumb :issues do
link "All issues", issues_path
end
以上のようにDSLでロジックを書き…
<%= breadcrumbs separator: " > " %>
レイアウトにパンくずリストをレンダリングします。そして、個別のビューでどのロジックを呼び出すかを指定します。
<% breadcrumb :issues %>
# => Home > All issues と表示される
doorkeeper
https://github.com/doorkeeper-gem/doorkeeper
OAuth2による認証機能を追加し、Facebookログインのようにproviderアプリとして使ったり、外部にAPIをOAuth2で認証したアプリにのみ提供できたりします。ちょっとニッチですが、メインのアプリがサービスの母艦のようになってきたときに使えるGemです。
使い方はこちらから(ダイレクトマーケティング
DoorkeeperとDeviseでOAuth2によるログイン機能を作る
http://qiita.com/kyonsuke19101/items/407f3cdfec38d1108e9d
ransack
https://github.com/activerecord-hackery/ransack
レコードを検索するときに、書きやすい形で検索機能を提供してくれるGem。ある程度複雑な検索でも対応できて便利。レコード数がやばいことになるまではお世話になります。ありがとうございます。
くわしくはこちらから
http://qiita.com/LuckOfWise/items/e020e896e71d47d0c6a4
http://qiita.com/nysalor/items/9a95d91f2b97a08b96b0
gon
https://github.com/gazay/gon
railsからjsに簡単にデータを渡せるGem。いぶし銀の働きを見せます。
layoutのhead(もしくはjavascriptを読み込む直前)に<%= Gon::Base.render_data({}) %>
を書いておいて準備完了。
controllerでgon.hogehoge = 'しゅごい!'
と書いて、jsでgon.hogehoge
で読み込めます。
さらに、レコードを渡すと、勝手に.to_json
してくれるらしく、例えばnameフィールドを持つUserモデルがあったとすると、gon.user = User.first
で渡すと、js側でgon.user.name
でnameフィールドの要素にアクセスできます。らくちん。
js.erbでRailsから変数を渡してもいいですが、こういう方法も。
enumerize
https://github.com/brainspec/enumerize
enum(列挙型)を実現できるようになるGemです。Rails4.1からデフォルトでenumを設定できるようになってますが、デフォルトのenumは正直使いづらいので、こちらの方がオススメです。
デフォルトのenumはFromから入力を受け付けることを余り考慮されてなく、Fromで楽に扱うためにはenum_helpというGemを使ったりしないと大変なので、最初からenumerizeを使った方が楽な印象です。
おわりに
ブログでは技術Tips以外の記事も定期的にポストしています。
もしよかったらブログもどうぞ╭( ・ㅂ・)و
https://hackalive.net