impressionist
impressionist copied to clipboard
Error: undefined method `impressionist_counter_caching?' for Media:Module
Hello,
I am having issues adding impressionist to the top of the controller in Rails 4 as shown below
class IyaekoController < ApplicationController impressionist def myaction end end
The error is undefined method `impressionist_counter_caching?' for Media:Module
However when I use it in an action like below it works
def image @image = Media.find(params[:id]) @views = @image.impressions_count impressionist(@image) end
My model has is_impressionable :counter_cache => true
And my Media db has t.integer "impressions_count", default: 0
I am interested in applying impressionist to the whole controller so that I can save only unique impressions using the command impressionist :unique => [:impressionable_type, :impressionable_id, :session_hash]
Please you have any suggestions on this?
Thanks
Hi @aoredo , Could you provide a failing app please? Thanks and a happy new year.
Hello Antonio,
Happy New Year! Thanks a lot for the quick response. Do you want me to upload the whole app to Github or are there any particular sections of the app that you want to see?
Thanks On 1 Jan 2014 13:46, "Antonio C Nalesso Moreira" [email protected] wrote:
Hi @aoredo https://github.com/aoredo , Could you provide a failing app please? Thanks and a happy new year.
— Reply to this email directly or view it on GitHubhttps://github.com/charlotte-ruby/impressionist/issues/137#issuecomment-31423118 .
Hello,
I started a new app and it works perfectly but in my main app, i am still getting errors and this is the full framework trace below
impressionist (1.4.13) lib/impressionist/counter_cache.rb:52:in counter_caching?' impressionist (1.4.13) lib/impressionist/counter_cache.rb:22:in
valid_impressionable_class?'
impressionist (1.4.13) lib/impressionist/counter_cache.rb:18:in updatable?' impressionist (1.4.13) lib/impressionist/counter_cache.rb:14:in
impressionable_counter_cache_updatable?'
activesupport (4.0.1) lib/active_support/callbacks.rb:386:in _run__3119954978467361535__save__callbacks' activesupport (4.0.1) lib/active_support/callbacks.rb:80:in
run_callbacks'
activerecord (4.0.1) lib/active_record/callbacks.rb:302:in create_or_update' activerecord (4.0.1) lib/active_record/persistence.rb:106:in
save'
activerecord (4.0.1) lib/active_record/validations.rb:51:in save' activerecord (4.0.1) lib/active_record/attribute_methods/dirty.rb:32:in
save'
activerecord (4.0.1) lib/active_record/transactions.rb:270:in block (2 levels) in save' activerecord (4.0.1) lib/active_record/transactions.rb:326:in
block in with_transaction_returning_status'
activerecord (4.0.1) lib/active_record/connection_adapters/abstract/database_statements.rb:202:in block in transaction' activerecord (4.0.1) lib/active_record/connection_adapters/abstract/database_statements.rb:210:in
within_new_transaction'
activerecord (4.0.1) lib/active_record/connection_adapters/abstract/database_statements.rb:202:in transaction' activerecord (4.0.1) lib/active_record/transactions.rb:209:in
transaction'
activerecord (4.0.1) lib/active_record/transactions.rb:323:in with_transaction_returning_status' activerecord (4.0.1) lib/active_record/transactions.rb:270:in
block in save'
activerecord (4.0.1) lib/active_record/transactions.rb:281:in rollback_active_record_state!' activerecord (4.0.1) lib/active_record/transactions.rb:269:in
save'
activerecord (4.0.1) lib/active_record/persistence.rb:37:in create' impressionist (1.4.13) app/controllers/impressionist_controller.rb:36:in
impressionist_subapp_filter'
impressionist (1.4.13) app/controllers/impressionist_controller.rb:6:in block in impressionist' activesupport (4.0.1) lib/active_support/callbacks.rb:407:in
_run__712553158971473700__process_action__callbacks'
activesupport (4.0.1) lib/active_support/callbacks.rb:80:in run_callbacks' actionpack (4.0.1) lib/abstract_controller/callbacks.rb:17:in
process_action'
actionpack (4.0.1) lib/action_controller/metal/rescue.rb:29:in process_action' actionpack (4.0.1) lib/action_controller/metal/instrumentation.rb:31:in
block in process_action'
activesupport (4.0.1) lib/active_support/notifications.rb:159:in block in instrument' activesupport (4.0.1) lib/active_support/notifications/instrumenter.rb:20:in
instrument'
activesupport (4.0.1) lib/active_support/notifications.rb:159:in instrument' actionpack (4.0.1) lib/action_controller/metal/instrumentation.rb:30:in
process_action'
actionpack (4.0.1) lib/action_controller/metal/params_wrapper.rb:245:in process_action' activerecord (4.0.1) lib/active_record/railties/controller_runtime.rb:18:in
process_action'
actionpack (4.0.1) lib/abstract_controller/base.rb:136:in process' actionpack (4.0.1) lib/abstract_controller/rendering.rb:44:in
process'
actionpack (4.0.1) lib/action_controller/metal.rb:195:in dispatch' actionpack (4.0.1) lib/action_controller/metal/rack_delegation.rb:13:in
dispatch'
actionpack (4.0.1) lib/action_controller/metal.rb:231:in block in action' actionpack (4.0.1) lib/action_dispatch/routing/route_set.rb:80:in
call'
actionpack (4.0.1) lib/action_dispatch/routing/route_set.rb:80:in dispatch' actionpack (4.0.1) lib/action_dispatch/routing/route_set.rb:48:in
call'
actionpack (4.0.1) lib/action_dispatch/journey/router.rb:71:in block in call' actionpack (4.0.1) lib/action_dispatch/journey/router.rb:59:in
each'
actionpack (4.0.1) lib/action_dispatch/journey/router.rb:59:in call' actionpack (4.0.1) lib/action_dispatch/routing/route_set.rb:680:in
call'
omniauth (1.1.4) lib/omniauth/strategy.rb:184:in call!' omniauth (1.1.4) lib/omniauth/strategy.rb:164:in
call'
omniauth (1.1.4) lib/omniauth/builder.rb:49:in call' warden (1.2.3) lib/warden/manager.rb:35:in
block in call'
warden (1.2.3) lib/warden/manager.rb:34:in catch' warden (1.2.3) lib/warden/manager.rb:34:in
call'
rack (1.5.2) lib/rack/etag.rb:23:in call' rack (1.5.2) lib/rack/conditionalget.rb:25:in
call'
rack (1.5.2) lib/rack/head.rb:11:in call' actionpack (4.0.1) lib/action_dispatch/middleware/params_parser.rb:27:in
call'
actionpack (4.0.1) lib/action_dispatch/middleware/flash.rb:241:in call' rack (1.5.2) lib/rack/session/abstract/id.rb:225:in
context'
rack (1.5.2) lib/rack/session/abstract/id.rb:220:in call' actionpack (4.0.1) lib/action_dispatch/middleware/cookies.rb:486:in
call'
activerecord (4.0.1) lib/active_record/query_cache.rb:36:in call' activerecord (4.0.1) lib/active_record/connection_adapters/abstract/connection_pool.rb:626:in
call'
activerecord (4.0.1) lib/active_record/migration.rb:369:in call' actionpack (4.0.1) lib/action_dispatch/middleware/callbacks.rb:29:in
block in call'
activesupport (4.0.1) lib/active_support/callbacks.rb:373:in _run__2409783271485631515__call__callbacks' activesupport (4.0.1) lib/active_support/callbacks.rb:80:in
run_callbacks'
actionpack (4.0.1) lib/action_dispatch/middleware/callbacks.rb:27:in call' actionpack (4.0.1) lib/action_dispatch/middleware/reloader.rb:64:in
call'
actionpack (4.0.1) lib/action_dispatch/middleware/remote_ip.rb:76:in call' actionpack (4.0.1) lib/action_dispatch/middleware/debug_exceptions.rb:17:in
call'
actionpack (4.0.1) lib/action_dispatch/middleware/show_exceptions.rb:30:in call' railties (4.0.1) lib/rails/rack/logger.rb:38:in
call_app'
railties (4.0.1) lib/rails/rack/logger.rb:20:in block in call' activesupport (4.0.1) lib/active_support/tagged_logging.rb:67:in
block in tagged'
activesupport (4.0.1) lib/active_support/tagged_logging.rb:25:in tagged' activesupport (4.0.1) lib/active_support/tagged_logging.rb:67:in
tagged'
railties (4.0.1) lib/rails/rack/logger.rb:20:in call' actionpack (4.0.1) lib/action_dispatch/middleware/request_id.rb:21:in
call'
rack (1.5.2) lib/rack/methodoverride.rb:21:in call' rack (1.5.2) lib/rack/runtime.rb:17:in
call'
activesupport (4.0.1) lib/active_support/cache/strategy/local_cache.rb:83:in call' rack (1.5.2) lib/rack/lock.rb:17:in
call'
actionpack (4.0.1) lib/action_dispatch/middleware/static.rb:64:in call' rack (1.5.2) lib/rack/sendfile.rb:112:in
call'
railties (4.0.1) lib/rails/engine.rb:511:in call' railties (4.0.1) lib/rails/application.rb:97:in
call'
rack (1.5.2) lib/rack/lock.rb:17:in call' rack (1.5.2) lib/rack/content_length.rb:14:in
call'
rack (1.5.2) lib/rack/handler/webrick.rb:60:in service' /Users/aoredo/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/webrick/httpserver.rb:138:in
service'
/Users/aoredo/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/webrick/httpserver.rb:94:in run' /Users/aoredo/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/webrick/server.rb:295:in
block in start_thread'
Hello,
Not sure whether this will help, it looks like the problem is writing to PG database. It works well with SQLite but when i change to PG i get error. Please see below -
Started GET "/" for 127.0.0.1 at 2014-01-04 00:21:13 +0000 Processing by IyaekoController#index as HTML (0.2ms) BEGIN SQL (1.2ms) INSERT INTO "impressions" ("action_name", "controller_name", "created_at", "impressionable_type", "ip_address", "request_hash", "session_hash", "updated_at") VALUES ($1, $2, $3, $4, $5, $6, $7, $8) RETURNING "id" ["action_name", "index"], ["controller_name", "iyaeko"], ["created_at", Sat, 04 Jan 2014 00:21:13 UTC +00:00], ["impressionable_type", "Iyaeko"], ["ip_address", "127.0.0.1"], ["request_hash", "23c703ecbe3964c6410e32f23eca1cdf027f70b20362f6df5d4c62e28b4016b9"], ["session_hash", "d07573117b44ad3ad09f42bba731c8ce"], ["updated_at", Sat, 04 Jan 2014 00:21:13 UTC +00:00] ROLLBACK Completed 500 Internal Server Error in 9ms
NoMethodError (undefined method impressionist_counter_caching?' for Iyaeko:Module): impressionist (1.4.13) lib/impressionist/counter_cache.rb:52:in
counter_caching?'
impressionist (1.4.13) lib/impressionist/counter_cache.rb:22:in valid_impressionable_class?' impressionist (1.4.13) lib/impressionist/counter_cache.rb:18:in
updatable?'
I just started using the gem and got this exact error right off the bat. This is my error trace. Like @aoredo I have impressionist called out at the top of my controller, but my controller doesn't have a corresponding model tied to it.
How to fix it? override impressionist?
I too am seeing this error trying to call impressionist from the application_controller on a controller that doent have an assoc model. did you guys happen to find out anything? @tedma4 @qx ?
Just ran into this issue under the same circumstance--controller without an associated activerecord model. The quick fix I used was to put
Impressionist::CounterCache.class_eval do
def counter_caching?
impressionable_class.
impressionist_counter_caching? if impressionable_class.respond_to? :impressionist_counter_caching?
end
end
in config/initializers/impression.rb
.
This issue seems to happen when you have a controller with a correspondingly named class, but the class isn't db backed (for instance, a PORO object)
I basically did the same thing as @devonbush (thank you!)
Impressionist::CounterCache.class_eval do
def counter_caching?
return false if !impressionable_class.respond_to?(:impressionist_counter_caching?)
impressionable_class.impressionist_counter_caching?
end
end