質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Ruby on Rails 4

Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

Q&A

解決済

2回答

9868閲覧

Ruby on Rails チュートリアル 実例を使ってRailsを学ぼう 第五章 5.3.2からエラーが出ます

YoheiKoga

総合スコア9

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Ruby on Rails 4

Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

0グッド

0クリップ

投稿2014/10/09 00:46

Ruby on Rails チュートリアル 実例を使ってRailsを学ぼうをおこなってます

第五章、5.3.2の「Railsのルート」のところ
http://railstutorial.jp/chapters/filling-in-the-layout?version=4.0#sec-rails_routes

で、Rspecを使ってテストした際、サイト通りにパスせずエラーが出続けてしまいます。
リスト5.22とリスト5.23の間にある

ルーティングが定義されたので、Help、About、Contactページのテストはパスするはずです。
$ bundle exec rspec spec/requests/static_pages_spec.rb
これで、失敗するテストはHomeページを残すだけとなりました。

のところなんですが、helpもaboutもcontactも全てパスしませんでした。

先に進めば解決するかもと思い、先に進んだのですが
5.3.4 Rspecを洗練させる
http://railstutorial.jp/chapters/filling-in-the-layout?version=4.0#sec-pretty_rspec
のところまでやっても解決しませんでした。

Rspecを使ってテストした際のエラーの内容は下のコピペになります

undefined local variable or method `root_path'などと出てるので、root_pathなんて定義されてないよ、って言われてるのかなと思ったのですがチュートリアル通りだと思ったのでよくわかりません、、、
似たような方、解決策が分かる方いらっしゃいませんか?

gemをインストールする際のバージョンの指定などはしなかったのでそこだけはチュートリアル通りではないのでそれが問題なのでしょうか・・・(bootstrapとカスタムcssのところだけは互換性がわるかったのでバージョンを指定しました)

よろしくおねがいします。

Failures:

  1. Static pages Home page
    Failure/Error: before{visit root_path}
    NameError:
    undefined local variable or method `root_path' for #RSpec::ExampleGroups::StaticPages::HomePage:0x00000103094eb8

    ./spec/requests/static_pages_spec.rb:8:in `block (3 levels) in <top (required)>'

  2. Static pages Home page
    Failure/Error: before{visit root_path}
    NameError:
    undefined local variable or method `root_path' for #RSpec::ExampleGroups::StaticPages::HomePage:0x0000010127e1b8

    ./spec/requests/static_pages_spec.rb:8:in `block (3 levels) in <top (required)>'

  3. Static pages Home page
    Failure/Error: before{visit root_path}
    NameError:
    undefined local variable or method `root_path' for #RSpec::ExampleGroups::StaticPages::HomePage:0x000001021f53d0

    ./spec/requests/static_pages_spec.rb:8:in `block (3 levels) in <top (required)>'

  4. Static pages Help page
    Failure/Error: before{visit help_path}
    NameError:
    undefined local variable or method `help_path' for #RSpec::ExampleGroups::StaticPages::HelpPage:0x000001021b64a0

    ./spec/requests/static_pages_spec.rb:16:in `block (3 levels) in <top (required)>'

  5. Static pages Help page
    Failure/Error: before{visit help_path}
    NameError:
    undefined local variable or method `help_path' for #RSpec::ExampleGroups::StaticPages::HelpPage:0x0000010218ebd0

    ./spec/requests/static_pages_spec.rb:16:in `block (3 levels) in <top (required)>'

  6. Static pages About page
    Failure/Error: before{visit about_path}
    NameError:
    undefined local variable or method `about_path' for #RSpec::ExampleGroups::StaticPages::AboutPage:0x00000102177b38

    ./spec/requests/static_pages_spec.rb:23:in `block (3 levels) in <top (required)>'

  7. Static pages About page
    Failure/Error: before{visit about_path}
    NameError:
    undefined local variable or method `about_path' for #RSpec::ExampleGroups::StaticPages::AboutPage:0x0000010214ca00

    ./spec/requests/static_pages_spec.rb:23:in `block (3 levels) in <top (required)>'

  8. Static pages Contact page
    Failure/Error: before{visit about_path}
    NameError:
    undefined local variable or method `about_path' for #RSpec::ExampleGroups::StaticPages::ContactPage:0x00000102135ad0

    ./spec/requests/static_pages_spec.rb:30:in `block (3 levels) in <top (required)>'

  9. Static pages Contact page
    Failure/Error: before{visit about_path}
    NameError:
    undefined local variable or method `about_path' for #RSpec::ExampleGroups::StaticPages::ContactPage:0x00000102127660

    ./spec/requests/static_pages_spec.rb:30:in `block (3 levels) in <top (required)>'

Finished in 0.10875 seconds (files took 10.49 seconds to load)
9 examples, 9 failures

Failed examples:

rspec ./spec/requests/static_pages_spec.rb:10 # Static pages Home page
rspec ./spec/requests/static_pages_spec.rb:11 # Static pages Home page
rspec ./spec/requests/static_pages_spec.rb:12 # Static pages Home page
rspec ./spec/requests/static_pages_spec.rb:18 # Static pages Help page
rspec ./spec/requests/static_pages_spec.rb:19 # Static pages Help page
rspec ./spec/requests/static_pages_spec.rb:25 # Static pages About page
rspec ./spec/requests/static_pages_spec.rb:26 # Static pages About page
rspec ./spec/requests/static_pages_spec.rb:32 # Static pages Contact page
rspec ./spec/requests/static_pages_spec.rb:33 # Static pages Contact page

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

参考として 半年前に私が Ruby on Rails チュートリアル を なぞった時のコードが以下にあります。

https://github.com/katoy/sample_app_rails4

チュートリアルを 最後までなぞったかどうかは定かではないのですが、test が Pass する状態のものを置いてあります。
(Readme.md の先頭部にある 画像のリンク先で、 buildとテストが OK だったこと、テストでのカバレッジ計測結果などが参照できます。)

config/routes.rb などを比較してみると、解決の糸口がみつかるかもしれません。

投稿2014/10/09 08:52

katoy

総合スコア22324

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

YoheiKoga

2014/10/09 09:11

ありがとうございます! 確認して比較してみます!
YoheiKoga

2014/10/10 01:17

下のコメントのようにtranspecを使ったら解決しました! ありがとうございます! カンゲキです(`;ω;´)
guest

