winton / acts_as_archive

Don't delete your records, move them to a different table
MIT License
372 stars 87 forks source link

problem when associated class is using devise #21

Open AlperKarapinar opened 13 years ago

AlperKarapinar commented 13 years ago

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..

elmatou commented 13 years ago

Same issue.

AlperKarapinar commented 13 years ago

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.

aaronchi commented 13 years ago

:(

elmatou commented 13 years ago

@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)

elmatou commented 13 years ago

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)

jnimety commented 13 years ago

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

elmatou commented 13 years ago

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 : https://github.com/winton/acts_as_archive/pull/26

jnimety commented 13 years ago

Thanks elmatou, indeed it was the polymorphic association issue.

divineforest commented 13 years ago

:require => nil works for me. Rails 3

GAV1N commented 12 years ago

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