Tracking a "Could not find a valid mapping for #<User..." error

3,214 views
Skip to first unread message

Joe Ellis

unread,
Mar 2, 2011, 11:33:31 AM3/2/11
to Devise
I'm currently running Rails 3.0.4 / Devise 1.1.7 edge . I'm having
issues with my test suite, which is using FactoryGirl with RSpec /
Steak for acceptance tests (and Spork for running the tests if that
matters).

The RSpec unit tests work perfectly fine, however when I try running
the Steak acceptance tests, it just throws back a "Could not find a
valid mapping for #<User..." error for every test that tries to
generate a new user. Here is the backtrace I'm seeing as an example:
https://gist.github.com/851208

I'm just trying to figure out what that error message means exactly,
and what might be causing the problem. Has anyone else come across
this issue before?

Joe Ellis

unread,
Mar 2, 2011, 11:56:45 AM3/2/11
to Devise
Whoops, typo, I meant to say Devise 1.2rc edge. The reason why is
because I'm using a CustomFailure Class and there was a bug with that
in previous versions that caused CustomFailure classes to not be
recognized in tests.

Travis Pew

unread,
Apr 18, 2011, 10:52:22 PM4/18/11
to Devise
I'm seeing this same problem with a similar backtrace. I'm using
devise 1.3.0 and factory_girl 1.3.3. I'm not using Steak, but using
Capybara directly for acceptance tests (the latest Capybara adds the
Steak aliases).

The problem only occurs after the first scenario (on the first
acceptance test, I am able to create all the users I want). But, for
some reason, on the second and all subsequent, it fails to create a
user, even if the exact same code is used. It is no longer able to
"find scope." I stepped into the debugger in the Mapping.find_scope
method and it seems like it fails on this step:

duck.is_a?(m.to)

I'm not sure why this is "true" in the first acceptance test, but
subsequently false in the second acceptance test, even though
everything looks the same to me.

There must be something I'm missing, new as I am to both Devise and
Factory_Girl, but I can't figure out why two identical tests will have
one pass and one fail in the Factory.create(:user) step. This suggests
that the mapping and routes *are* setup correctly (they also work on
the development server).

It also seems to depend on what else happens during the test:
This works:

scenario "Test 1" do
Factory.create(:user)
end
scenario "Test 2" do
Factory.create(:user)
end

but not this:

scenario "Test 1" do
Factory.create(:user)
visit '/'
end
scenario "Test 2" do
Factory.create(:user)
end

This second set of tests causes this error during the second scenario
only:
Failure/Error: Factory.create(:user)
RuntimeError:
Could not find a valid mapping for #<User id: 92, email:
"te...@test.com", encrypted_password: "$2a$10$vLPFYMq0hhyp1jNt7vQar.
1O2H5Py9wd.5NFnkOiMo6z...", reset_password_token: nil, remember_token:
nil, remember_created_at: nil, sign_in_count: 0, current_sign_in_at:
nil, last_sign_in_at: nil, current_sign_in_ip: nil, last_sign_in_ip:
nil, confirmation_token: "76Jyc7Cf2w3kAFvPESFB", confirmed_at: nil,
confirmation_sent_at: "2011-04-19 02:44:40", created_at: "2011-04-19
02:44:40", updated_at: "2011-04-19 02:44:40", admin: false,
deactivated_at: nil, full_name: "The User">

Strangely, mapping still seems to be set up when I enter debug mode in
the second scenario:

