7
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

EngraphiaAdvent Calendar 2016

Day 6

うちのRailsプロジェクトでよく使ってるgem(ライブラリ)を紹介します。

Last updated at Posted at 2016-12-12

紹介します。

Railsのコア部分とか。

gem 'rails'

WAFと呼ばれる何か。Rubyのキラーフレームワーク。

デフォルトのメッセージとかの多言語化は、gem 'rails-i18n' をどうぞ

gem 'mysql2'

DBつなぎにいくマン。
MySQL自体はOracleに買収されちゃったので、Postgresqlに戻ってもいい気がしてる。

gem 'unicorn'

本物のサーバーの上でRailsを動かすためのやつ。
unicornとかpumaとかpassengerとかthinとかありますねー。
今はどれがいいんだろう。

Model系のgem

gem 'default_value_for'

デフォルト値の設定用。
before_validationとかで入れればいいんだろうけど、これ使ったほうが宣言的なので好み。

gem 'enumerize'

RailsにEnumが入ったんだけどあちらは実データが数値。
こっちはStringなので、容量を気にしなければ、こちらはDB単体でReadableだと思う。

gem 'paperclip'

<input type="file" name="hogehoge" />
なフィールドを受け取って保存できるような感じで、ファイルをいい感じに扱ってくれる。
僕はつかったことがないけど、競合のcarrierwaveよりも設定が少なそうなイメージ。

gem 'sequenced'

連番ふってくれるマン…なのだが、挙動がイマイチ。
歯抜けを埋める、とかはやってくれない。(そんなことをするのは結構高コストなのであれなんだけど。)
でもまあ、createするときとかはまあちゃんと使えるイメージ。

gem 'tod'

Railsには、DateTimeもTimeもDateもあるのに、日付情報ナシの「時刻」そのものを表すクラスがない。
MySQLにはTime型あるのにね。
ってことで、Time of Dayを表すライブラリ。

JSとCSS

gem 'coffee-rails'

カッコ嫌いな人のためのインデント志向のAltJS。Rubyっぽく書けるっていうけど、好み分かれる。

gem 'haml-rails'

カッコ嫌いな人のためのインデントの志向HTMLテンプレートエンジン。
競合のslimは使ったことない。

gem 'sass-rails' と gem 'compass-rails'

カッコ嫌いな人のためのインデント志向のAlt-CSS的なやつ。
mixinとかextendとかを使いこなしたらすごそう。

compassはvendor-prefixとかを自動でつけてくれたりするsassライブラリ。(-webkit-とか)

gem "font-awesome-rails"

なんかいい感じのアイコンセット。ユーザーのマークとか、並び替えのマークとかいろいろ。
view helperも用意されてるのでさらに便利。

gem 'jquery-rails'

今どきDOMいじるなら必須!!

gem 'jquery-colorbox-rails'

グワーって出てくるカッコイイダイアログみたいなやつ。z-indexの調整に苦労する。

gem 'jquery-timepicker-rails'

日付とか、時間選ぶやつならコレ。date側とtime側、どっちも別々に使用できる。

gem 'momentjs-rails'

JSネイティブの時刻系クラスに罠があるので、みんなこういうの使ってます。

gem "select2-rails"

いい感じの見た目の、検索機能つきの<select>要素代替ライブラリ。
z-indexで困ることもあるけど、頑張るしか。

viewとか

gem 'active-admin'

いわゆる「管理画面」みたいなやつを、DSLで組めるやつ。
そのDSLがかなあーり厄介で、あんまりおすすめはしない。見た目のカスタマイズも難しい。

でも、とにもかくにも拙速を尊ぶときには、味方になってくれると思います。

gem 'breadcrumbs_on_rails'

ぱんくずリスト作るマン。

add_breadcrumb を呼んだ順にパン屑が構成される。
コントローラーのclassべた書きしてスタティックに決めるもよし、
before_actionか、actionに直接書くかで、ダイナミックに決めるもよし。
表示のカスタマイズは、カスタマイズ用クラスを自分で書かなきゃいけないので、ちょっと面倒。
kaminariみたいにテンプレート用意してくれたらいいのにね。

gem 'nested_form'

Railsのfields_forをちょっとだけ動的にしてくれるやつ。
has_manyな関係を同時に保存できるようになるので、割とおすすめ。
頑張ればtable化したformにも使える。

gem 'kaminari'

ページネーションをいい感じにしてくれるやつ。

なんかいろいろ便利なの

gem 'axlsx' / gem 'roo'

Excel書くマンと、Excel読むマン。
何故か別々である。
どちらも結構古くなってきちゃっていて、zip系ライブラリの互換性とかで悩むかもしれない…。

新しくgem 'rubyXL'っていうのもできたんだけど、読めるけど、開くとWarningが出るファイルができてしまったりして、まだ互換性に難がありそうだった。難しいものだ。

gem 'devise'

