プログラミングスクールのときは31つのGemを使っていましたが、3ヶ月前に働き出した会社のプロジェクトでは94つもありました。未だに分からないGemが多いため1つ1つ調べていくことにしました。
五月雨式で書いていくので、見づらいかと思いますがご了承ください。
94つのGem
- rails
Ruby on Rails自体がGem
- sass-rails
railsでsassが使えるようになる
【参考記事】[Sass + Railsの基礎]
(https://qiita.com/masarufuruya/items/d6125332cc3394b5177c)
- uglifier
UglifyJS2というJavaScriptのコード軽量化ライブラリを、Rubyで簡単に使えるようになる
- bootsnap
railsの起動時間を短縮してくれる
【参考記事】bootsnapについて調べてみた
- puma
スピードと並列性を追求したRubyのWebサーバー
【参考記事】[RackサーバーのPumaについて調べてみる]
(http://arakaji.hatenablog.com/entry/2015/08/03/200502)
- browserify-rails
Node.jsのモジュールシステムをブラウザでも利用できるようになる
- jquery-ui-rails
railsにjQuery-uiを使えるようになる
- mysql2
RubyからMySQLへ接続できるようにする
- byebug
プログラムを途中で止めることができる。そのままコンソールを使える。
【参考記事】[Ruby on Rails初心者必見。Railsでのデバッグの味方byebug(バイバグ)。]
(https://web-nari.net/2018/03/16/byebug/)
- rails-controller-testing
コントローラーにテストを書くことができる
- rubocop
コードスタイルを統一できる
【参考記事】[cookpadのスタイルガイド]
(https://github.com/cookpad/styleguide/blob/master/ruby.ja.md)
- slim_lint
「Slim template」のLintツール
【参考記事】[Slim-Lint を使ってみる]
(https://kasaharu.hatenablog.com/entry/20171125/1511568646)
- timecop
日付、時間のテストができるようになる
【参考記事】[RailsでTimecopを使って日付/時間のテストをする]
(https://ruby-rails.hatenadiary.com/entry/20141218/1418901424)
- guard
テストを自動化する
【参考記事】[Guardによるテストの自動化]
(https://railstutorial.jp/chapters/static-pages?version=4.0#sec-guard)
- minitest-ar-assertions/minitest-power_assert/minitest-stub_any_instance
minitestをより使いやすくするためのGem
【参考記事】[minitestのオススメ基本設定調べてみた]
(https://qiita.com/baban/items/88e18a784eaf39efb6e0)
- better_errors
エラー画面を見やすくしてくれる。変数の中身も表示してくれる
【参考記事】[Railsのデバッグが捗るエラー画面Better Errors使ってみた! ]
(https://morizyun.github.io/blog/better-error-gem-rails-ruby-rack/index.html)
- binding_of_caller
メソッド呼び出し元のbindingでevalすることができる。
(よく分からなかったので、今度しっかり調べる)
【参考記事】[【黒魔術】binding_of_caller gem でメソッド呼び出し元の binding を手に入れる]
(https://pocke.hatenablog.com/entry/2014/04/17/092227)
- bullet
繰り返しのある記述(N+1問題)を検出してくれる
- listen
ファイルの変更を検知してそれをフックに何か処理ができる
- rack-dev-mark
開発環境と本番環境でのご操作を防ぐ対策になる
【参考記事】[Rack_dev_markで開発環境と本番環境を視覚で判断しよう]
(https://konyu.hatenablog.com/entry/2014/11/12/225705)
- rack-mini-profiler
パフォーマンスをブラウザに表示する
【参考記事】[ページのロードにかかった時間が表示されます。]
(https://morizyun.github.io/ruby/library-rack-mini-profiler.html)
- spring
アプリケーションの動作を早くする
- spring-watcher-listen
springのファイルシステムの変更検知方法をpollingからlistenに変更してくれる
- devise-i18n-views
【参考記事】[i18n:deviseを日本語表記にする。]
(https://qiita.com/ryuuuuuuuuuu/items/48dec280cf8925968c65)
- easy_translate
google翻訳が使える
- i18n-debug
i18n で参照しているパスを調べてくれる
【参考記事】[i18n-debug の基本的な使い方]
(https://qiita.com/myt732/items/788f38fe0b5218b731b0)
- i18n-tasks
ロケールファイルで不足している翻訳や未使用の翻訳を検出してくれる
【参考記事】[i18n-tasks | Rails のロケールファイルを整理整頓する]
(https://qiita.com/fakestarbaby/items/d9ad517fe674059041cd)
- i18n_generators
日本語化を助ける
【参考記事】[i18n_generators で Rails アプリを日本語化]
(https://easyramble.com/i18n-with-i18n-generators.html)
- brakeman
開発中の静的セキュリティチェック
- bundler-audit
gemのセキュリティ情報のチェック
- html2slim
erbファイルをSlimに一括変換する
- license_finder
パッケージのライセンスを出力する
【参考記事】[プロジェクトで使用しているパッケージのライセンスを出力する]
(https://qiita.com/mtsuge/items/9e08ff2570effcf6d47c)
- rails_best_practices
railsアプリのコードの質をチェックするメトリクスツール
【参考記事】[Ruby on Railsのコードをよりモダンにするために、Rails Best Practices入門・おすすめ設定]
(https://blog-ja.sideci.com/entry/2015/04/16/175508)
- stackprof
プログラムが実行された際、どの部分のコードの実行にどれだけの時間がかかったのかを計測してくれる
【参考記事】[StackProfを使ってrubyプログラムのプロファイリングをする方法]
(https://qiita.com/shunsakai/items/28182914389a156199cd)
- swagger_ui_engine
Swagger-UIをMountable Engineとして使える。
(よく分からなかったので、今度しっかり調べる)
【参考記事】[Swagger+JSON SchemaでAPIの型をテストして開発サイクルをスピードアップさせた話]
(https://inside.pixiv.blog/edvakf/2473)
- daemons
rubyスクリプトをデーモン化し、外部からコントロール(start, stop等)できるようにする。
【参考記事】[BestGems Pickup! 第6回 ]
(https://www.xmisao.com/2013/09/28/bestgems-pickup-daemons.html)
- delayed_job/delayed_job_active_record
バックグラウンドで非同期処理をしてくれる
【参考記事】[delayed_jobの機能についてもうちょっと]
(https://qiita.com/nichenri1995/items/d66b055b09398483fa5b)
【参考記事】[RailsでAcitiveJobとDelayedJobを使ってバックグランド処理を行う]
(https://ruby-rails.hatenadiary.com/entry/20150304/1425396671)
- delayed_job_web
遅延ジョブを監視する
- letter_opener_web
送信メールがWebインタフェースで確認できる
【参考記事】[【Rails】letter_opener_webを利用してメールを確認する]
(http://miniichigo.hatenablog.com/entry/2016/05/26/211923)
- rails_db
GUIでDB内容が見れる
- activerecord-session_store
データベースにセッションを保管する
- devise
ログイン機能の実装を簡単にしてくれる
【参考記事】[【Rails】deviseを導入してみる]
(https://qiita.com/Hal_mai/items/350c400e8763ce0487a3)
- devise-encryptable
(よく分からなかったので、今度しっかり調べる)
【参考記事】[Rails4: 古いdeviseのパスワードを新しいdeviseで使う方法]
(https://techracho.bpsinc.jp/kazumasa-ogawa/2016_08_25/25078)
- pundit
認可まわりの機能を作成する
【参考記事】[Punditを使って権限を管理する]
(https://qiita.com/senou/items/e28ff548e93ad0eeed3f)
- grape/grape-entity/grape-swagger/grape-swagger-entity
Restful な WEB-API が簡単に作成できる
【参考記事】[Rails5でGrapeを使って簡単にAPIを実装する]
(ttps://qiita.com/hkusu/items/2ca0323cc276ab31e926)
- aasm
状態遷移の機能を簡単に付けることができる機能
【参考記事】[aasm を使って,Ruby のクラスに状態遷移の機能を付与する]
(https://www.kunihikokaneko.com/cc/ruby/rubyaasm.html)
- activerecord-import
まとめてINSERTできる。
【参考記事】[(初心者向け)activerecord-importの使い方]
(https://qiita.com/makicamel/items/b6d4f3d2661fc66103ed)
- activerecord-userstamp
ユーザがモデルに対して作成、更新、削除した情報を持たせることができる
- acts_as_list
モデルの並び順の維持や、並びの変更を行う
- by_star
日付分析関連の便利scope群
- draper
第4のレイヤを提供するGem
【参考記事】[Draperで驚くほどRailsコードがわかりや少なったよ!]
(https://morizyun.github.io/blog/draper-ruby-gem-code-clear/index.html)
- enum_help
enumをI18n化する
【参考記事】[【Rails】enumをI18n対応させるenum_helpが便利すぎた]
(https://kimuraysp.hatenablog.com/entry/2016/05/19/233144)
- paper_trail/paper_trail-association_tracking
監査、またはバージョン管理のためにモデルの変更を追跡するツール
- paranoia
論理削除を実装できる
- validates_timeliness
動く日付時刻用のvalidates
- cells/cells-rails/cells-slim
ビューの一部を切り離し、Rubyの通常のクラスとしてコンポーネント化する
【参考記事】[Railsコードを改善する7つの素敵なGem]
(https://techracho.bpsinc.jp/hachi8833/2017_10_25/47160)
- cocoon
1対多で関連するデータを1つのフォーム画面に記述できる
【参考記事】[nested_form はもう古い!? Cocoon で作る1対多のフォーム]
(https://qiita.com/Matsushin/items/4829e12da2834d6e386e)
- data-confirm-modal
削除確認ダイアログを出してくれる
[Data-Confirm Modalを使って Rails の削除確認ダイアログをいい感じにする]
(https://fiveteesixone.lackland.io/2015/02/06/rails-nice-delete-verification-modal/)
- font-awesome-rails
FontAwesomeのアイコンを使えるようになる
【参考記事】[Font Awesome Lcons]
(https://fontawesome.com/v4.7.0/icons/)
- icalendar
icalendarがrailsで使えるようになる
- kaminari
ページネーション機能が使える
railsチュートリアルで使われているgem「will_paginate」と同じような用途
【参考記事】[railsチュートリアル 9章]
(https://railstutorial.jp/chapters/updating_and_deleting_users?version=4.2#sec-pagination)
- ransack
検索機能
【参考記事】[Ransackのススメ]
(https://qiita.com/nysalor/items/9a95d91f2b97a08b96b0)
- redcarpet
マークダウンを実装できる
【参考記事】[Railsのプロジェクトにgem 'redcarpet' を用いてマークダウンエディタを導入してみた]
(https://qiita.com/yuuuking/items/3f88454e164a5f7d4733)
- simple_form
formの記述を簡単な形に、少なくできる
【参考記事】[Railsのform_for内のコードをすっきりさせるsimple_formの使い方]
(https://ruby-rails.hatenadiary.com/entry/20140730/1406700205)
- slim/slim-rails
HTMLのViewをSlim形式で書くことができる。コード量が少ない
【参考記事】[Slim入門をして書き方を練習をしました]
(https://qiita.com/pugiemonn/items/b64171952d958dc4d6be)
- config
開発環境ごとに定数を YAML ファイルで管理できる
【参考記事】[Railsで定数を環境ごとに管理するrails_config(現 config)]
(https://qiita.com/yumiyon/items/32c6afb5e2e5b7ff369e)
- dotenv-rails
カレントディレクトリに .env という名前で環境変数を書き込んでおくと、自動的にENVの中にその値を追加してくれる
【参考記事】[環境によって変わる設定値はdotenvを使うと便利]
(https://qiita.com/closer/items/f8d8ba00ae86d7051764)
- seedbank
seeds.rbを分割し、ファイルの肥大化を防いでくれる
- business_time
Dateに対していろいろなmethodが使えるようになる。
【参考記事】[[ruby] 祝日判断や休日判断をrubyでやるなら、これでいいんじゃないかな - メモ]
(https://qiita.com/ryoff/items/02b00ffc121037c25e16)
- geoip
特定のホストまたはIPアドレスを検索し、そのIPアドレスが割り当てられている国などの情報を返してくれる
- gon
controller内でセットした変数をJavascript内で使う事ができる。
- hashie
Hashをより良くしてくれる
【参考記事】[Hash をよりパワフルにする hashie gem を試す #ruby]
(https://qiita.com/tbpgr/items/be8c824f74f8587bdae2)
- responders
respond_withとrespond_toが使える
【参考記事】[respond_withとクラスレベルのrespond_toの扱いについて]
(https://railsguides.jp/4_2_release_notes.html#respond-with%E3%81%A8%E3%82%AF%E3%83%A9%E3%82%B9%E3%83%AC%E3%83%99%E3%83%AB%E3%81%AErespond-to%E3%81%AE%E6%89%B1%E3%81%84%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6)
- whenever
cronのバッチを作成して、定期的に回すことができる。
【参考記事】[Railsで定期的にバッチ回す「Whenever」]
(https://qiita.com/yumiyon/items/388fbb84450f49a6ab0d)
- aws-sdk-rails
s3に画像ファイルをフォームからアップロードできる
【参考記事】[railsのaws-sdk gemを使ってs3に画像ファイルをフォームからアップロードする]
(https://joppot.info/2014/06/13/1583)
- ridgepole
スキーマ管理用のコマンドラインツール
【参考記事】[Rails マイグレーションの廃止とRidgepoleの導入・利用方法]
(https://qiita.com/ayies128/items/c84db2ea41210eae0577)
- aws-sdk
利用可能なすべてのAWSサービスのgemサポートが含まれている。(S3やEC2など)
- rack-attack
同一IPからの過剰なアクセスを制限できる
- sentry-raven
エラーログ収集に使うツール
【参考記事】[RailsアプリケーションにSentryを導入する]
(https://qiita.com/mikaji/items/74fac3be5e1235e0b762)
- whiny_validation
Validation Errorをログ出力
- derailed_benchmarks
RailsアプリやRubyアプリのさまざまなベンチマークを取ることができる。
【参考記事】[Rails: 多機能ベンチマークgem「derailed_benchmarks」README(翻訳)]
(https://techracho.bpsinc.jp/hachi8833/2018_03_29/51875)
- memory_profiler
Railsアプリで文字列ががっつり重複を取り除いてくれる
【参考記事】[Rails: memory_profilerでRuby文字列の重複を削減する(翻訳)]
(https://techracho.bpsinc.jp/hachi8833/2019_02_07/62022)
#最後に一言
何か間違っている点があれば、教えて頂けたら幸いです。
よろしくお願い致します。