Gemとは
Gemはパッケージまたはパッケージ管理ツールです。
パッケージは便利な機能がまとまったものです。
例えばログイン機能や画像アップロードなどを実装したい時にGem中にインストールすると
効率的に実装したい機能を導入することができます。
Gemをインストールするときは
$ bundle install
でインストールできます。
bundlerとは
Bundlerはgemを管理してくれるツールです。bundlerもgemの1種です。
いろいろなgemを管理してくれます。
Gemfileの中身
このファイルにgemを置いてインストールしていきます。
環境によって必要なGemも変わってきます。
ruby '2.7.1' #Rubyのバージョン ここでは2.7.1
#省略
group :development do #開発環境
#省略
end
group :test do #テスト環境
#省略
end
group :production do #本番環境
#省略
end
Gemの一覧を見るには
以下のコマンドをコマンドラインで実行すると見ることができます。
gem list
Gemの探し方
以下のコマンドでも探すことができます。
gem search <ライブラリ名>
例えばrubocopのGemを探すなら
% gem search rubocop
*** REMOTE GEMS ***
appbooster_rubocop_config (0.7)
armitage-rubocop (1.51.0.6)
#中略
みたいな感じで探すことができます。インストール済みのローカルのGemを探す場合はlをつけます。
% gem search -l <ライブラリ名>
このサイトで探すこともできるみたいです。
Gemを導入する時にはどんなものがあるか
正直多すぎて全部伝えることはできないです。よく使いそうなものだけ紹介していきます。
-
テスト環境
テストの効率向上や品質管理のためのものが多いです。
group :development, :test do
gem 'rspec-rails' #rspecのGem
gem 'factory_bot_rails' #factoryBotのgem
gem 'faker' #ダミーデータを生成するためのGem
gem 'capybara' #統合テストのためのGem
gem 'database_cleaner' #テストデータベースをクリーンにするためのGem
gem 'simplecov', require: false #コードのカバレッジを計測するためのGem
gem "pry-byebug" # デバックするためのGem(binding.pry)
gem "rubocop-rails" # Rubyコードのスタイルと品質を自動的に検査するためのGem
gem "rubocop-rspec" #RSpecのテストに対してコードのスタイルと品質を検査するためのもの
end
⚫︎補足
コードカバレッジとはテストがこれくらい終わったという割合のことです。
その他のGemも載せておきます。
group :development do
gem "annotate" #モデルやスキーマのファイルに注釈を追加
gem "rails-erd" #データベーススキーマを可視化するためのGem
end
gem "jwt" #JSON Web Token(JWT)を生成および検証するためのGem
gem "bcrypt" #パスワードのハッシュ化を行うためのGem
gem 'dotenv-rails' #環境変数を管理するためのGemで.envファイルから環境変数を読み込みアプリ内で使えるようにする
gem 'prawn' #PDFドキュメントを生成するためのGem
gem "paranoia" #論理削除(soft delete)を実現するためのGem。データベースレコードを物理的に削除せずに、削除済みとしてマーク
gem "device" #認証およびユーザー管理のためのGem
gem "devise_token_auth" #Deviseをベースにして、トークンベースのAPI認証を実装するためのGem
gem 'kaminari'#ページネーション
gem 'ransack' #検索機能
gem 'bullet' #N+1クエリや冗長なデータベースクエリを検出し、最適化のヒントを提供するGem
などがあります。有名なのもさればそうでないのもあります。
参考にしてみてください。
この記事に実務のソースコードがあります。そこで実際に実務でどんなGemが使われているか
見てみてください。
参考資料