LoginSignup
9
9

More than 5 years have passed since last update.

仕事のWebアプリで使っているおすすめGem for Rails5

Posted at

開発環境

  • Rails 5.0.0.1
  • Ruby 2.3

仕事でWebアプリケーションを作っている際に使ったGemで、特に気に入っている物をリストアップしました。それぞれRails5.0.0.1で動作確認済みです。

Rails Assets

https://rails-assets.org/
Gemではないけど、紹介です。

Gemfile
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が一番有名そうなので使いました(小並感

model
class Hoge
  # Viewで表示するときに使うメソッド
  def hogehoge_name
    "hogehoge#{name}"
  end

  def fugahuga_name
  def mogemoge_name
  ...
end

上記のようにレコードの内容をViewで表示する際にモデル側で処理したり、ViewHelperを使って処理していた部分を…

decorator
class HogeDecorator < Draper::Decorator
  delegate_all

  def hogehoge_name
    "hogehoge#{name}"
  end

  def fugahuga_name
  def mogemoge_name
  ...
end

このようにdecorator層に分離して、Viewで以下のようにdecorateされたメソッドを呼び出すことが出来ます。

view
hoge = Hoge.new
hoge.decorate.hogehoge_name

モデルに蓄積されつつあるメソッドを分離することでモデルの見通しが良くなって、女の子にモテます。もてたい(´・ω・`)

gretel

https://github.com/lassebunk/gretel
パンくずリストを作るGemです。
この手のものも幾つかありますが、gretelは他の物とは違い、コントローラーにロジックを書く必要が無く、このGemが提供する設定ファイルconfig/breadcrumbs.rbにロジックを全て記載して、Viewに呼び出す記述をするだけで済みます。結果としてパンくずリストのロジックが一カ所に集まるので、見通しが良くなります。

config/breadcrumbs.rb
crumb :root do
  link "Home", root_path
end

crumb :issues do
  link "All issues", issues_path
end

以上のようにDSLでロジックを書き…

app/views/layouts/application.html.erb
<%= breadcrumbs separator: " > " %>

レイアウトにパンくずリストをレンダリングします。そして、個別のビューでどのロジックを呼び出すかを指定します。

app/views/issues/show.html.erb
<% 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

9
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
9