LoginSignup
65
54

More than 3 years have passed since last update.

プロジェクトで使っている94つのGemを調べてみた

Last updated at Posted at 2019-05-06

スクリーンショット 2019-05-06 8.26.16.png

プログラミングスクールのときは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文字列の重複を削減する(翻訳)

最後に一言

何か間違っている点があれば、教えて頂けたら幸いです。
よろしくお願い致します。

65
54
7

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
65
54