Rails開発で便利なGemを選ぼう!

STEP11:Ruby on RailsのWebサービス開発で便利なGemを選ぼう! #Rails

Pocket
LINEで送る

今回は、今後、開発する上で、開発の効率が上がると思われるGemを選んでインストールしてみたいと思います。
Rubyでは、様々な便利ライブラリが、Gemというライブラリの配布用標準フォーマットで提供されています。
rubygems.orgで、たくさんのGemを検索することができます。

今回は、Railsプロジェクト作成時に、組み込んでおきたいGemを調べてインストールをしたいと思います。

1.デフォルトのGemを確認

前回の「STEP10:Railsプロジェクトを作成しよう!」で、Railsプロジェクトを作成した直後のGemfileは、下記の内容になります。
mysql2のバージョンを指定した以外は、デフォルトのままです。

source 'https://rubygems.org'

# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
gem 'rails', '4.2.4'
# Use mysql as the database for Active Record
gem 'mysql2', '~> 0.3.20'
# Use SCSS for stylesheets
gem 'sass-rails', '~> 5.0'
# Use Uglifier as compressor for JavaScript assets
gem 'uglifier', '>= 1.3.0'
# Use CoffeeScript for .coffee assets and views
gem 'coffee-rails', '~> 4.1.0'
# See https://github.com/rails/execjs#readme for more supported runtimes
# gem 'therubyracer', platforms: :ruby

# Use jquery as the JavaScript library
gem 'jquery-rails'
# Turbolinks makes following links in your web application faster. Read more: https://github.com/rails/turbolinks
gem 'turbolinks'
# Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder
gem 'jbuilder', '~> 2.0'
# bundle exec rake doc:rails generates the API under doc/api.
gem 'sdoc', '~> 0.4.0', group: :doc

# Use ActiveModel has_secure_password
# gem 'bcrypt', '~> 3.1.7'

# Use Unicorn as the app server
# gem 'unicorn'

# Use Capistrano for deployment
# gem 'capistrano-rails', group: :development

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

group :development do
  # Access an IRB console on exception pages or by using <%= console %> in views
  gem 'web-console', '~> 2.0'

  # Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring
  gem 'spring'
end

これに、今後、含めておくと便利だと思われるGemを、Gemfileに追記していきます。

まずは、デバッグ時に便利なGemを、含めていきます。

pry(読み方:プライ)

Rubyでは、標準で、「irb(アイ・アール・ビー)」というREPL環境(対話式評価環境)があります。
簡単にプログラムを実行できて、メソッドの挙動なんかを確認できるのですが、「pry」は、色付けをしてくれているので見やすかったり、Pryコンソール上で、シェルコマンド(例えば、lsとかpwd)を実行できるので、irbよりとても便利です。

gem 'pry'

pry-rails

「pry-rails」は、便利なPryを、Railsでも利用できるようになるGemです。

gem 'pry-rails'

pry-byebug(プライバイバグ)

「pry-byebug」は、デバック時にこのポイントで止めて変数の値を見てみたい!なんてことを実現してくれるツールです。
Gemfileには、下記を記載して、

gem 'pry-byebug'

実際のプログラムには、下記の一行を書くと、ブレークポイントとして処理を止めてくれてステップ実行が可能になります。

binding.pry

pry-stack_explorer

こちらは、スタックトレースを見れるようになるらしいです。
使い方は、まだよくわかっていませんが、取り敢えず、入れておきたいと思います。

gem 'pry-stack_explorer'

Rails Panel

こちらは、Chrome拡張のエクステンションの名前です。
これをインストールすると、Chromeデベロッパーツールに「Rails」というパネルが追加されます。
コントローラーから参照できる、paramsを表示してくれたり、発行したSQLと処理時間等を表示してくれます。
Railsには「meta_request」というgemを追加します。

gem 'meta_request'

ここからは、テストに関するGemを含めていきます。
今回のプロジェクトでは、テスティングフレームワークとして「Rspec」を利用したいので、下記をGemfileに追記します。
「factory_girl_rails」は、テストデータを作成してくれるGemです。

gem 'rspec-rails'
gem 'factory_girl_rails'

Capybara(カピバラ)は、ブラウザの動作をエミュレートして、JavaScript/Ajax関連部分をテストできるツールです。

gem "capybara"
gem "capybara-webkit"

その他に、便利そうなGemを含めていきます。

annotate

scheme情報を、modelに出力してくれるGemです。
モデル情報を見たい時に、マイグレーションファイルを見なくても良くなり、便利なGemみたいなので含めておきます。

gem 'annotate'

「bundle install」実行後に、下記を実行します。

$ bundle exec annotate

hirb

hirbは、「rails console」を利用する際に出力結果を見やすく表示してくれます。

gem "hirb"
gem "hirb-unicode"

viewのテンプレートエンジンには、erbではなく「Slim(スリム)」を利用します。

gem 'slim-rails'

と、ここまで、追加したいgemを追記しつつ、ワクワクしながら満を持して、「bundle install」します。

$ bundle install                                                                            Fetching gem metadata from https://rubygems.org/............
Fetching version metadata from https://rubygems.org/...
Fetching dependency metadata from https://rubygems.org/..
Resolving dependencies....
Bundler could not find compatible versions for gem "byebug":
  In snapshot (Gemfile.lock):
    byebug (= 6.0.2)

  In Gemfile:
    pry-byebug (>= 0) ruby depends on
      byebug (~> 1.1.1) ruby

    byebug (>= 0) ruby

