Я довольно новичок в RoR и запрограммировал несколько вещей перед тем, как открыть Test-Driven-Development. Поэтому я попытался написать несколько тестов с использованием 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 %>
Так очевидно, у Девиз проблемы ... не знаю почему. Самое смешное, что при вызове save_and_open_page
во время тестирования приложения открывается окно браузера, в котором приложение отображается правильно и без ошибок.
Guard::RSpec is running, with RSpec 2!
Running all specs
...
Finished in 0.95467 seconds
3 examples, 0 failures
UPDATE:
Я видел этот очень похожий вопрос Devise: NoMethod Error & user_signed_in и правильно настроил модель пользователя, так что это не проблема.
Это меня довольно смущает, надеюсь, кто-то там понимает, что происходит Crossing Fingers
Спасибо,
xon1c
UPDATE
Я исправил это, но stackoverflow не позволит мне ответить на мой собственный вопрос в ближайшие 6 часов из-за отсутствия репутации sigh . Опубликуем решение позже.