Skip to content
This repository

problem when associated class is using devise #21

Open
AlperKarapinar opened this Issue · 10 comments

6 participants

Alper Karapınar Marco aaronchi Joel Nimety Alexander Balashov Gavin Todes
Alper Karapınar

Hello,

I m getting method_missing for 'devise' method error when i try to archive a class which belongs to another devise class. When i comment out the association line everything is ok. How can i fix this? Thanks..

Marco
Collaborator

Same issue.

Alper Karapınar

Its sad that i had to give up trying to fix this. We were working on an urgent project last week. I will try fix this issue as soon as i ll have time. Thank you for your great work. Loved this gem.

Marco
Collaborator

@Winton (or anybody who want to help).

I'ill be glad to help in solving this issue.
here under a summarized trace of the app.

=> Rails 2.3.11 application starting on http://0.0.0.0:3000
/usr/lib/ruby/gems/1.8/gems/activerecord-2.3.11/lib/active_record/base.rb:1998:in `method_missing': undefined method `devise' for # (NoMethodError)
        from /home/marc-antoine/Developpement/RailsProjects/ako/app/models/user.rb:56
        from /usr/lib/ruby/gems/1.8/gems/activesupport-2.3.11/lib/active_support/dependencies.rb:406:in `load_without_new_constant_marking'
.........
        from /usr/lib/ruby/gems/1.8/gems/activesupport-2.3.11/lib/active_support/dependencies.rb:124:in `const_missing'
        from /usr/lib/ruby/gems/1.8/gems/activerecord-2.3.11/lib/active_record/base.rb:2234:in `compute_type'
        from /usr/lib/ruby/gems/1.8/gems/activerecord-2.3.11/lib/active_record/reflection.rb:156:in `send'
        from /usr/lib/ruby/gems/1.8/gems/activerecord-2.3.11/lib/active_record/reflection.rb:156:in `klass'
        from /usr/lib/ruby/gems/1.8/gems/acts_as_archive-0.4.0/lib/acts_as_archive.rb:130:in `acts_as_archive'
        from /usr/lib/ruby/gems/1.8/gems/acts_as_archive-0.4.0/lib/acts_as_archive.rb:129:in `each'
        from /usr/lib/ruby/gems/1.8/gems/acts_as_archive-0.4.0/lib/acts_as_archive.rb:129:in `acts_as_archive'
        from /usr/lib/ruby/gems/1.8/gems/acts_as_archive-0.4.0/lib/acts_as_archive.rb:56:in `load_from_yaml'
        from /usr/lib/ruby/gems/1.8/gems/acts_as_archive-0.4.0/lib/acts_as_archive.rb:55:in `each'

It seems AAA (acts_as_archive) load the Activerecord model before all the required method (here is a gem, Devise)
a workaround could be to check in the model if the library is defined.. not very fancy, and quite obtrusive
Other way could be to rescue in AAA all errors that could append during the loading... Not very safe

The only good solution is IMHO to ensure AAA is the last resource loaded in the app.
But I didn't figure out to do this (old Rails loading process or Bundler)

Marco
Collaborator

Hi everybody,
I fixed this issue, but it chunk the loading process.
Anybody with this issue would want to see my fork : https://github.com/elmatou/acts_as_archive/tree/manual-loading
check the readme for explanation. (this fork fix also issue 24)

Joel Nimety

You can also try the following if using Rails 3. This gets around the method missing issue but I'm now getting other errors (Possibly related to STI, still investigating)

in Gemfile:
gem 'acts_as_archive', :require => nil

in config/initializers/acts_as_archive.rb
Rails.application.config.after_initialize do
require 'acts_as_archive'
end

Marco
Collaborator

Hi Joel,
This did'nt worked for me (R1.8.9, r2.3.11+ Bundler ) that is why I forked the gem.
It looks like Bundler require the lib even when :require => nil is passed.
there is a common issue with polymorphic assocation maybe it is yours.
issue 24 + patch : #26

Joel Nimety

Thanks elmatou, indeed it was the polymorphic association issue.

Alexander Balashov

:require => nil works for me. Rails 3

Gavin Todes

@winton, can you merge elmatou's changes into master?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Something went wrong with that request. Please try again.