开发者

Devise not working after update, Tests via capybara complete without failures

开发者 https://www.devze.com 2023-04-03 21:12 出处:网络
I\'m quite new to RoR and programmed a couple of things before discovering Test-Driven-Development. So I tried to write some tests with guard-rspec and capybara. All was fine, but I got some deprecati

I'm quite new to RoR and programmed a couple of things before discovering Test-Driven-Development. So I tried to write some tests with guard-rspec and capybara. All was fine, but I got some deprecation warnings for devise (had version 1.1.rc02), so I updated it (now having latest version 1.4.5).

These were the warnings:

Running all specs

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)

So I changed

<%= form_for(resource_name, resource, :url => registration_path(resource_name)) do |f| %>

to

<%= form_for(resource, :url => registration_path(resource_name)) do |f| %>

and got rid of the warnings. So far so good, I continued with my tests and did not try to open the application in the browser myself.

I'm not sure what happened then but all of a sudden, when trying to open the application in the browser, i get the following error message:

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_pa开发者_运维问答th(current_user.username) %>
29:                         <%= link_to "Sign out", destroy_user_session_path %>
30:                     <% else %>

So obviously, Devise is in trouble... no idea why. Funny thing is, when calling save_and_open_page while testing the app, a browser window opens with the application displaying correctly and no errors at all.

Guard::RSpec is running, with RSpec 2!
Running all specs
...

Finished in 0.95467 seconds
3 examples, 0 failures

UPDATE: I've seen this very similar question Devise: NoMethod Error & user_signed_in and have correctly set up the user model, so that's not the problem.

This is quite confusing to me, hopefully someone out there understands what's happening crossingFingers

Thanks, xon1c

UPDATE I fixed it, but stackoverflow won't let me answer my own question in the next 6hrs because of lack of reputation sigh. Will post the solution later.


Ok, I fixed it (close to perfect). Here's what i did:

I reverted git to a working status and began from scratch. This time I did not use the line

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

in my Gemfile, instead I only put

gem 'devise'

and then installed the latest devise gem through

gem install devise
rails generate devise:install

The command installed version 1.4.5, not 1.4.7 as I previously had. Then I installed all the other gems, namely capybara, guard-rspec, factory_girl_rails and launchy. Everything works fine now except these two warnings I'm left with:

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

Well, as long as everything works, I'm ok with the warnings but if anybody knows how to get rid of them, please let me know.

Thanks.

0

精彩评论

暂无评论...
验证码 换一张
取 消