紹介します。
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とかもあった気がするけど、結局手で設定書き換えてしまったりもするから、やめてしまった。
以上!