Running `bundle update` will rebuild your snapshot from scratch, using only
the gems in your Gemfile, which may resolve the conflict.

うっぅ!ひるみつつも、メッセージにあるように「bundle update」を実行します。

$ bundle update                                                                             [~/tickle_dev/pgnyumon]
Fetching gem metadata from https://rubygems.org/............
Fetching version metadata from https://rubygems.org/...
Fetching dependency metadata from https://rubygems.org/..
Resolving dependencies.....................
・・・・・途中省略
Command 'qmake ' not available

extconf failed, exit code 1

Gem files will remain installed in
・・・・・途中省略
An error occurred while installing capybara-webkit (1.7.0), and Bundler cannot continue.
Make sure that `gem install capybara-webkit -v '1.7.0'` succeeds before bundling.

むむむ!!負けずに、メッセージの通りに、下記を実行。

$ gem install capybara-webkit -v '1.7.0'                                                    [~/tickle_dev/pgnyumon]
Fetching: capybara-webkit-1.7.0.gem (100%)
Building native extensions.  This could take a while...
ERROR:  Error installing capybara-webkit:
    ERROR: Failed to build gem native extension.

冷静になって、「Command ‘qmake ‘ not available」というエラーで、Google検索すると、「brew update」すれば宜し!という内容にヒットしたので、実行してみます。

$ brew update                                                                               [~/tickle_dev/pgnyumon]
Checking out files: 100% (2854/2854), done.
Error: uninitialized constant Formulary::HOMEBREW_CORE_FORMULA_REGEX
Please report this bug:
    https://git.io/brew-troubleshootin

やっぱり、だめだーーー!!
そして、再度、上記エラー「Error: uninitialized constant Formulary::HOMEBREW_CORE_FORMULA_REGEX」で、Google検索したところ、もう一度同じコマンド実行するとOKというので、素直に試します。

$ brew update

やりましたよー!無事に完了できました。
なので、今度は、qmakeをインストールします。

$ brew install qt4

完了できたので、今度こそ、「bundle install」します。

$ bundle install                                                                            [~/tickle_dev/pgnyumon]
Fetching gem metadata from https://rubygems.org/............
Fetching version metadata from https://rubygems.org/...
Fetching dependency metadata from https://rubygems.org/..
Resolving dependencies....
Bundler could not find compatible versions for gem "byebug":
  In snapshot (Gemfile.lock):
    byebug (= 6.0.2)

  In Gemfile:
    pry-byebug (>= 0) ruby depends on
      byebug (~> 1.1.1) ruby

    byebug (>= 0) ruby

Running `bundle update` will rebuild your snapshot from scratch, using only
the gems in your Gemfile, which may resolve the conflict.

おーまいが!!負けるもんか!!ひたすら素直に実行します。

$ bundle update

完了できました。
これでどうだ!とばかりに実行してやります。

$ bundle install

・・・無事にインストールできました(≧∇≦)

ふー、長い戦いでしたが、完了できて良かったです♪

最後に、今回のGemfileの全体を記載しておきます。

source 'https://rubygems.org'

gem 'rails', '4.2.4'
gem 'mysql2', '~> 0.3.20'
gem 'sass-rails', '~> 5.0'
gem 'uglifier', '>= 1.3.0'
gem 'coffee-rails', '~> 4.1.0'
gem 'jquery-rails'
gem 'turbolinks'
gem 'jbuilder', '~> 2.0'
gem 'sdoc', '~> 0.4.0', group: :doc
gem 'slim-rails'
gem 'annotate'

group :development, :test do
  gem 'byebug'
  gem 'pry'
  gem 'pry-rails'
  gem 'pry-byebug'
  gem 'pry-stack_explorer'
  gem 'meta_request'
  gem 'rspec-rails'
  gem 'factory_girl_rails'
  gem "capybara"
  gem "capybara-webkit"
end

group :development do
  gem "hirb"
  gem "hirb-unicode"
  gem 'web-console', '~> 2.0'
  gem 'spring'
end

まだ、他にも便利なGemはあると思いますが、ひとまず、今回はここまでにしたいと思います。

 

前回の記事は、「STEP10:Railsプロジェクトを作成しよう!」

Ruby on Railsおすすめ書籍

Ruby on Railsの勉強で参考になった書籍です!

Ruby on Railsで質問したい!

Teratail(テラテイル)

WEBエンジニア専用のQ&Aサイトで、RubyやRailsも質問することができます。活発に質問と回答がされていますので、会員登録をして利用してみると良いと思います(^o^)。

エンジニアのためのQ&Aサイト【teratail】

Ruby on Railsが学べるオンラインスクール

好きな場所で好きな時間に受講できるオンラインスクール!最近は、Ruby on Railsも学ぶことができます!

TechAcademy(テックアカデミー)

オンラインでの週2回マンツーマンでのメンタリング、毎日15〜23時のチャット・レビューサポートで短期間で未経験からオリジナルサービスを開発できるようになる学習プログラム。オリジナルサービスをHerokuを使って公開するところまでを行います。

オンラインブートキャンプ Webアプリケーションコース

Pocket
LINEで送る