LoginSignup
28
26

More than 3 years have passed since last update.

【Rails6】主なGemについて

Last updated at Posted at 2020-10-12

はじめに

 Railsを使うにあたり、当たり前のようにpumaとかwebpackerとかlistenを使用していますが、正直あまり意味がわからずに使っていました。ここいらで主なGemについてまとめたいと思います。

Railsデフォルトの主なGem

 下記がRails6で生成されるデフォルトGemです。

Gemfile
# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
gem 'rails', '~> 6.0.3'
# Use sqlite3 as the database for Active Record
gem 'sqlite3', '~> 1.4'
# Use Puma as the app server
gem 'puma', '~> 4.1'
# Use SCSS for stylesheets
gem 'sass-rails', '>= 6'
# Transpile app-like JavaScript. Read more: https://github.com/rails/webpacker
gem 'webpacker', '~> 4.0'
# Turbolinks makes navigating your web application faster. Read more: https://github.com/turbolinks/turbolinks
gem 'turbolinks', '~> 5'
# Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder
gem 'jbuilder', '~> 2.7'
# Use Redis adapter to run Action Cable in production
# gem 'redis', '~> 4.0'
# Use Active Model has_secure_password
# gem 'bcrypt', '~> 3.1.7'

# Use Active Storage variant
# gem 'image_processing', '~> 1.2'

# Reduces boot times through caching; required in config/boot.rb
gem 'bootsnap', '>= 1.4.2', require: false

group :development, :test do
  # Call 'byebug' anywhere in the code to stop execution and get a debugger console
  gem 'byebug', platforms: [:mri, :mingw, :x64_mingw]
end

group :development do
  # Access an interactive console on exception pages or by calling 'console' anywhere in the code.
  gem 'web-console', '>= 3.3.0'
  gem 'listen', '~> 3.2'
  # Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring
  gem 'spring'
  gem 'spring-watcher-listen', '~> 2.0.0'
end

group :test do
  # Adds support for Capybara system testing and selenium driver
  gem 'capybara', '>= 2.15'
  gem 'selenium-webdriver'
  # Easy installation and use of web drivers to run system tests with browsers
  gem 'webdrivers'
end

# Windows does not include zoneinfo files, so bundle the tzinfo-data gem
gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]

 それぞれ説明していきます。

sqlite3

 SQLデータベースエンジンを実装するC言語ライブラリ。
 パスワード設定がない等のセキュリティ機能がないため、基本的に開発環境、テスト環境で使用し、本番環境では別のデーターベースエンジンを使用する。

puma

 RubyWebアプリケーション用のHTTP1.1サーバー構築に使用する。スレッドプールを使用してリクエストを処理する。

https://puma.io/
https://github.com/puma/puma

sass-rails

 RailsでSass(SCSS)使用できる。

webpacker

 Webアプリケーションで一般的に良く使われるメジャーな設定を、標準で実装してくれるwebpackのラッパー。webpackは、最新のJavaScriptアプリケーション用の静的モジュールバンドラー1

【主な機能】
 ・webpack 4.x.x
 ・複数のエントリポイント2を使用した自動コード分割
 ・新しいJavaScript構文(ES6)をブラウザで動くように変換
 ・React、Vue.js、PostCSSなどのモダンなフレームワークに対する豊富な実績

Jbuilder

 Jbuilderは、JSON構造を宣言するためのシンプルなDSL(ドメイン特化言語)を提供。
https://github.com/rails/jbuilder

turbolinks

 Webアプリケーションでのリンクの追跡が高速になる。
https://github.com/turbolinks/turbolinks-classic

bootsnap

 railsの起動時の処理を最適化する(パスとrubyのコンパイル結果をキャッシュ)ことで起動時間を短縮してくれる。
 ActiveSupport や YAML もサポートしている。

byebug

 デバッグツール。

web-console

 View 内でコンソールを立ち上げて、変数や parameter などの状態を見る事の出来るデバック用のライブラリ。エラー箇所のデバッグがしやすくなる。

listen

 ファイルの変更を検知してそれをフックに何か処理ができる。

【主な機能】
・ファイルの変更、追加、削除を検出
・複数のディレクトリを監視

spring

 Railsアプリケーションのプリローダー3。アプリケーションをバックグラウンドで実行し続けることで開発をスピードアップするため、テスト、移行を実行するたびにアプリケーションを起動する必要がなくなる。

spring-watcher-listen

 Springはファイルシステムをポーリング4するのではなく、Listenを使用してファイルシステムの変更を監視します。

capybara

 実際のユーザーがアプリをどのように操作するかをシミュレートすることにより、Webアプリケーションのテストを支援する。

https://github.com/teamcapybara/capybara
https://en.wikipedia.org/wiki/Capybara_(software)

selenium-webdriver

 capybaraではJavaScriptをサポートしていないため、selenium-webdriverでシュミレートする。

webdrivers

  webブラウザを外部のソフトウェアから操作したり情報を取得したりできるようにするためのものです。

tzinfo-data

 Windows ではタイムゾーン情報用に使用する。UnixベースのOSではtzinfoからシステムのタイムゾーン情報に直接アクセスできるので使用する必要はない。

それ以外の主なGem

bcrypt

 パスワードを暗号化できる。

devise

 Webアプリケーションには必須の、ユーザー認証機能を作ることができる。会員登録用フォームを作成や、メールやFacebook等での認証も実装できる。

kaminari

 ページネーション機能を簡単に追加できる。

carrierwave

 画像のアップロード機能。

active admin

 CRUD系の管理画面を作成することができる。

ruboCop

 コーディング規約どおりに書かれているかをチェックする静的コード解析ツール。

pry-rails

 Rubyのirbのようにrailsのコンソールでメソッドなどを使えることができるようになる。

faker

 偽のデータを生成する。

capistrano

 自動デプロイツール。

まとめ

 Railsは歴史が長い分、Gemは数が多いですね。初学者だと選定が難しそうです。まずは開発前にどんな機能がどこまで必要なのかピックアップしてGemを選定する必要がありそうです。Gemを選定の参考になりそうなサイトを張っておきます。この記事も有用なGemがあればどんどん更新していこうと思います。
 Gemの探しツール
 Gemのランキングサイト


  1. モジュールごとに分割され、別々になったJavaScriptファイルの依存関係を解決して、1つのファイルにまとめるツール。 

  2. プログラムを実行を開始する場所のこと。(エントリーポイント - wiki

  3. サイトを表示する前に予め画像やコンテンツを先読みしてキャッシュする事。(参考→プリローダーとは

  4. 主に通信などの競合を回避するために、ホスト側が各機器に対して定期的に問い合わせを行い、条件を満たした場合に送受信や各種処理を行うこと。(ポーリング - wiki

28
26
1

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
28
26