私は RoR を初めて使用し、テスト駆動開発を発見する前にいくつかのことをプログラミングしました。そこで、guard-rspec と capybara でいくつかのテストを作成しようとしました。すべて問題ありませんでしたが、devise (バージョン 1.1.rc02) の非推奨警告が表示されたので、更新しました (最新バージョン 1.4.5)。
これらは警告でした:
すべての仕様を実行する
DEPRECATION WARNING: Using form_for(:name, @resource) is deprecated. Please use form_for(@resource, :as => :name) instead. (called from _app_views_devise_sessions_new_html_erb___942904761_2291541620_0 at /Users/xonic/Documents/work/ror.ror.at/app/views/devise/sessions/new.html.erb:3)
FDEPRECATION WARNING: Using form_for(:name, @resource) is deprecated. Please use form_for(@resource, :as => :name) instead. (called from _app_views_devise_sessions_new_html_erb___942904761_2291541620_0 at /Users/xonic/Documents/work/ror.ror.at/app/views/devise/sessions/new.html.erb:3)
.DEPRECATION WARNING: Using form_for(:name, @resource) is deprecated. Please use form_for(@resource, :as => :name) instead. (called from _app_views_devise_registrations_new_html_erb__1735759005_2291086140_0 at /Users/xonic/Documents/work/ror.ror.at/app/views/devise/registrations/new.html.erb:3)
だから私は変わった
<%= form_for(resource_name, resource, :url => registration_path(resource_name)) do |f| %>
に
<%= form_for(resource, :url => registration_path(resource_name)) do |f| %>
そして警告を取り除きました。ここまでは順調だったので、テストを続行し、ブラウザでアプリケーションを開こうとはしませんでした。
その後何が起こったのかわかりませんが、突然、ブラウザでアプリケーションを開こうとすると、次のエラー メッセージが表示されます。
NoMethodError in Slides#index
Showing /Users/xonic/Documents/work/ror.ror.at/app/views/layouts/application.html.erb where line #27 raised:
private method `split' called for #<Class:0x10c023278>
Extracted source (around line #27):
24:
25: <div class="gopro">
26:
27: <% if user_signed_in? %>
28: Signed in as <%= link_to current_user.username, user_path(current_user) %>. Not you? <%#, user_slides_path(current_user.username) %>
29: <%= link_to "Sign out", destroy_user_session_path %>
30: <% else %>
明らかに、Devise は問題を抱えています...理由がわかりません。面白いことにsave_and_open_page
、アプリのテスト中に呼び出すと、ブラウザー ウィンドウが開き、アプリケーションが正しく表示され、エラーはまったく表示されません。
Guard::RSpec is running, with RSpec 2!
Running all specs
...
Finished in 0.95467 seconds
3 examples, 0 failures
更新: この非常によく似た質問Devise: NoMethod Error & user_signed_inを見たことがありますが、ユーザー モデルを正しく設定しているので、それは問題ではありません。
これは私にとって非常に紛らわしいです。うまくいけば、そこにいる誰かが何が起こっているのかを理解しています
ありがとう、xon1c
更新私はそれを修正しましたが、評判の欠如 のため、スタックオーバーフローは次の6時間で私自身の質問に答えさせてくれません。解決策は後で投稿します。