【デイトラDAY16】Railsのgemについての復習

今回は便利なgemのインストール方法やGemfileの見方について学びがあったのでまとめておこうと思います。



これまでの講義ではERBでコーディングしていたり、デバッグしづらい状況でした。


なのでもう少し実際の開発環境に合わせるように、様々なgemを導入しました。


今回使ったgem
  1. prybug 〜バグの原因を見つけやすくする〜
  2. haml 〜ERBよりも時短できるコーディング記法〜
  3. annotate 〜データベースのスキーマをモデルに記載〜
  4. rubocop 〜文法チェックツール〜

今回はこのgemがどういうものかという説明は省きます。
さて本題はここからです。


gemのインストール〜実行までの流れ

今回の講義よりも前にgemをインストールしてたはずが、全て忘れていたのでここでまとめておこうと思います。

Gemfileにgem’XXXXX’を記入

ほとんどのgemのインストール方法やカスタマイズ方法は、github上で閲覧することができますので、正直覚える必要はないです。
https://github.com/rubocop-hq/rubocop


まずはGemfileにインストールしたいgemを記載します。


例えば、「rubocop」ならこんな感じで書きます。

gem 'rubocop-rails'



ちなみにGemfileの中でも書くべき場所が決まっているようですね。



例えば、「group:development,text:do」があったり、「group :development do」があったり。

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]
  gem 'pry-byebug'
  gem 'rubocop-rails'
end


とか

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

これらの違いは良い記事があったので、そちらを見てもらうとしよう。


使用するgemをテスト環境で使うのか、本番環境で使うのかによって、各場所を変えるようです。

Bundlerでgemを実用的に扱うためのまとめ – Qiita

特にrails開発においては、bundlerを扱うための処理が予め記述されているため、bundlerについて意識しなくてもrails pluginの導入を速やかにできるようになっている。 bundlerについて基礎から学びしなおしつつ、bundlerを使った実用的なGemの運用について考えます。 Gemfileに記述されたgemを一括でインストールする …



ターミナルでインストール実行

Gemfileに「gem’XXXX’」を書けたら、次にターミナルでインストールを実行する。

bundle install 



ちなみにbundleというのは、Bundlerというgemを使ってインストールするという意味です。


bundlerを使うと何が良いのかというと、開発環境の違いを考える必要がないということです。


例えば、AさんとBさんが共同開発しているとしましょう。
ちなみにそれぞれの開発環境は若干違うとします。

Aさん:「なんかこのgem動かないんだけど!どうなってんだよ!は?」
Bさん:「知らねえよ。俺の環境では動いてるけど?」


という風に環境の違いでgemが動かない場合が考えられます。



これを防ぐために、BundlerはAさんとBさんが使う環境に合ったgemがどれかを判断してインストールしてくれます。


これを「グローバルにインストール」すると言うみたいです。
つまりプロジェクト毎にgemをインストールしていると言う意味です。



例えば、ユーザーのディレクトリの下に「blogapp」と言うディレクトリ(=プロジェクト)を作ったとします。



このblogapp限定でgemをインストールしたい場合はグローバルにインストールするのが良いです。



逆にユーザーのディレクトリにインストールするのを「ローカルにインストール」すると言います。


今回は、gemをグローバルにインストールしました。


ちなみにbundlerはrailsと同時にインストールされるみたいです。


gemの実行

gemをインストールできたら、ターミナルでgemを実行します。

例えば、rubocopの場合はこんな感じで実行できます。

bundle exec rubocop -a


大事なのは、「bundle exec」という表記。


これがただの「rubocop -a」とすれば実行できないはず。
(僕の場合は「rubocopって何?」と怒られました。


グローバルにインストールした場合、「bundle exec」を付けて実行しなければいけません。


じゃあ「bundle exec rails -s」ってしねえんだよ!と怒る方は下記記事を参照して怒りを沈めてください。

https://qiita.com/d0ne1s/items/fa2dafcee02e963fe997




まとめ

最後にgemのインストールから実行までの流れをまとめて終わりにします。

gemのインストール〜実行までの流れ
  1. Gemfileに「gem’XXXX’」を記載
  2. ターミナルでgemをインストール
    →$bundle install
  3. gemをターミナルで実行
    →$bundle exec XXXX


但し、上の流れは絶対ではないので、必ず使用するgemの説明書(githubなど)を読まないといけません。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です