0

私は 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時間で私自身の質問に答えさせてくれません。解決策は後で投稿します。

4

1 に答える 1

0

わかりました、修正しました(完璧に近い)。これが私がしたことです:

git を稼働状態に戻し、ゼロから始めました。今回はLINEは使いませんでした

gem 'devise', :git => 'git://github.com/plataformatec/devise.git'

私のGemfileでは、代わりに私は

gem 'devise'

そして、最新のdevise gemをインストールしました

gem install devise
rails generate devise:install

このコマンドは、以前のバージョン 1.4.7 ではなく、バージョン 1.4.5 をインストールしました。次に、他のすべての gem、つまり capybara、guard-rspec、factory_girl_rails、launchy をインストールしました。私が残した次の2つの警告を除いて、すべてが正常に機能します。

Running: spec/requests/sign_ups_spec.rb
DEPRECATION WARNING: :name_prefix was deprecated in the new router syntax. Use :as instead. (called from /Users/xonic/Documents/work/ror.ror.at/config/routes.rb:7)
DEPRECATION WARNING: :name_prefix was deprecated in the new router syntax. Use :as instead. (called from /Users/xonic/Documents/work/ror.ror.at/config/routes.rb:7)
.

Finished in 0.16255 seconds
1 example, 0 failures

すべてが機能する限り、私は警告に問題はありませんが、誰かがそれらを取り除く方法を知っている場合は、私に知らせてください.

ありがとう。

于 2011-09-12T06:57:16.953 に答える