ユーザーのログイン認証やるやつ。
コントローラーからViewから、ほぼ全部面倒見てくれる。
その分、カスタマイズするときも情報をいろいろ調べなくて大変だけど、だいぶ知見たまったので何とかなってる。

エラーメッセージの日本語化する、gem 'devise-i18n' とかも一緒にどうぞ。

deviseとは直接関係ないけど、SNS認証なんかを追加する、

  • gem 'omniauth-github'
  • gem 'omniauth-google-oauth2'
  • gem 'omniauth-twitter'
  • gem 'omniauth-facebook'

あたりも、一緒に使うことがありますな。

gem 'ransack'

テーブル表示系の画面に検索フォームつけるのに便利なヤツ。
DBカラム名でのソートもできる。
検索フィールド名から、検索対象カラムを頑張って認識して検索してくれるヤツ。
:name_cont だったら、nameカラムがキーワードを含む、って意味になる。
クエリに関するカスタマイズ性もあるけど、あんまり頑張りすぎるぐらいなら自分でscope書いたほうがいい気も。

gem 'rubyzip'

zipで圧縮 / 展開するマン。
バッチやら、DLさせるときやら、zipファイルを扱うときに。

gem 'whenever'

CRONの記述をDSL風にかけるやつ。

テストツールとか

gem 'rspec-rails'

はい、rspecです。
「英語っぽくテスト書けば、テストが仕様書になるじゃん!って夢を追いつつ、現実問題、英語力のなさに打ちひしがれる」こと請け合い。
まあ、自動テストはちゃんと運用すれば、自分の書いたコードに自信ができるし、どんな実装したっけ~~みたいなのも思い出しやすくなる。
ちゃんと、運用すればなぁ…

spring併用なら、rspecもspringのキャッシュに乗せる gem 'spring-commands-rspec' も忘れずに。

gem 'factory_girl_rails'

テストデータをDSLで定義してくれるやつ。
associationを多く持つデータを正しく定義しようとすると、かなり難しい。
でもまあ、そういうパターンが必要な時はたいていModelが密結合しすぎ。

自動テストだけじゃなく、開発中のちょっとした検証にも、一発でそれっぽいレコード作成。
それっぽさを追求しすぎると、つらい。

gem 'timecop'

日付やら時間やらに関係するテストを書くときに、いつも困ってたんだけど、
Timecop.freezeで、指定の時間で時を止めたり(あくまでTime系クラスの返すメソッドの返り値を固定するだけだが)してくれるので、
とてもテストが書きやすくなります。

開発するときに便利なの。

gem 'awesome_print'

rails console で見た目をわかりやすくしてくれる。デバッグのお供に。
要はObject#inspectをオーバーライドしてくれてるんだと思う。

gem 'pry-rails'

rails consoleをirbからpryに変えるやつ。
pryはオブジェクトの「中」にはいって、メソッドを一覧したり、定義ファイルをlessしたりしてくれるので、デバッグのお供に。

gem 'pry-byebug'

binding.pryと書くと、そこからステップ実行できる。
サーバープロセス側にプロンプトが出るので、ローカル環境以外では使っちゃだめだよ。

gem 'letter_opener'

ActionMailerのメールを、その場でブラウザで開いてくれる。メール系機能のデバッグに。

ブラウザじゃなくて、専用管理画面で見せてくれる、gem 'letter_opener_web'も、状況に応じて使うといい。

gem 'quiet_assets'

デバッグの時に、assets/へのアクセスのログが出ると、欲しい情報がダーって流れて行っちゃって困るので、assets/へのログを黙らせるやつ。

Sprocket 3.1 から、設定項目で可能になったので、不要になりました。
(config.assets.quiet = true)

gem 'spring'

bin/* 系のコマンドとかを高速化するやつ。
クラスのロード状態をキャッシュするので、コードの変更に追従しきれずに予期せぬ挙動を見せることもあるけど、トレードオフと割り切って使っている。

gem 'haml_lint', require: false

名前の通り、HAMLのlint。コードチェッカー/フォーマッターはちゃんと運用するとストレスが減ります。

gem 'rubocop', require: false

Rubyのlint / オートフォーマッター。
-a の、オートフォーマットオプションが強力で、テキトーに書いたRubyコードをいい感じにフォーマットしてくれます。
ちゃんと運用するとストレスが減ります。

gem 'capistrano-rails'

デプロイツール。
サーバーが複数台構成でも、コマンド一発で全サーバーに向けて展開してくれる。
酒飲んだ状態でもデプロイできるってすごいよね。(決してマネしないでください)

以下、プラグイン

  • gem 'capistrano-rbenv'
  • gem 'capistrano-bundler'
  • gem 'capistrano3-unicorn'

capstrano-unicorn-nginxとかもあった気がするけど、結局手で設定書き換えてしまったりもするから、やめてしまった。

以上!

7
10
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
7
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?