Railsチュートリアル Ruby on Rails

【未解決】Railsチュートリアル5.3.1の rails test でエラーが発生した時にやってみたこと

現在、Railsチュートリアルを進めています。

5章の「5.3.1 Contactページ」からエラーが発生するようになってしましました。

その時に行った対処法を記録しておきます。

ただし本記事に行った事をやっても結果的に解決しませんでした。

というわけで参考程度に。


ローカル環境を構築してRailsチュートリアルを進めたらエラーが発生

おそらく環境的なことが理由だと思います。

本エラーが発生した時、私はローカル環境を構築してチュートリアルを進めてました。

自分で、Windows10パソコンにRubyインストールして、Ruby on Rails インストールして、という感じ。

Railsチュートリアルでも環境面の複雑さを避けるために、AWS Cloud9の使用を推奨しています。

それに背いて頑張ってローカル環境を構築した結果です…

 

 

ちなみに、本エラーが発生し結局原因がわからず。

その後、改めて「AWS Cloud9 クラウドIDEサービス」を使用した環境を構築してみたらエラーは発生しませんでした。

なので色々やってダメなら、AWS Cloud9を使用した環境を作りなおすことを推奨します。

※環境面で前に進めなくなるのはストレスでしかないですからね!

Railsチュートリアル5.3.1で発生したエラー

エラーは以下のコマンドで発生しました。

rails test

エラー内容は以下

StaticPagesControllerTest#test_should_get_contact:
ActionView::Template::Error: undefined local variable or method help_path' for #<#<Class:0x000000000a302848>:0x000000000b24ce48>
app/views/layouts/application.html.erb:17:in
_app_views_layouts_application_html_erb__629600530_85761180'
test/controllers/static_pages_controller_test.rb:24:in block in <class:StaticPagesControllerTest>'

「help_path」が定義されてないよ、というようなエラーです。

Railsチュートリアル5.3.1で発生したエラーの原因

  • rspec2系
  • rspec3系

の違いによるもののようです。

rspec2系とrspec3系では記述方法が異なる箇所があります。

チュートリアルでは、rspec2系で記述されているが、自分の環境がrspec3系のため、エラーとなっていた模様。

という訳で、チュートリアルで進めているサンプルをrspec3系の記述に修正してあげます。

rspec3系に変換してみる

transpecをインストール

コマンドラインで以下を入力し、transpecをインストールします。

gem install transpec

transpecを実行

コマンドラインで以下を実行

transpec

これでrspec2系の記述をrspec3系の記述に変換してくれるようです。

ここで以下のエラーが表示されました。

「undefined method version' for nil:NilClass」が表示される場合の対処

この時、私の環境では以下のエラーが発生しました。

undefined method `version' for nil:NilClass

 

私が実施した対処法は以下。

Gemfileに以下を追加します。

コマンドラインで以下を実行

bundle update

これで、「transpec」を実行するとエラー無く通るようになりました。

rails g rspec:install

試したのはここまで…

その後、transpecを実行し

「rails test」を実行してみたがダメ。

結局解決策は見つからず。

 

というわけで、冒頭で記述したように、Rilsチュートリアルでも推奨のAWS Cloud9を使用した環境構築をオススメします。

て戻ってしまいますが、環境作り直して再トライしてみてください。

参考にしたページ

https://teratail.com/questions/2813

\この記事はどうでしたか?/

-Railsチュートリアル, Ruby on Rails

© 2021 ジョブログLiFE