0

config/routes.rbの書き換えは行われたのでしょうか?
出ているエラーからするとまるで書き換えていないかのように見受けられますが…

投稿2014/10/09 01:35

TaMaMhyu

総合スコア1356

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

YoheiKoga

2014/10/09 02:14

config/routes.rbもチュートリアル「リスト5.22」に倣って、以下のように書き換えました 思えばここからテストエラーが出るようになった気がします・・・ SampleApp::Application.routes.draw do root 'static_pages#home' match '/help', to:'static_pages#help', via:'get' match '/about', to:'static_pages#about', via:'get' match '/contact', to:'static_pages#contact', via:'get' ・ ・ ・ end
TaMaMhyu

2014/10/09 02:26

あまり詳しくないので的はずれかもしれませんが、コマンド`rake routes`を実行するとどのように表示されるとでしょうか?
TaMaMhyu

2014/10/09 08:57

katoyさんの回答とチュートリアルの記述をもう一度見てみたのですが、`:`の後ろに空白がないという差があるような気がします。
YoheiKoga

2014/10/09 09:10

rake routesを実行した結果以下のように表示されました Prefix Verb URI Pattern Controller#Action users_new GET /users/new(.:format) users#new static_pages_home GET /static_pages/home(.:format) static_pages#home static_pages_about GET /static_pages/about(.:format) static_pages#about static_pages_help GET /static_pages/help(.:format) static_pages#help static_pages_contact GET /static_pages/contact(.:format) static_pages#contact root GET / static_pages#home help GET /help(.:format) static_pages#help about GET /about(.:format) static_pages#about contact GET /contact(.:format) static_pages#contact users GET /users(.:format) users#index POST /users(.:format) users#create new_user GET /users/new(.:format) users#new edit_user GET /users/:id/edit(.:format) users#edit user GET /users/:id(.:format) users#show PATCH /users/:id(.:format) users#update PUT /users/:id(.:format) users#update DELETE /users/:id(.:format) users#destroy signup GET /signup(.:format) users#new
YoheiKoga

2014/10/09 09:14

色々調べていたら、チュートリアルのRspecはバージョンが2.x系?なのに対して、gemにバージョンを指定しなかった僕のは3.x系だったのでそれによってテストに何かしら違いが出てきてるのかもしれません・・・ 詳しくはわかりませんが、shouldメソッドはexpectメソッドに変わるなど変更点もあるようなので ↓を参考にしました http://blog.toshimaru.net/rspec2-to-rspec3-errors/ 空白を入れる分も、ちょっと試してみます
YoheiKoga

2014/10/09 09:19

空白を入れてみましたが、やはりうまく行きませんでした。。。 gemのバージョンの違いなのかと思い始めました(;´Д`)
TaMaMhyu

2014/10/09 10:09

spec_helperと書いているところが3系では別になるなどいろいろあるようですね。 チュートリアルを進めるだけが目的なら2系に落とした方がいいかもしれません。 3系に変換してくれるgemもあるらしいですが。
katoy

2014/10/09 15:02

github に commit したものを rspec 3 対応させてみました。 操作: 1. Gemfile を書き換えて rspec 関係を 3.0.0 以上に指定しました。 2. その後、 bunlde update して、一連の gem を更新しました。 3. rake spec すると、spec ファイル中の its の記述が軒並みエラーになったので、次の gem をつかって spec ファイルを自動変換させました。 [https://github.com/yujinakayama/transpec](https://github.com/yujinakayama/transpec) 4. 再度、 rake rspec すると、テストがすべて pass しました。 5. この状態のものを git commit しました。 [https://travis-ci.org/katoy/sample_app_rails4](https://travis-ci.org/katoy/sample_app_rails4) をみれば、test が pass していることが確認できます。
YoheiKoga

2014/10/10 00:16

TaMaMhyuさん 色々調べてみたらやっぱり3系と2系の違いみたいですね・・・難しいです(;´Д`) と思ってたら katoyさん ご丁寧にありがとうございます! specファイルの自動変換gemあるんですね、試してみます!
YoheiKoga

2014/10/10 01:16

transpecのgemをインストールして実行したら、rspec2系の記述からrspec3系の記述へ変換してくれてテストがパスするようになりました! TamaMhyuさん、katoyさん、ありがとうございます!。・゚・(ノ∀`)・゚・。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問