Mam dwa observery dla tej samej akcji after_destroy, dla tego samego obiektu folder, chcialbym zachowac to osobno ze wzledu na przejrzystosc kodu, ale nie wiem czy jest to dopuszczalne.
Co ciekawe na localu oba observery odpalają i akcje wykonuja sie (zadania delegowane do resque), na produkcji juz nie.
Natomiast w specu dla destroy przy próbie usuniecia obiektu dostaje:
RuntimeError: can’t modify frozen Hash
Część backtrace:
[quote]# /Users/artur/.rvm/gems/ruby-1.9.3-p0/gems/activerecord-3.1.3/lib/active_record/persistence.rb:239:in update' # /Users/artur/.rvm/gems/ruby-1.9.3-p0/gems/activerecord-3.1.3/lib/active_record/persistence.rb:239:in
block in reload’
# /Users/artur/.rvm/gems/ruby-1.9.3-p0/gems/activerecord-3.1.3/lib/active_record/identity_map.rb:72:in without' # /Users/artur/.rvm/gems/ruby-1.9.3-p0/gems/activerecord-3.1.3/lib/active_record/persistence.rb:237:in
reload’
# /Users/artur/.rvm/gems/ruby-1.9.3-p0/gems/activerecord-3.1.3/lib/active_record/attribute_methods/dirty.rb:44:in reload' # /Users/artur/.rvm/gems/ruby-1.9.3-p0/gems/activerecord-3.1.3/lib/active_record/autosave_association.rb:214:in
reload’
# ./spec/lib/dropbox_bridge_spec.rb:452:in block (3 levels) in <top (required)>' # /Users/artur/.rvm/gems/ruby-1.9.3-p0/gems/rspec-core-2.6.4/lib/rspec/core/example.rb:48:in
instance_eval’
# /Users/artur/.rvm/gems/ruby-1.9.3-p0/gems/rspec-core-2.6.4/lib/rspec/core/example.rb:48:in block in run' # /Users/artur/.rvm/gems/ruby-1.9.3-p0/gems/rspec-core-2.6.4/lib/rspec/core/example.rb:107:in
with_around_hooks’
# /Users/artur/.rvm/gems/ruby-1.9.3-p0/gems/rspec-core-2.6.4/lib/rspec/core/example.rb:45:in `run’[/quote]
chyba ze wrzuce @folder.destroy w blok lambda, wtedy test przechodzi. Tak przy okazji co dokladnie robi lambda w specach i czy nalezy ja stosowac ?