2019-10-18に投稿

【Rails】エラーへの対処をgemで便利に

はじめに

実装したい機能がエラーによりなかなか実装できないときに、教えてもらっている先生が導入していたやり方。
以下の2つのgemを導入するとデフォルトのエラー画面が変わり、とても便利そうなのでやってみた。
開発初期にセッティングしてしまうとよさそうです。

  • better_errors(エラー画面がわかりやすくなる)
  • binding_of_caller(そのエラー画面にirbを表示)

参考

導入の手順

(1)gemを記述してインストールする

Gemfileの中のgroup :development do ~~ endの中に2行を追加する 。

Gemfile

group :development do
    ...
    ...
    gem 'better_errors'
    gem 'binding_of_caller'
end
  • 開発している時のみ使いたいので、group :developmentの中に記述する。

次に、ターミナルにて、bundle installを実行

$ bundle install

この時点でエラー画面が変わっていれば完了!
しかしこれだけだと自分の環境だとbetter_errorsの画面が出ず、デフォルトのエラー画面のままでした。

(2)ローカルホスト以外のIPを許可

どうやらこの時点ではインストールは完了しているが、デフォルトだとlocalhostからアクセスした場合しかbetter_errorsが有効にならないようです。
そこで、他の開発環境(自分の場合AWSのcloud9を使っています)からでも実行できるように、許可するIPを設定する必要があるようです。

config/emvironments/development.rb

Rails.application.configure do
    ...
    ...
end

BetterErrors::Middleware.allow_ip! "0.0.0.0/0"    #この一行を追加
  • 「0.0.0.0/0」を指定するとすべてのIPが許可される。
  • endの外に書く。(?)

これで自分の環境ではうまくいき、エラーが出た際にエラー画面が変わるようになりました。

おわりに

better_errorsと同時にbinding_of_callerを入れることで、
irb(コンソール)を操作して変数の値などが確認できるのでデバッグ効率が上がりそうです。

>> p hoge
=> (変数hogeの中身が表示)

以上。なかなか今、ビューからコントローラーにパラメータを思い通りに渡すことができず苦戦中です。惜しいみたいなんだけど。

Originally published at massasquash.qrunch.io

Massa

北海道の畑作専業農家・WEBエンジニア修行中の30代。「自然の中で感じたことをカタチにする」をモットーに、農業とITを掛け合わせた仕事に携わりたいなあと思ってます。農業の効率化と発展を目指して。のんびり畑を耕したいw ■Ruby/Rails ■Capoeiraがライフワーク ◇noteでブログ書いてます

Crieitは個人で開発中です。 興味がある方は是非記事の投稿をお願いします! どんな軽い内容でも嬉しいです。
なぜCrieitを作ろうと思ったか

また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!

こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください!

ボードとは?

コメント