[備忘録］Rails6.0.0の標準Gemの概要について

#環境
Rails6.0.0

#puma
webサーバーの一つ。
しかし、webサーバーとしての機能はおまけで、Rackアプリケーションサーバーとしての使用がメイン。

参考
[Rails開発におけるwebサーバーとアプリケーションサーバーの違い（翻訳）](https://qiita.com/jnchito/items/3884f9a2ccc057f8f3a3)
[キツネの惑星 「Ruby on Railsとは？GemやBundler、Puma、Rackなどをまとめて解説」](https://kitsune.blog/rails-summary)

#sass-rails
RailsでSassを使用する為に必要。

#webpacker
WebpackをRailsで簡単に使用する事が出来るようになる。
WebpackはJavaScriptファイルやCSSファイルを一つにまとめるためのツール。

参考
[ICS MEDIA 「最新版で学ぶwebpack4入門 JavaScriptのモジュールバンドラ」](https://ics.media/entry/12140/)
[Rails & Webpackerを最大限活用するために知っておくべきことまとめ](https://qiita.com/ttiger55/items/e45ec0febba3a412507e)

#turbolinks
画面遷移を高速化させる事ができる。
しかし、Java]Scriptを使用する場合、Turbolinksに合わせたコードを書かなければ動かない場合がある。
また、Turbolinksで上手く遷移できるようにコードを書かなければ、逆に遅くなる場合がある。

参考
[GitHub Turbolinksを調べてみた](https://gist.github.com/saboyutaka/8727377)
[りょうたくの技術ブログ「『Turbolinks』って、なんぞ？」](https://www.ryotaku.com/entry/2019/01/15/213420)

#jbuilder
Jsonデータを簡単に作ることができる。

参考
[jbuilderの使い方](https://qiita.com/naoki_mochizuki/items/d929dc2dfbd49cf1ebf9)
[Railsのjbuilderの書き方と便利なイディオムやメソッド](https://qiita.com/ryouzi/items/06cb0d4aa7b6527b3645)

#bootsnap
Railsの起動時間を短縮することができる。

参考
[bootsnapについて調べてみた](https://qiita.com/Daniel_Nakano/items/aadeaa7ae4e227b73878)

#byebug
コードの中に「byebug」というメソッドを記述することで、記述した部分で実行が止まり、ステップ実行したり、その時点での変数の内容を確認したりできる。

[Webなり「Ruby on Rails初心者必見。Railsでのデバッグの味方byebug（バイバグ）。」](https://web-nari.net/2018/03/16/byebug/)
[1分でわかるbyebugの使い方](https://qiita.com/wawoon/items/a6f70b9f54f88d3e1412)

#web-console
ViewまたはControllerのコードに「console」というメソッドを記述することでブラウザ上でコンソールの操作ができるようになる。

参考
[日々雑記「Railsのweb-consoleについて」](https://y-yagi.tumblr.com/post/96428108880/rails%E3%81%AEweb-console%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6)
[web-console を使えば Rails App のデバックが楽になる](https://qiita.com/pekepek/items/74c8b1f4c886fc9b15cd)

#listen
ファイルの変更、追加、削除を検知し、何かしらの処理を行うことができるようになる。

参考
[GitHub「guard/listen: The Listen gem listens to file modifications and notifies you about the changes.」](https://github.com/guard/listen)
[listen gemで作成中のファイルが通知されないようにする](https://qiita.com/tkykmw/items/14e3f5d471a7c9e3af09)

#spring
バックグラウンドで事前にライブラリをあらかじめ読み込んでおくことで、railsコマンド実行時等に処理を早くさせることができる。
springを使ってコマンドを実行する場合は、「bin/コマンド名」としなければspringが実行されない場合がある。

参考
[EasyRamble「RailsでSpringを導入して開発効率を上げる」](https://easyramble.com/install-spring-into-rails.html)
[Rails Webook「Railsの開発効率をあげる - Springを使ってRailsのコンソールコマンドの実行を早くする」](https://ruby-rails.hatenadiary.com/entry/20141026/1414289421)

#spring-watcher-listen
springのファイルシステム検知方法をポーリング方式からlistenを使用した方法に変更する。
ポーリングとは、主となるシステムが他のシステムに対して一定間隔で順番に変更がないか確認する制御方式で、いつ起こるかわからないイベントを監視する際に用いられる。

参考
[GitHub「jonleighton/spring-watcher-listen」](https://github.com/jonleighton/spring-watcher-listen)
[ユークエスト「割り込みとポーリング」](https://www.uquest.co.jp/embedded/learning/lecture02.html)
[ポーリングとは](https://qiita.com/philip_runner/items/7ffd9347430830270519)

#capybara
webアプリケーションをテストする為のライブラリで、ユーザーの実際の操作をシミュレートできる。

参考
[GitHub「willnet/capybara-readme-ja: Capybara の README 和訳」](https://github.com/willnet/capybara-readme-ja)
[Capybaraチートシート](https://qiita.com/morrr/items/0e24251c049180218db4)

#selenium-webdriver
seleniumとwebdriverを統合したもので、webブラウザ上でwebアプリケーションをテストできる。

参考
[Selenium WebDriver入門](https://qiita.com/yulily@github/items/c3edbe25e84280c17776)

#webdrivers
webdriverの自動インストール、自動更新を行う。

参考
[GitHub「titusfortner/webdrivers: Keep your Selenium WebDrivers updated automatically」](https://github.com/titusfortner/webdrivers)
[サポートが終了したchromedriver-helperからwebdrivers gemに移行する手順](https://qiita.com/jnchito/items/f9c3be449fd164176efa)

#tzinfo-data
タイムゾーンが記載されたライブラリで、Windowsではタイムゾーンが記載されたファイルがない為、このgemが必要となる。

参考
[GitHub「tzinfo/tzinfo-data: TZInfo::Data - Timezone Data for TZInfo」](https://github.com/tzinfo/tzinfo-data)
[iPentec「MariaDB (MySQL) のタイムゾーン、タイムゾーンテーブルを設定する」](https://www.ipentec.com/document/mariadb-set-time-zone)