プログラミングスクールのときは31つのGemを使っていましたが、3ヶ月前に働き出した会社のプロジェクトでは94つもありました。未だに分からないGemが多いため1つ1つ調べていくことにしました。
五月雨式で書いていくので、見づらいかと思いますがご了承ください。
94つのGem
- rails
Ruby on Rails自体がGem
- sass-rails
railsでsassが使えるようになる
【参考記事】Sass + Railsの基礎
- uglifier
UglifyJS2というJavaScriptのコード軽量化ライブラリを、Rubyで簡単に使えるようになる
- bootsnap
railsの起動時間を短縮してくれる
【参考記事】bootsnapについて調べてみた
- puma
スピードと並列性を追求したRubyのWebサーバー
【参考記事】RackサーバーのPumaについて調べてみる
- browserify-rails
Node.jsのモジュールシステムをブラウザでも利用できるようになる
- jquery-ui-rails
railsにjQuery-uiを使えるようになる
- mysql2
RubyからMySQLへ接続できるようにする
- byebug
プログラムを途中で止めることができる。そのままコンソールを使える。
【参考記事】Ruby on Rails初心者必見。Railsでのデバッグの味方byebug(バイバグ)。
- rails-controller-testing
コントローラーにテストを書くことができる
- rubocop
コードスタイルを統一できる
【参考記事】cookpadのスタイルガイド
- slim_lint
「Slim template」のLintツール
【参考記事】Slim-Lint を使ってみる
- timecop
日付、時間のテストができるようになる
【参考記事】RailsでTimecopを使って日付/時間のテストをする
- guard
テストを自動化する
【参考記事】Guardによるテストの自動化
- minitest-ar-assertions/minitest-power_assert/minitest-stub_any_instance
minitestをより使いやすくするためのGem
【参考記事】minitestのオススメ基本設定調べてみた
- better_errors
エラー画面を見やすくしてくれる。変数の中身も表示してくれる
【参考記事】Railsのデバッグが捗るエラー画面Better Errors使ってみた!
- binding_of_caller
メソッド呼び出し元のbindingでevalすることができる。
(よく分からなかったので、今度しっかり調べる)
【参考記事】【黒魔術】binding_of_caller gem でメソッド呼び出し元の binding を手に入れる
- bullet
繰り返しのある記述(N+1問題)を検出してくれる
- listen
ファイルの変更を検知してそれをフックに何か処理ができる
- rack-dev-mark
開発環境と本番環境でのご操作を防ぐ対策になる
【参考記事】Rack_dev_markで開発環境と本番環境を視覚で判断しよう
- rack-mini-profiler
パフォーマンスをブラウザに表示する
【参考記事】ページのロードにかかった時間が表示されます。
- spring
アプリケーションの動作を早くする
- spring-watcher-listen
springのファイルシステムの変更検知方法をpollingからlistenに変更してくれる
- devise-i18n-views
【参考記事】i18n:deviseを日本語表記にする。
- easy_translate
google翻訳が使える
- i18n-debug
i18n で参照しているパスを調べてくれる
【参考記事】i18n-debug の基本的な使い方
- i18n-tasks
ロケールファイルで不足している翻訳や未使用の翻訳を検出してくれる
【参考記事】i18n-tasks | Rails のロケールファイルを整理整頓する
- i18n_generators
日本語化を助ける
【参考記事】i18n_generators で Rails アプリを日本語化
- brakeman
開発中の静的セキュリティチェック
- bundler-audit
gemのセキュリティ情報のチェック
- html2slim
erbファイルをSlimに一括変換する
- license_finder
パッケージのライセンスを出力する
【参考記事】プロジェクトで使用しているパッケージのライセンスを出力する
- rails_best_practices
railsアプリのコードの質をチェックするメトリクスツール
【参考記事】Ruby on Railsのコードをよりモダンにするために、Rails Best Practices入門・おすすめ設定
- stackprof
プログラムが実行された際、どの部分のコードの実行にどれだけの時間がかかったのかを計測してくれる
【参考記事】StackProfを使ってrubyプログラムのプロファイリングをする方法
- swagger_ui_engine
Swagger-UIをMountable Engineとして使える。
(よく分からなかったので、今度しっかり調べる)
【参考記事】Swagger+JSON SchemaでAPIの型をテストして開発サイクルをスピードアップさせた話
- daemons
rubyスクリプトをデーモン化し、外部からコントロール(start, stop等)できるようにする。
【参考記事】BestGems Pickup! 第6回
- delayed_job/delayed_job_active_record
バックグラウンドで非同期処理をしてくれる
【参考記事】delayed_jobの機能についてもうちょっと
【参考記事】RailsでAcitiveJobとDelayedJobを使ってバックグランド処理を行う
- delayed_job_web
遅延ジョブを監視する
- letter_opener_web
送信メールがWebインタフェースで確認できる
【参考記事】【Rails】letter_opener_webを利用してメールを確認する
- rails_db
GUIでDB内容が見れる
- activerecord-session_store
データベースにセッションを保管する
- devise
ログイン機能の実装を簡単にしてくれる
【参考記事】【Rails】deviseを導入してみる
- devise-encryptable
(よく分からなかったので、今度しっかり調べる)
【参考記事】Rails4: 古いdeviseのパスワードを新しいdeviseで使う方法
- pundit
認可まわりの機能を作成する
【参考記事】Punditを使って権限を管理する
- grape/grape-entity/grape-swagger/grape-swagger-entity
Restful な WEB-API が簡単に作成できる
【参考記事】Rails5でGrapeを使って簡単にAPIを実装する
- aasm
状態遷移の機能を簡単に付けることができる機能
【参考記事】aasm を使って,Ruby のクラスに状態遷移の機能を付与する
- activerecord-import
まとめてINSERTできる。
【参考記事】(初心者向け)activerecord-importの使い方
- activerecord-userstamp
ユーザがモデルに対して作成、更新、削除した情報を持たせることができる
- acts_as_list
モデルの並び順の維持や、並びの変更を行う
- by_star
日付分析関連の便利scope群
- draper
第4のレイヤを提供するGem
【参考記事】Draperで驚くほどRailsコードがわかりや少なったよ!
- enum_help
enumをI18n化する
【参考記事】【Rails】enumをI18n対応させるenum_helpが便利すぎた
- paper_trail/paper_trail-association_tracking
監査、またはバージョン管理のためにモデルの変更を追跡するツール
- paranoia
論理削除を実装できる
- validates_timeliness
動く日付時刻用のvalidates
- cells/cells-rails/cells-slim
ビューの一部を切り離し、Rubyの通常のクラスとしてコンポーネント化する
【参考記事】Railsコードを改善する7つの素敵なGem
- cocoon
1対多で関連するデータを1つのフォーム画面に記述できる
【参考記事】nested_form はもう古い!? Cocoon で作る1対多のフォーム
- data-confirm-modal
削除確認ダイアログを出してくれる
Data-Confirm Modalを使って Rails の削除確認ダイアログをいい感じにする
- font-awesome-rails
FontAwesomeのアイコンを使えるようになる
【参考記事】Font Awesome Lcons
- icalendar
icalendarがrailsで使えるようになる
- kaminari
ページネーション機能が使える
railsチュートリアルで使われているgem「will_paginate」と同じような用途
【参考記事】railsチュートリアル 9章
- ransack
検索機能
【参考記事】Ransackのススメ
- redcarpet
マークダウンを実装できる
【参考記事】Railsのプロジェクトにgem 'redcarpet' を用いてマークダウンエディタを導入してみた
- simple_form
formの記述を簡単な形に、少なくできる
【参考記事】Railsのform_for内のコードをすっきりさせるsimple_formの使い方
- slim/slim-rails
HTMLのViewをSlim形式で書くことができる。コード量が少ない
【参考記事】Slim入門をして書き方を練習をしました
- config
開発環境ごとに定数を YAML ファイルで管理できる
【参考記事】Railsで定数を環境ごとに管理するrails_config(現 config)
- dotenv-rails
カレントディレクトリに .env という名前で環境変数を書き込んでおくと、自動的にENVの中にその値を追加してくれる
【参考記事】環境によって変わる設定値はdotenvを使うと便利
- seedbank
seeds.rbを分割し、ファイルの肥大化を防いでくれる
- business_time
Dateに対していろいろなmethodが使えるようになる。
【参考記事】[ruby] 祝日判断や休日判断をrubyでやるなら、これでいいんじゃないかな - メモ
- geoip
特定のホストまたはIPアドレスを検索し、そのIPアドレスが割り当てられている国などの情報を返してくれる
- gon
controller内でセットした変数をJavascript内で使う事ができる。
- hashie
Hashをより良くしてくれる
【参考記事】Hash をよりパワフルにする hashie gem を試す #ruby
- responders
respond_withとrespond_toが使える
【参考記事】respond_withとクラスレベルのrespond_toの扱いについて
- whenever
cronのバッチを作成して、定期的に回すことができる。
【参考記事】Railsで定期的にバッチ回す「Whenever」
- aws-sdk-rails
s3に画像ファイルをフォームからアップロードできる
【参考記事】railsのaws-sdk gemを使ってs3に画像ファイルをフォームからアップロードする
- ridgepole
スキーマ管理用のコマンドラインツール
【参考記事】Rails マイグレーションの廃止とRidgepoleの導入・利用方法
- aws-sdk
利用可能なすべてのAWSサービスのgemサポートが含まれている。(S3やEC2など)
- rack-attack
同一IPからの過剰なアクセスを制限できる
- sentry-raven
エラーログ収集に使うツール
【参考記事】RailsアプリケーションにSentryを導入する
- whiny_validation
Validation Errorをログ出力
- derailed_benchmarks
RailsアプリやRubyアプリのさまざまなベンチマークを取ることができる。
【参考記事】Rails: 多機能ベンチマークgem「derailed_benchmarks」README(翻訳)
- memory_profiler
Railsアプリで文字列ががっつり重複を取り除いてくれる
【参考記事】Rails: memory_profilerでRuby文字列の重複を削減する(翻訳)
最後に一言
何か間違っている点があれば、教えて頂けたら幸いです。
よろしくお願い致します。