ruby-1.9.2-p136 :001 > Devise.mappings
=> {:user=>#<Devise::Mapping:0x00000004b772e0 @scoped_path="users",
@singular=:user, @class_name="User",
@ref=#<ActiveSupport::Dependencies::Reference:0x00000004b71430
@name="User">, @path="profile", @path_prefix=nil,
@controllers={:registrations=>"registrations", :sessions=>"devise/
sessions", :passwords=>"devise/passwords", :confirmations=>"devise/
confirmations"},
@path_names={:registration=>"", :new=>"new", :edit=>"edit", :sign_in=>"sign_in", :sign_out=>"sign_out", :password=>"password", :sign_up=>"sign_up", :cancel=>"cancel", :confirmation=>"confirmation"},
@sign_out_via=:get,
@modules=[:database_authenticatable, :rememberable, :recoverable, :registerable, :validatable, :confirmable, :trackable],
@routes=[:session, :password, :registration, :confirmation],
@strategies=[:rememberable, :database_authenticatable]>}

Regardless, it will claim the the User object is not a class of this
object, although it thinks it is in the first scenario.

Any ideas what might be going wrong?

José Valim

unread,
Apr 20, 2011, 2:35:05 AM4/20/11
to Devise
If you are adding custom routes to Devise controllers, you need to
tell Devise to which scope that route is relevant to:

devise_scope :user do
# Your specific routes
end
> "t...@test.com", encrypted_password: "$2a$10$vLPFYMq0hhyp1jNt7vQar.

Travis Pew

unread,
Apr 20, 2011, 9:00:46 AM4/20/11
to plataforma...@googlegroups.com
I have this in my routes.rb:

devise_for :users, :path => 'profile', :controllers => {
:registrations => 'registrations' }

This seems to work fine on the development server. Why would this not
work in testing? Moreover, why would it only not work in the second
test, and but work in the first test?

Mark

unread,
Apr 28, 2011, 9:21:02 AM4/28/11
to plataforma...@googlegroups.com
Hello,
i had the same Problem. I fixed it with

config.cache_classes = true in the test.rb file.


dev2

unread,
May 12, 2011, 1:28:27 PM5/12/11
to Devise
This does solve this issue but caching classes while testing doesn't
play nice with spork (as it won't reload the models if you make
changes).

On Apr 28, 9:21 am, Mark <vm70985260083132...@vmail.inf.h-brs.de>
wrote:

Harry Hornreich

unread,
Jun 8, 2011, 12:00:48 PM6/8/11
to Devise
I agree. See the same results. I second Travis's question ... Has
anyone found a better solution?

Chris Bloom

unread,
Jun 25, 2011, 12:34:47 AM6/25/11
to Devise
Been grinding on this problem for 9 days now. Like Travis Pew, I too
found that only very specific circumstances will trigger the error. I
documented my findings in a StackOverflow question --
http://stackoverflow.com/q/6363471/83743 -- but unfortunately I've
received no answers that might resolve the problem. Glad to see I'm
not the only one running into this though.

Chris Bloom

unread,
Jun 25, 2011, 12:59:32 AM6/25/11
to Devise
I dropped into the debugger just before the call to `get '/'` which
always seems to trigger the error. I then set a catchpoint for any
Runtime Errors, which is what I always saw during testing. Here is the
output. I'm afraid I'm a bit too new to Ruby and the ruby debugger to
make use of this at first glance. Perhaps someone else can take a look
at it?

(rdb:1) cat RuntimeError
Catch exception RuntimeError.
(rdb:1) c
./Users/chrisbloom7/.rvm/gems/ruby-1.9.2-p180@myproj/gems/devise-1.3.4/
lib/devise/mapping.rb:40: [BUG] Segmentation fault
ruby 1.9.2p180 (2011-02-18 revision 30909) [x86_64-darwin10.6.0]

-- control frame ----------
c:0073 p:0137 s:0293 b:0292 l:0009e0 d:0009e0 METHOD /Users/
chrisbloom7/.rvm/gems/ruby-1.9.2-p180@myproj/gems/devise-1.3.4/lib/
devise/mapping.rb:40
c:0072 p:0021 s:0288 b:0288 l:000287 d:000287 METHOD /Users/
chrisbloom7/.rvm/gems/ruby-1.9.2-p180@myproj/gems/devise-1.3.4/app/
mailers/devise/mailer.rb:26
c:0071 p:0013 s:0284 b:0284 l:000283 d:000283 METHOD /Users/
chrisbloom7/.rvm/gems/ruby-1.9.2-p180@myproj/gems/devise-1.3.4/app/
mailers/devise/mailer.rb:21
c:0070 p:0015 s:0279 b:0279 l:000278 d:000278 METHOD /Users/
chrisbloom7/.rvm/gems/ruby-1.9.2-p180@myproj/gems/devise-1.3.4/app/
mailers/devise/mailer.rb:6
c:0069 p:0015 s:0275 b:0275 l:000274 d:000274 METHOD /Users/
chrisbloom7/.rvm/gems/ruby-1.9.2-p180@myproj/gems/actionpack-3.0.8/lib/
abstract_controller/base.rb:150
c:0068 p:0093 s:0270 b:0270 l:000269 d:000269 METHOD /Users/
chrisbloom7/.rvm/gems/ruby-1.9.2-p180@myproj/gems/actionpack-3.0.8/lib/
abstract_controller/base.rb:119
c:0067 p:0084 s:0264 b:0264 l:000263 d:000263 METHOD /Users/
chrisbloom7/.rvm/gems/ruby-1.9.2-p180@myproj/gems/actionpack-3.0.8/lib/
abstract_controller/rendering.rb:41
c:0066 p:0026 s:0259 b:0259 l:000258 d:000258 METHOD /Users/
chrisbloom7/.rvm/gems/ruby-1.9.2-p180@myproj/gems/actionmailer-3.0.8/
lib/action_mailer/old_api.rb:75
c:0065 p:0028 s:0254 b:0254 l:000253 d:000253 METHOD /Users/
chrisbloom7/.rvm/gems/ruby-1.9.2-p180@myproj/gems/actionmailer-3.0.8/
lib/action_mailer/base.rb:471
c:0064 p:0051 s:0250 b:0250 l:000249 d:000249 METHOD /Users/
chrisbloom7/.rvm/gems/ruby-1.9.2-p180@myproj/gems/actionmailer-3.0.8/
lib/action_mailer/base.rb:466
c:0063 p:---- s:0245 b:0245 l:000244 d:000244 FINISH
c:0062 p:---- s:0243 b:0243 l:000242 d:000242 CFUNC :new
c:0061 p:0040 s:0238 b:0238 l:000237 d:000237 METHOD /Users/
chrisbloom7/.rvm/gems/ruby-1.9.2-p180@myproj/gems/actionmailer-3.0.8/
lib/action_mailer/base.rb:450
c:0060 p:---- s:0233 b:0233 l:000232 d:000232 FINISH
c:0059 p:0052 s:0231 b:0231 l:000230 d:000230 METHOD /Users/
chrisbloom7/.rvm/gems/ruby-1.9.2-p180@myproj/gems/devise-1.3.4/lib/
devise/models/confirmable.rb:50
c:0058 p:0225 s:0228 b:0228 l:000227 d:000227 METHOD /Users/
chrisbloom7/.rvm/gems/ruby-1.9.2-p180@myproj/gems/activesupport-3.0.8/
lib/active_support/callbacks.rb:423
c:0057 p:0011 s:0219 b:0219 l:001bf8 d:001bf8 METHOD /Users/
chrisbloom7/.rvm/gems/ruby-1.9.2-p180@myproj/gems/activerecord-3.0.8/
lib/active_record/callbacks.rb:277
c:0056 p:0046 s:0216 b:0216 l:000215 d:000215 METHOD /Users/
chrisbloom7/.rvm/gems/ruby-1.9.2-p180@myproj/gems/activerecord-3.0.8/
lib/active_record/persistence.rb:250
c:0055 p:0008 s:0212 b:0212 l:001548 d:000211 BLOCK /Users/
chrisbloom7/.rvm/gems/ruby-1.9.2-p180@myproj/gems/activerecord-3.0.8/
lib/active_record/callbacks.rb:273
c:0054 p:0148 s:0210 b:0210 l:000209 d:000209 METHOD /Users/
chrisbloom7/.rvm/gems/ruby-1.9.2-p180@myproj/gems/activesupport-3.0.8/
lib/active_support/callbacks.rb:414
c:0053 p:0011 s:0202 b:0202 l:001548 d:001548 METHOD /Users/
chrisbloom7/.rvm/gems/ruby-1.9.2-p180@myproj/gems/activerecord-3.0.8/
lib/active_record/callbacks.rb:273
c:0052 p:0011 s:0199 b:0199 l:000198 d:000198 METHOD /Users/
chrisbloom7/.rvm/gems/ruby-1.9.2-p180@myproj/gems/activerecord-3.0.8/
lib/active_record/persistence.rb:60
c:0051 p:0027 s:0195 b:0195 l:000194 d:000194 METHOD /Users/
chrisbloom7/.rvm/gems/ruby-1.9.2-p180@myproj/gems/activerecord-3.0.8/
lib/active_record/validations.rb:49
c:0050 p:0012 s:0191 b:0191 l:000190 d:000190 METHOD /Users/
chrisbloom7/.rvm/gems/ruby-1.9.2-p180@myproj/gems/activerecord-3.0.8/
lib/active_record/attribute_methods/dirty.rb:30
c:0049 p:0010 s:0187 b:0187 l:001e00 d:000186 BLOCK /Users/
chrisbloom7/.rvm/gems/ruby-1.9.2-p180@myproj/gems/activerecord-3.0.8/
lib/active_record/transactions.rb:245
c:0048 p:0015 s:0185 b:0185 l:000790 d:000184 BLOCK /Users/
chrisbloom7/.rvm/gems/ruby-1.9.2-p180@myproj/gems/activerecord-3.0.8/
lib/active_record/transactions.rb:292
c:0047 p:0232 s:0183 b:0183 l:000182 d:000182 METHOD /Users/
chrisbloom7/.rvm/gems/ruby-1.9.2-p180@myproj/gems/activerecord-3.0.8/
lib/active_record/connection_adapters/abstract/databas
c:0046 p:0025 s:0174 b:0174 l:000173 d:000173 METHOD /Users/
chrisbloom7/.rvm/gems/ruby-1.9.2-p180@myproj/gems/activerecord-3.0.8/
lib/active_record/transactions.rb:207
c:0045 p:0022 s:0169 b:0169 l:000790 d:000790 METHOD /Users/
chrisbloom7/.rvm/gems/ruby-1.9.2-p180@myproj/gems/activerecord-3.0.8/
lib/active_record/transactions.rb:290
c:0044 p:0011 s:0165 b:0165 l:001e00 d:001e00 METHOD /Users/
chrisbloom7/.rvm/gems/ruby-1.9.2-p180@myproj/gems/activerecord-3.0.8/
lib/active_record/transactions.rb:245
c:0043 p:0025 s:0161 b:0161 l:000160 d:000160 METHOD /Users/
chrisbloom7/.rvm/gems/ruby-1.9.2-p180@myproj/gems/factory_girl-1.3.3/
lib/factory_girl/proxy/create.rb:6
c:0042 p:0091 s:0158 b:0158 l:002398 d:002398 METHOD /Users/
chrisbloom7/.rvm/gems/ruby-1.9.2-p180@myproj/gems/factory_girl-1.3.3/
lib/factory_girl/factory.rb:330
c:0041 p:0034 s:0151 b:0151 l:000150 d:000150 METHOD /Users/
chrisbloom7/.rvm/gems/ruby-1.9.2-p180@myproj/gems/factory_girl-1.3.3/
lib/factory_girl/factory.rb:273
c:0040 p:0034 s:0146 b:0146 l:000145 d:000145 METHOD /Users/
chrisbloom7/.rvm/gems/ruby-1.9.2-p180@myproj/gems/factory_girl-1.3.3/
lib/factory_girl/factory.rb:304
c:0039 p:0025 s:0141 b:0141 l:000140 d:000140 METHOD /Users/
chrisbloom7/.rvm/gems/ruby-1.9.2-p180@myproj/gems/factory_girl-1.3.3/
lib/factory_girl.rb:20
c:0038 p:0011 s:0136 b:0136 l:000fb8 d:000135 BLOCK /Users/
chrisbloom7/Projects/myproj/spec/requests/users_links_spec.rb:30
c:0037 p:---- s:0134 b:0134 l:000133 d:000133 FINISH
c:0036 p:---- s:0132 b:0132 l:000131 d:000131 CFUNC :instance_eval
c:0035 p:0019 s:0129 b:0129 l:000128 d:000128 METHOD /Users/
chrisbloom7/.rvm/gems/ruby-1.9.2-p180@myproj/gems/rspec-core-2.6.4/lib/
rspec/core/hooks.rb:35
c:0034 p:0014 s:0125 b:0125 l:000f40 d:001550 BLOCK /Users/
chrisbloom7/.rvm/gems/ruby-1.9.2-p180@myproj/gems/rspec-core-2.6.4/lib/
rspec/core/hooks.rb:70
c:0033 p:---- s:0122 b:0122 l:000121 d:000121 FINISH
c:0032 p:---- s:0120 b:0120 l:000119 d:000119 CFUNC :each
c:0031 p:0025 s:0117 b:0117 l:000f40 d:000f40 METHOD /Users/
chrisbloom7/.rvm/gems/ruby-1.9.2-p180@myproj/gems/rspec-core-2.6.4/lib/
rspec/core/hooks.rb:70
c:0030 p:0030 s:0113 b:0113 l:000112 d:000112 METHOD /Users/
chrisbloom7/.rvm/gems/ruby-1.9.2-p180@myproj/gems/rspec-core-2.6.4/lib/
rspec/core/hooks.rb:116
c:0029 p:0024 s:0107 b:0107 l:0018a0 d:000020 BLOCK /Users/
chrisbloom7/.rvm/gems/ruby-1.9.2-p180@myproj/gems/rspec-core-2.6.4/lib/
rspec/core/example_group.rb:221
c:0028 p:---- s:0104 b:0104 l:000103 d:000103 FINISH
c:0027 p:---- s:0102 b:0102 l:000101 d:000101 CFUNC :each
c:0026 p:0054 s:0099 b:0099 l:0018a0 d:0018a0 METHOD /Users/
chrisbloom7/.rvm/gems/ruby-1.9.2-p180@myproj/gems/rspec-core-2.6.4/lib/
rspec/core/example_group.rb:221
c:0025 p:0039 s:0095 b:0095 l:000094 d:000094 METHOD /Users/
chrisbloom7/.rvm/gems/ruby-1.9.2-p180@myproj/gems/rspec-core-2.6.4/lib/
rspec/core/example.rb:145
c:0024 p:0011 s:0092 b:0092 l:001760 d:000091 BLOCK /Users/
chrisbloom7/.rvm/gems/ruby-1.9.2-p180@myproj/gems/rspec-core-2.6.4/lib/
rspec/core/example.rb:47
c:0023 p:0024 s:0089 b:0089 l:000088 d:000088 METHOD /Users/
chrisbloom7/.rvm/gems/ruby-1.9.2-p180@myproj/gems/rspec-core-2.6.4/lib/
rspec/core/example.rb:107
c:0022 p:0059 s:0085 b:0085 l:001760 d:001760 METHOD /Users/
chrisbloom7/.rvm/gems/ruby-1.9.2-p180@myproj/gems/rspec-core-2.6.4/lib/
rspec/core/example.rb:45
c:0021 p:0071 s:0079 b:0079 l:000068 d:000078 BLOCK /Users/
chrisbloom7/.rvm/gems/ruby-1.9.2-p180@myproj/gems/rspec-core-2.6.4/lib/
rspec/core/example_group.rb:294
c:0020 p:---- s:0074 b:0074 l:000073 d:000073 FINISH
c:0019 p:---- s:0072 b:0072 l:000071 d:000071 CFUNC :map
c:0018 p:0017 s:0069 b:0069 l:000068 d:000068 METHOD /Users/
chrisbloom7/.rvm/gems/ruby-1.9.2-p180@myproj/gems/rspec-core-2.6.4/lib/
rspec/core/example_group.rb:290
c:0017 p:0096 s:0065 b:0065 l:000064 d:000064 METHOD /Users/
chrisbloom7/.rvm/gems/ruby-1.9.2-p180@myproj/gems/rspec-core-2.6.4/lib/
rspec/core/example_group.rb:262
c:0016 p:0014 s:0058 b:0058 l:000049 d:000057 BLOCK /Users/
chrisbloom7/.rvm/gems/ruby-1.9.2-p180@myproj/gems/rspec-core-2.6.4/lib/
rspec/core/example_group.rb:263
c:0015 p:---- s:0055 b:0055 l:000054 d:000054 FINISH
c:0014 p:---- s:0053 b:0053 l:000052 d:000052 CFUNC :map
c:0013 p:0113 s:0050 b:0050 l:000049 d:000049 METHOD /Users/
chrisbloom7/.rvm/gems/ruby-1.9.2-p180@myproj/gems/rspec-core-2.6.4/lib/
rspec/core/example_group.rb:263
c:0012 p:0014 s:0043 b:0043 l:000027 d:000042 BLOCK /Users/
chrisbloom7/.rvm/gems/ruby-1.9.2-p180@myproj/gems/rspec-core-2.6.4/lib/
rspec/core/command_line.rb:24
c:0011 p:---- s:0040 b:0040 l:000039 d:000039 FINISH
c:0010 p:---- s:0038 b:0038 l:000037 d:000037 CFUNC :map
c:0009 p:0035 s:0035 b:0035 l:000027 d:000034 BLOCK /Users/
chrisbloom7/.rvm/gems/ruby-1.9.2-p180@myproj/gems/rspec-core-2.6.4/lib/
rspec/core/command_line.rb:24
c:0008 p:0022 s:0032 b:0032 l:000031 d:000031 METHOD /Users/
chrisbloom7/.rvm/gems/ruby-1.9.2-p180@myproj/gems/rspec-core-2.6.4/lib/
rspec/core/reporter.rb:12
c:0007 p:0113 s:0028 b:0028 l:000027 d:000027 METHOD /Users/
chrisbloom7/.rvm/gems/ruby-1.9.2-p180@myproj/gems/rspec-core-2.6.4/lib/
rspec/core/command_line.rb:21
c:0006 p:0055 s:0023 b:0023 l:000022 d:000022 METHOD /Users/
chrisbloom7/.rvm/gems/ruby-1.9.2-p180@myproj/gems/rspec-core-2.6.4/lib/
rspec/core/runner.rb:80
c:0005 p:0050 s:0017 b:0017 l:000013 d:000016 BLOCK /Users/
chrisbloom7/.rvm/gems/ruby-1.9.2-p180@myproj/gems/rspec-core-2.6.4/lib/
rspec/core/runner.rb:66
c:0004 p:0084 s:0014 b:0014 l:000013 d:000013 METHOD /Users/
chrisbloom7/.rvm/gems/ruby-1.9.2-p180@myproj/gems/rspec-core-2.6.4/lib/
rspec/core/runner.rb:62
c:0003 p:0021 s:0007 b:0006 l:000968 d:000005 BLOCK /Users/
chrisbloom7/.rvm/gems/ruby-1.9.2-p180@myproj/gems/rspec-core-2.6.4/lib/
rspec/core/runner.rb:11
c:0002 p:---- s:0004 b:0004 l:000003 d:000003 FINISH
c:0001 p:0000 s:0002 b:0002 l:0014f8 d:0014f8 TOP
---------------------------
-- Ruby level backtrace information
----------------------------------------
/Users/chrisbloom7/.rvm/gems/ruby-1.9.2-p180@myproj/gems/rspec-
core-2.6.4/lib/rspec/core/runner.rb:11:in `block in autorun'
/Users/chrisbloom7/.rvm/gems/ruby-1.9.2-p180@myproj/gems/rspec-
core-2.6.4/lib/rspec/core/runner.rb:62:in `run'
/Users/chrisbloom7/.rvm/gems/ruby-1.9.2-p180@myproj/gems/rspec-
core-2.6.4/lib/rspec/core/runner.rb:66:in `rescue in run'
/Users/chrisbloom7/.rvm/gems/ruby-1.9.2-p180@myproj/gems/rspec-
core-2.6.4/lib/rspec/core/runner.rb:80:in `run_in_process'
/Users/chrisbloom7/.rvm/gems/ruby-1.9.2-p180@myproj/gems/rspec-
core-2.6.4/lib/rspec/core/command_line.rb:21:in `run'
/Users/chrisbloom7/.rvm/gems/ruby-1.9.2-p180@myproj/gems/rspec-
core-2.6.4/lib/rspec/core/reporter.rb:12:in `report'
/Users/chrisbloom7/.rvm/gems/ruby-1.9.2-p180@myproj/gems/rspec-
core-2.6.4/lib/rspec/core/command_line.rb:24:in `block in run'
/Users/chrisbloom7/.rvm/gems/ruby-1.9.2-p180@myproj/gems/rspec-
core-2.6.4/lib/rspec/core/command_line.rb:24:in `map'
/Users/chrisbloom7/.rvm/gems/ruby-1.9.2-p180@myproj/gems/rspec-
core-2.6.4/lib/rspec/core/command_line.rb:24:in `block (2 levels) in
run'
/Users/chrisbloom7/.rvm/gems/ruby-1.9.2-p180@myproj/gems/rspec-
core-2.6.4/lib/rspec/core/example_group.rb:263:in `run'
/Users/chrisbloom7/.rvm/gems/ruby-1.9.2-p180@myproj/gems/rspec-
core-2.6.4/lib/rspec/core/example_group.rb:263:in `map'
/Users/chrisbloom7/.rvm/gems/ruby-1.9.2-p180@myproj/gems/rspec-
core-2.6.4/lib/rspec/core/example_group.rb:263:in `block in run'
/Users/chrisbloom7/.rvm/gems/ruby-1.9.2-p180@myproj/gems/rspec-
core-2.6.4/lib/rspec/core/example_group.rb:262:in `run'
/Users/chrisbloom7/.rvm/gems/ruby-1.9.2-p180@myproj/gems/rspec-
core-2.6.4/lib/rspec/core/example_group.rb:290:in `run_examples'
/Users/chrisbloom7/.rvm/gems/ruby-1.9.2-p180@myproj/gems/rspec-
core-2.6.4/lib/rspec/core/example_group.rb:290:in `map'
/Users/chrisbloom7/.rvm/gems/ruby-1.9.2-p180@myproj/gems/rspec-
core-2.6.4/lib/rspec/core/example_group.rb:294:in `block in
run_examples'
/Users/chrisbloom7/.rvm/gems/ruby-1.9.2-p180@myproj/gems/rspec-
core-2.6.4/lib/rspec/core/example.rb:45:in `run'
/Users/chrisbloom7/.rvm/gems/ruby-1.9.2-p180@myproj/gems/rspec-
core-2.6.4/lib/rspec/core/example.rb:107:in `with_around_hooks'
/Users/chrisbloom7/.rvm/gems/ruby-1.9.2-p180@myproj/gems/rspec-
core-2.6.4/lib/rspec/core/example.rb:47:in `block in run'
/Users/chrisbloom7/.rvm/gems/ruby-1.9.2-p180@myproj/gems/rspec-
core-2.6.4/lib/rspec/core/example.rb:145:in `run_before_each'
/Users/chrisbloom7/.rvm/gems/ruby-1.9.2-p180@myproj/gems/rspec-
core-2.6.4/lib/rspec/core/example_group.rb:221:in `eval_before_eachs'
/Users/chrisbloom7/.rvm/gems/ruby-1.9.2-p180@myproj/gems/rspec-
core-2.6.4/lib/rspec/core/example_group.rb:221:in `each'
/Users/chrisbloom7/.rvm/gems/ruby-1.9.2-p180@myproj/gems/rspec-
core-2.6.4/lib/rspec/core/example_group.rb:221:in `block in
eval_before_eachs'
/Users/chrisbloom7/.rvm/gems/ruby-1.9.2-p180@myproj/gems/rspec-
core-2.6.4/lib/rspec/core/hooks.rb:116:in `run_hook'
/Users/chrisbloom7/.rvm/gems/ruby-1.9.2-p180@myproj/gems/rspec-
core-2.6.4/lib/rspec/core/hooks.rb:70:in `run_all'
/Users/chrisbloom7/.rvm/gems/ruby-1.9.2-p180@myproj/gems/rspec-
core-2.6.4/lib/rspec/core/hooks.rb:70:in `each'
/Users/chrisbloom7/.rvm/gems/ruby-1.9.2-p180@myproj/gems/rspec-
core-2.6.4/lib/rspec/core/hooks.rb:70:in `block in run_all'
/Users/chrisbloom7/.rvm/gems/ruby-1.9.2-p180@myproj/gems/rspec-
core-2.6.4/lib/rspec/core/hooks.rb:35:in `run_in'
/Users/chrisbloom7/.rvm/gems/ruby-1.9.2-p180@myproj/gems/rspec-
core-2.6.4/lib/rspec/core/hooks.rb:35:in `instance_eval'
/Users/chrisbloom7/Projects/myproj/spec/requests/users_links_spec.rb:
30:in `block (2 levels) in <top (required)>'
/Users/chrisbloom7/.rvm/gems/ruby-1.9.2-p180@myproj/gems/
factory_girl-1.3.3/lib/factory_girl.rb:20:in `Factory'
/Users/chrisbloom7/.rvm/gems/ruby-1.9.2-p180@myproj/gems/
factory_girl-1.3.3/lib/factory_girl/factory.rb:304:in
`default_strategy'
/Users/chrisbloom7/.rvm/gems/ruby-1.9.2-p180@myproj/gems/
factory_girl-1.3.3/lib/factory_girl/factory.rb:273:in `create'
/Users/chrisbloom7/.rvm/gems/ruby-1.9.2-p180@myproj/gems/
factory_girl-1.3.3/lib/factory_girl/factory.rb:330:in `run'
/Users/chrisbloom7/.rvm/gems/ruby-1.9.2-p180@myproj/gems/
factory_girl-1.3.3/lib/factory_girl/proxy/create.rb:6:in `result'
/Users/chrisbloom7/.rvm/gems/ruby-1.9.2-p180@myproj/gems/
activerecord-3.0.8/lib/active_record/transactions.rb:245:in `save!'
/Users/chrisbloom7/.rvm/gems/ruby-1.9.2-p180@myproj/gems/
activerecord-3.0.8/lib/active_record/transactions.rb:290:in
`with_transaction_returning_status'
/Users/chrisbloom7/.rvm/gems/ruby-1.9.2-p180@myproj/gems/
activerecord-3.0.8/lib/active_record/transactions.rb:207:in
`transaction'
/Users/chrisbloom7/.rvm/gems/ruby-1.9.2-p180@myproj/gems/
activerecord-3.0.8/lib/active_record/connection_adapters/abstract/
database_statements.rb:139:in `transaction'
/Users/chrisbloom7/.rvm/gems/ruby-1.9.2-p180@myproj/gems/
activerecord-3.0.8/lib/active_record/transactions.rb:292:in `block in
with_transaction_returning_status'
/Users/chrisbloom7/.rvm/gems/ruby-1.9.2-p180@myproj/gems/
activerecord-3.0.8/lib/active_record/transactions.rb:245:in `block in
save!'
/Users/chrisbloom7/.rvm/gems/ruby-1.9.2-p180@myproj/gems/
activerecord-3.0.8/lib/active_record/attribute_methods/dirty.rb:30:in
`save!'
/Users/chrisbloom7/.rvm/gems/ruby-1.9.2-p180@myproj/gems/
activerecord-3.0.8/lib/active_record/validations.rb:49:in `save!'
/Users/chrisbloom7/.rvm/gems/ruby-1.9.2-p180@myproj/gems/
activerecord-3.0.8/lib/active_record/persistence.rb:60:in `save!'
/Users/chrisbloom7/.rvm/gems/ruby-1.9.2-p180@myproj/gems/
activerecord-3.0.8/lib/active_record/callbacks.rb:273:in
`create_or_update'
/Users/chrisbloom7/.rvm/gems/ruby-1.9.2-p180@myproj/gems/
activesupport-3.0.8/lib/active_support/callbacks.rb:414:in
`_run_save_callbacks'
/Users/chrisbloom7/.rvm/gems/ruby-1.9.2-p180@myproj/gems/
activerecord-3.0.8/lib/active_record/callbacks.rb:273:in `block in
create_or_update'
/Users/chrisbloom7/.rvm/gems/ruby-1.9.2-p180@myproj/gems/
activerecord-3.0.8/lib/active_record/persistence.rb:250:in
`create_or_update'
/Users/chrisbloom7/.rvm/gems/ruby-1.9.2-p180@myproj/gems/
activerecord-3.0.8/lib/active_record/callbacks.rb:277:in `create'
/Users/chrisbloom7/.rvm/gems/ruby-1.9.2-p180@myproj/gems/
activesupport-3.0.8/lib/active_support/callbacks.rb:423:in
`_run_create_callbacks'
/Users/chrisbloom7/.rvm/gems/ruby-1.9.2-p180@myproj/gems/devise-1.3.4/
lib/devise/models/confirmable.rb:50:in
`send_confirmation_instructions'
/Users/chrisbloom7/.rvm/gems/ruby-1.9.2-p180@myproj/gems/
actionmailer-3.0.8/lib/action_mailer/base.rb:450:in `method_missing'
/Users/chrisbloom7/.rvm/gems/ruby-1.9.2-p180@myproj/gems/
actionmailer-3.0.8/lib/action_mailer/base.rb:450:in `new'
/Users/chrisbloom7/.rvm/gems/ruby-1.9.2-p180@myproj/gems/
actionmailer-3.0.8/lib/action_mailer/base.rb:466:in `initialize'
/Users/chrisbloom7/.rvm/gems/ruby-1.9.2-p180@myproj/gems/
actionmailer-3.0.8/lib/action_mailer/base.rb:471:in `process'
/Users/chrisbloom7/.rvm/gems/ruby-1.9.2-p180@myproj/gems/
actionmailer-3.0.8/lib/action_mailer/old_api.rb:75:in `process'
/Users/chrisbloom7/.rvm/gems/ruby-1.9.2-p180@myproj/gems/
actionpack-3.0.8/lib/abstract_controller/rendering.rb:41:in `process'
/Users/chrisbloom7/.rvm/gems/ruby-1.9.2-p180@myproj/gems/
actionpack-3.0.8/lib/abstract_controller/base.rb:119:in `process'
/Users/chrisbloom7/.rvm/gems/ruby-1.9.2-p180@myproj/gems/
actionpack-3.0.8/lib/abstract_controller/base.rb:150:in
`process_action'
/Users/chrisbloom7/.rvm/gems/ruby-1.9.2-p180@myproj/gems/devise-1.3.4/
app/mailers/devise/mailer.rb:6:in `confirmation_instructions'
/Users/chrisbloom7/.rvm/gems/ruby-1.9.2-p180@myproj/gems/devise-1.3.4/
app/mailers/devise/mailer.rb:21:in `setup_mail'
/Users/chrisbloom7/.rvm/gems/ruby-1.9.2-p180@myproj/gems/devise-1.3.4/
app/mailers/devise/mailer.rb:26:in `initialize_from_record'
/Users/chrisbloom7/.rvm/gems/ruby-1.9.2-p180@myproj/gems/devise-1.3.4/
lib/devise/mapping.rb:40:in `find_scope!'

On Jun 8, 12:00 pm, Harry Hornreich <harryh...@gmail.com> wrote:

MS

unread,
Oct 10, 2011, 4:32:02 PM10/10/11
to plataforma...@googlegroups.com
I encountered the same "Could not find a valid mapping for #<User>" error trying to run factory girl with devise, rspec, spork and guard. My theory is that Spork's trap method kept models from being loaded in the proper order for factory girl, and then when factory girl tried to map the definitions it can't find any models that match (because they're not loaded yet). I solved it by adding 

load "#{Rails.root}/app/models/user.rb"

to the user factory definition (don't use require or model changes won't be reloaded by spork). I also posted my spec helper file to https://gist.github.com/1276397 Any suggestions for this file would be appreciated. 
Reply all
Reply to author
Forward
0 new messages