Hi,
I'm just getting started with sidekiq, migrating a rails 3.2 project from delayed job. I tried to follow the wiki, but am still unclear on a couple of things:
1) The magic class.delay.method should work for both classes and instances, right?
2) Do I need to explicitly require 'sidekiq' (or include something-or-other) in various places, such as in files where I define classes (or the classes themselves) with which I want the magic .delay. to work? As it is, I only have the string "sidekiq" mentioned in the Gemfile{,.lock} and config/initializers/sidekiq.rb.
3) This will possibly be resolved based on the answers to the above questions, but my trials are failing with "
Thank you for any pointers or assistance,
Andy
If you have both sidekiq and dj required in the same process, it's possible they are stepping on each others toes. I haven't seen .delay return an empty string before.
If you post your initializer and anything else Sidekiq-related, I can validate them for you.
1) yes, but not recommanded
2) no, bundler require the gem.
3) you have to remove delayed job, post your initialized and gem file.
Whoops, that was a markdown mistake -- it didn't return an empty string.
<NoMethodError: undefined method `delay' for #<myclass>
did you restart your server after adding the gem ?
@seuros yes, it was a fresh deploy, new branch and everything
Here's my initializer:
Sidekiq.configure_server do |config|
config.redis = { :url => 'redis://REDIS_HOST:6379/12', :namespace => 'sidekiq' }
end
Sidekiq.configure_client do |config|
config.redis = { :url => 'redis://REDIS_HOST:6379/12', :namespace => 'sidekiq' }
end
REDIS_HOST gets written as "localhost" for these tests.
Here's my Gemfile:
source 'http://rubygems.org'
ruby '2.0.0'
gem 'rails', '3.2.17'
gem 'rake', '0.9.6'
gem 'mysql2'
gem 'devise', '1.2.1'
gem "oa-oauth", '~> 0.3.2', :require => "omniauth/oauth", :git => 'git://github.com/yanks/oa-oauth.git'
# Salesforce API (uses branch where gemspec multipart-post dependency
# was changed to 1.0.1 to work with other gems listed here)
gem 'databasedotcom'#, :git => 'https://github.com/yanks/databasedotcom.git', :tag => 'fb-0.1.1'
gem 'salesforce_bulk', :git => 'https://github.com/javierjulio/salesforce_bulk.git', :tag => 'fb-0.3.0'
gem 'twitter_oauth'
gem "will_paginate"#, '3.0.pre2'
gem 'rmagick'
gem 'sidekiq', '>= 3.2.1'
gem 'sinatra', '>= 1.3.0', :require => nil
gem 'slim'
gem 'daemons'
gem 'redis', "~> 3.0.1"
gem 'connection_pool'
gem 'braintree'
gem 'jquery-rails'
gem 'ruby_protobuf'
gem 'fb_graph', '2.5.9'
gem 'yard'
gem 'dalli'
gem 'simple-navigation'
gem 'haml'
gem 'postmark-rails', '0.5.1'
gem 'useragent', '0.4.10'
gem 'rest-client'
gem 'kramdown'
gem 'bitly'
gem 'aws-ses', :require => 'aws/ses'
gem 'aws-s3'
gem 'rabl', :git => 'git://github.com/nesquena/rabl.git', :ref => '4f951d91df9d49538a39da0a4904e6e9167f37bb'
gem 'jsonify'
gem 'json'
gem 'oj'
gem 'carrierwave'
gem 'fog', '~> 1.3.1'
gem 'jwt', '~> 0.1.5'
gem 'google-api-client'#, :git => "git://github.com/google/google-api-ruby-client.git", :require => 'google/api_client'
gem 'active_scaffold'
group :cron do
#gem 'sidekiq'
end
gem 'sass-rails', '~> 3.2.3'
# Needed for the new asset pipeline
group :assets do
gem 'coffee-rails', '~> 3.2.1'
gem 'uglifier', '>= 1.0.3'
end
gem "schema_plus"
gem 'log4r'
group :production do
gem 'newrelic_rpm', '>= 3.7.3.199'
end
group :test do
# Mocking and Stubbing library
gem 'mocha', :require => false # this needs to be required in test_helper.rb to avoid problems
gem 'machinist', '>= 2.0.0.beta2'
gem 'factory_girl_rails'
gem 'timecop'
gem 'database_cleaner'
end
# To use debugger (ruby-debug for Ruby 1.8.7+, ruby-debug19 for Ruby 1.9.2+, debugger for Ruby 1.9.3+)
group :development do
#gem 'debugger'
gem 'rack-mini-profiler'
gem "growl"
gem "guard"
gem "guard-bundler"
gem "guard-rspec"
gem "guard-zeus"
gem "rb-inotify", require: false
gem "rb-fsevent", require: false
gem "rb-fchange", require: false
end
group :development, :test do
gem 'resque'
gem 'rspec-rails'
#gem 'guard-rspec'
#gem 'ruby-debug'
gem 'pry'
end
# Date.parse functionality changed between Ruby 1.8 and 1.9
# In 1.8, it supported MM/DD/YYYY, but in 1.9+, it now parses such strings as DD/WW/YYYY
# This gem maintains the old parsing functionality
gem 'american_date'
Please give the exact error message and backtrace.
remove resque and new_relic and try again these 2 gems are know to cause problems with sidekiq,
@seuros alright, I'll try to give that a shot if I can, but right now resque is part of our project.
Here's the error:
[][834][FitnessBuilder]|[RAILS][2014 07 16 16:58:37.924 +0000][EXCEPTION]: msg:undefined method `delay' for #<SharedWorkoutHelper:0x0000000ae9a458> - inspect:#<NoMethodError: undefined method `delay' for #<SharedWorkoutHelper:0x0000000ae9a458>> - backtrace:["/home/webapps/fitnessbuilder/releases/20140716164932/app/controllers/shared_workout_service_controller.rb:213:in
`shareWorkout'","/home/webapps/fitnessbuilder/releases/20140716164932/vendor/bundle/ruby/2.0.0/gems/actionpack-3.2.17/lib/action_controller/metal/implicit_render.rb:4:in
`send_action'","/home/webapps/fitnessbuilder/releases/20140716164932/vendor/bundle/ruby/2.0.0/gems/actionpack-3.2.17/lib/abstract_controller/base.rb:167:in
`process_action'","/home/webapps/fitnessbuilder/releases/20140716164932/vendor/bundle/ruby/2.0.0/gems/actionpack-3.2.17/lib/action_controller/metal/rendering.rb:10:in
`process_action'","/home/webapps/fitnessbuilder/releases/20140716164932/vendor/bundle/ruby/2.0.0/gems/actionpack-3.2.17/lib/abstract_controller/callbacks.rb:18:in
`block in process_action'","/home/webapps/fitnessbuilder/releases/20140716164932/vendor/bundle/ruby/2.0.0/gems/activesupport-3.2.17/lib/active_support/callbacks.rb:502:in
`_run__4088931082144133063__process_action__4035256529426083461__callbacks'","/home/webapps/fitnessbuilder/releases/20140716164932/vendor/bundle/ruby/2.0.0/gems/activesupport-3.2.17/lib/active_support/callbacks.rb:405:in
`__run_callback'","/home/webapps/fitnessbuilder/releases/20140716164932/vendor/bundle/ruby/2.0.0/gems/activesupport-3.2.17/lib/active_support/callbacks.rb:385:in
`_run_process_action_callbacks'","/home/webapps/fitnessbuilder/releases/20140716164932/vendor/bundle/ruby/2.0.0/gems/activesupport-3.2.17/lib/active_support/callbacks.rb:81:in
`run_callbacks'","/home/webapps/fitnessbuilder/releases/20140716164932/vendor/bundle/ruby/2.0.0/gems/actionpack-3.2.17/lib/abstract_controller/callbacks.rb:17:in
`process_action'","/home/webapps/fitnessbuilder/releases/20140716164932/vendor/bundle/ruby/2.0.0/gems/actionpack-3.2.17/lib/action_controller/metal/rescue.rb:29:in
`process_action'","/home/webapps/fitnessbuilder/releases/20140716164932/vendor/bundle/ruby/2.0.0/gems/actionpack-3.2.17/lib/action_controller/metal/instrumentation.rb:30:in
`block in process_action'","/home/webapps/fitnessbuilder/releases/20140716164932/vendor/bundle/ruby/2.0.0/gems/activesupport-3.2.17/lib/active_support/notifications.rb:123:in
`block in instrument'","/home/webapps/fitnessbuilder/releases/20140716164932/vendor/bundle/ruby/2.0.0/gems/activesupport-3.2.17/lib/active_support/notifications/instrumenter.rb:20:in
`instrument'","/home/webapps/fitnessbuilder/releases/20140716164932/vendor/bundle/ruby/2.0.0/gems/activesupport-3.2.17/lib/active_support/notifications.rb:123:in
`instrument'","/home/webapps/fitnessbuilder/releases/20140716164932/vendor/bundle/ruby/2.0.0/gems/actionpack-3.2.17/lib/action_controller/metal/instrumentation.rb:29:in
`process_action'","/home/webapps/fitnessbuilder/releases/20140716164932/vendor/bundle/ruby/2.0.0/gems/actionpack-3.2.17/lib/action_controller/metal/params_wrapper.rb:207:in
`process_action'","/home/webapps/fitnessbuilder/releases/20140716164932/vendor/bundle/ruby/2.0.0/gems/activerecord-3.2.17/lib/active_record/railties/controller_runtime.rb:18:in
`process_action'","/home/webapps/fitnessbuilder/releases/20140716164932/vendor/bundle/ruby/2.0.0/gems/actionpack-3.2.17/lib/abstract_controller/base.rb:121:in
`process'","/home/webapps/fitnessbuilder/releases/20140716164932/vendor/bundle/ruby/2.0.0/gems/actionpack-3.2.17/lib/abstract_controller/rendering.rb:45:in
`process'","/home/webapps/fitnessbuilder/releases/20140716164932/vendor/plugins/rubyamf_plugin/app/actions.rb:159:in
`invoke'","/home/webapps/fitnessbuilder/releases/20140716164932/vendor/plugins/rubyamf_plugin/app/actions.rb:89:in
`run'","/home/webapps/fitnessbuilder/releases/20140716164932/vendor/plugins/rubyamf_plugin/app/filters.rb:68:in
`block (3 levels) in run'","/usr/lib/ruby/2.0.0/benchmark.rb:296:in
`realtime'","/home/webapps/fitnessbuilder/releases/20140716164932/vendor/plugins/rubyamf_plugin/app/filters.rb:68:in
`block (2 levels) in run'","/home/webapps/fitnessbuilder/releases/20140716164932/vendor/plugins/rubyamf_plugin/app/filters.rb:65:in
`each'","/home/webapps/fitnessbuilder/releases/20140716164932/vendor/plugins/rubyamf_plugin/app/filters.rb:65:in
`block in run'","/home/webapps/fitnessbuilder/releases/20140716164932/vendor/plugins/rubyamf_plugin/app/filters.rb:63:in
`upto'","/home/webapps/fitnessbuilder/releases/20140716164932/vendor/plugins/rubyamf_plugin/app/filters.rb:63:in
`run'","/home/webapps/fitnessbuilder/releases/20140716164932/vendor/plugins/rubyamf_plugin/app/filters.rb:12:in
`block in run'","/home/webapps/fitnessbuilder/releases/20140716164932/vendor/plugins/rubyamf_plugin/app/filters.rb:11:in
`each'","/home/webapps/fitnessbuilder/releases/20140716164932/vendor/plugins/rubyamf_plugin/app/filters.rb:11:in
`run'","/home/webapps/fitnessbuilder/releases/20140716164932/vendor/plugins/rubyamf_plugin/app/rails_gateway.rb:28:in
`service'","/home/webapps/fitnessbuilder/releases/20140716164932/app/controllers/rubyamf_controller.rb:18:in
`gateway'","/home/webapps/fitnessbuilder/releases/20140716164932/vendor/bundle/ruby/2.0.0/gems/actionpack-3.2.17/lib/action_controller/metal/implicit_render.rb:4:in
`send_action'","/home/webapps/fitnessbuilder/releases/20140716164932/vendor/bundle/ruby/2.0.0/gems/actionpack-3.2.17/lib/abstract_controller/base.rb:167:in
`process_action'","/home/webapps/fitnessbuilder/releases/20140716164932/vendor/bundle/ruby/2.0.0/gems/actionpack-3.2.17/lib/action_controller/metal/rendering.rb:10:in
`process_action'","/home/webapps/fitnessbuilder/releases/20140716164932/vendor/bundle/ruby/2.0.0/gems/actionpack-3.2.17/lib/abstract_controller/callbacks.rb:18:in
`block in process_action'","/home/webapps/fitnessbuilder/releases/20140716164932/vendor/bundle/ruby/2.0.0/gems/activesupport-3.2.17/lib/active_support/callbacks.rb:436:in
`_run__2691876145440043508__process_action__3369028741672517553__callbacks'","/home/webapps/fitnessbuilder/releases/20140716164932/vendor/bundle/ruby/2.0.0/gems/activesupport-3.2.17/lib/active_support/callbacks.rb:405:in
`__run_callback'","/home/webapps/fitnessbuilder/releases/20140716164932/vendor/bundle/ruby/2.0.0/gems/activesupport-3.2.17/lib/active_support/callbacks.rb:385:in
`_run_process_action_callbacks'","/home/webapps/fitnessbuilder/releases/20140716164932/vendor/bundle/ruby/2.0.0/gems/activesupport-3.2.17/lib/active_support/callbacks.rb:81:in
`run_callbacks'","/home/webapps/fitnessbuilder/releases/20140716164932/vendor/bundle/ruby/2.0.0/gems/actionpack-3.2.17/lib/abstract_controller/callbacks.rb:17:in
`process_action'","/home/webapps/fitnessbuilder/releases/20140716164932/vendor/bundle/ruby/2.0.0/gems/actionpack-3.2.17/lib/action_controller/metal/rescue.rb:29:in
`process_action'","/home/webapps/fitnessbuilder/releases/20140716164932/vendor/bundle/ruby/2.0.0/gems/actionpack-3.2.17/lib/action_controller/metal/instrumentation.rb:30:in
`block in process_action'","/home/webapps/fitnessbuilder/releases/20140716164932/vendor/bundle/ruby/2.0.0/gems/activesupport-3.2.17/lib/active_support/notifications.rb:123:in
`block in instrument'","/home/webapps/fitnessbuilder/releases/20140716164932/vendor/bundle/ruby/2.0.0/gems/activesupport-3.2.17/lib/active_support/notifications/instrumenter.rb:20:in
`instrument'","/home/webapps/fitnessbuilder/releases/20140716164932/vendor/bundle/ruby/2.0.0/gems/activesupport-3.2.17/lib/active_support/notifications.rb:123:in
`instrument'","/home/webapps/fitnessbuilder/releases/20140716164932/vendor/bundle/ruby/2.0.0/gems/actionpack-3.2.17/lib/action_controller/metal/instrumentation.rb:29:in
`process_action'","/home/webapps/fitnessbuilder/releases/20140716164932/vendor/bundle/ruby/2.0.0/gems/actionpack-3.2.17/lib/action_controller/metal/params_wrapper.rb:207:in
`process_action'","/home/webapps/fitnessbuilder/releases/20140716164932/vendor/bundle/ruby/2.0.0/gems/activerecord-3.2.17/lib/active_record/railties/controller_runtime.rb:18:in
`process_action'","/home/webapps/fitnessbuilder/releases/20140716164932/vendor/bundle/ruby/2.0.0/gems/actionpack-3.2.17/lib/abstract_controller/base.rb:121:in
`process'","/home/webapps/fitnessbuilder/releases/20140716164932/vendor/bundle/ruby/2.0.0/gems/actionpack-3.2.17/lib/abstract_controller/rendering.rb:45:in
`process'","/home/webapps/fitnessbuilder/releases/20140716164932/vendor/bundle/ruby/2.0.0/gems/actionpack-3.2.17/lib/action_controller/metal.rb:203:in
`dispatch'","/home/webapps/fitnessbuilder/releases/20140716164932/vendor/bundle/ruby/2.0.0/gems/actionpack-3.2.17/lib/action_controller/metal/rack_delegation.rb:14:in
`dispatch'","/home/webapps/fitnessbuilder/releases/20140716164932/vendor/bundle/ruby/2.0.0/gems/actionpack-3.2.17/lib/action_controller/metal.rb:246:in
`block in action'","/home/webapps/fitnessbuilder/releases/20140716164932/vendor/bundle/ruby/2.0.0/gems/actionpack-3.2.17/lib/action_dispatch/routing/route_set.rb:73:in
`call'","/home/webapps/fitnessbuilder/releases/20140716164932/vendor/bundle/ruby/2.0.0/gems/actionpack-3.2.17/lib/action_dispatch/routing/route_set.rb:73:in
`dispatch'","/home/webapps/fitnessbuilder/releases/20140716164932/vendor/bundle/ruby/2.0.0/gems/actionpack-3.2.17/lib/action_dispatch/routing/route_set.rb:36:in
`call'","/home/webapps/fitnessbuilder/releases/20140716164932/vendor/bundle/ruby/2.0.0/gems/journey-1.0.4/lib/journey/router.rb:68:in
`block in call'","/home/webapps/fitnessbuilder/releases/20140716164932/vendor/bundle/ruby/2.0.0/gems/journey-1.0.4/lib/journey/router.rb:56:in
`each'","/home/webapps/fitnessbuilder/releases/20140716164932/vendor/bundle/ruby/2.0.0/gems/journey-1.0.4/lib/journey/router.rb:56:in
`call'","/home/webapps/fitnessbuilder/releases/20140716164932/vendor/bundle/ruby/2.0.0/gems/actionpack-3.2.17/lib/action_dispatch/routing/route_set.rb:608:in
`call'","/home/webapps/fitnessbuilder/releases/20140716164932/vendor/bundle/ruby/2.0.0/gems/oa-core-0.3.2/lib/omniauth/strategy.rb:44:in
`call!'","/home/webapps/fitnessbuilder/releases/20140716164932/vendor/bundle/ruby/2.0.0/gems/oa-core-0.3.2/lib/omniauth/strategy.rb:30:in
`call'","/home/webapps/fitnessbuilder/releases/20140716164932/vendor/bundle/ruby/2.0.0/gems/warden-1.0.6/lib/warden/manager.rb:35:in
`block in call'","/home/webapps/fitnessbuilder/releases/20140716164932/vendor/bundle/ruby/2.0.0/gems/warden-1.0.6/lib/warden/manager.rb:34:in
`catch'","/home/webapps/fitnessbuilder/releases/20140716164932/vendor/bundle/ruby/2.0.0/gems/warden-1.0.6/lib/warden/manager.rb:34:in
`call'","/home/webapps/fitnessbuilder/releases/20140716164932/vendor/bundle/ruby/2.0.0/gems/actionpack-3.2.17/lib/action_dispatch/middleware/best_standards_support.rb:17:in
`call'","/home/webapps/fitnessbuilder/releases/20140716164932/vendor/bundle/ruby/2.0.0/gems/rack-1.4.5/lib/rack/etag.rb:23:in
`call'","/home/webapps/fitnessbuilder/releases/20140716164932/vendor/bundle/ruby/2.0.0/gems/rack-1.4.5/lib/rack/conditionalget.rb:35:in
`call'","/home/webapps/fitnessbuilder/releases/20140716164932/vendor/bundle/ruby/2.0.0/gems/actionpack-3.2.17/lib/action_dispatch/middleware/head.rb:14:in
`call'","/home/webapps/fitnessbuilder/releases/20140716164932/vendor/bundle/ruby/2.0.0/gems/actionpack-3.2.17/lib/action_dispatch/middleware/params_parser.rb:21:in
`call'","/home/webapps/fitnessbuilder/releases/20140716164932/vendor/bundle/ruby/2.0.0/gems/actionpack-3.2.17/lib/action_dispatch/middleware/flash.rb:242:in
`call'","/home/webapps/fitnessbuilder/releases/20140716164932/vendor/bundle/ruby/2.0.0/gems/rack-1.4.5/lib/rack/session/abstract/id.rb:210:in
`context'","/home/webapps/fitnessbuilder/releases/20140716164932/vendor/bundle/ruby/2.0.0/gems/rack-1.4.5/lib/rack/session/abstract/id.rb:205:in
`call'","/home/webapps/fitnessbuilder/releases/20140716164932/vendor/bundle/ruby/2.0.0/gems/actionpack-3.2.17/lib/action_dispatch/middleware/cookies.rb:341:in
`call'","/home/webapps/fitnessbuilder/releases/20140716164932/vendor/bundle/ruby/2.0.0/gems/activerecord-3.2.17/lib/active_record/query_cache.rb:64:in
`call'","/home/webapps/fitnessbuilder/releases/20140716164932/vendor/bundle/ruby/2.0.0/gems/activerecord-3.2.17/lib/active_record/connection_adapters/abstract/connection_pool.rb:479:in
`call'","/home/webapps/fitnessbuilder/releases/20140716164932/vendor/bundle/ruby/2.0.0/gems/actionpack-3.2.17/lib/action_dispatch/middleware/callbacks.rb:28:in
`block in call'","/home/webapps/fitnessbuilder/releases/20140716164932/vendor/bundle/ruby/2.0.0/gems/activesupport-3.2.17/lib/active_support/callbacks.rb:405:in
`_run__3079531013208049941__call__3870299286522691803__callbacks'","/home/webapps/fitnessbuilder/releases/20140716164932/vendor/bundle/ruby/2.0.0/gems/activesupport-3.2.17/lib/active_support/callbacks.rb:405:in
`__run_callback'","/home/webapps/fitnessbuilder/releases/20140716164932/vendor/bundle/ruby/2.0.0/gems/activesupport-3.2.17/lib/active_support/callbacks.rb:385:in
`_run_call_callbacks'","/home/webapps/fitnessbuilder/releases/20140716164932/vendor/bundle/ruby/2.0.0/gems/activesupport-3.2.17/lib/active_support/callbacks.rb:81:in
`run_callbacks'","/home/webapps/fitnessbuilder/releases/20140716164932/vendor/bundle/ruby/2.0.0/gems/actionpack-3.2.17/lib/action_dispatch/middleware/callbacks.rb:27:in
`call'","/home/webapps/fitnessbuilder/releases/20140716164932/vendor/bundle/ruby/2.0.0/gems/rack-1.4.5/lib/rack/sendfile.rb:102:in
`call'","/home/webapps/fitnessbuilder/releases/20140716164932/vendor/bundle/ruby/2.0.0/gems/actionpack-3.2.17/lib/action_dispatch/middleware/remote_ip.rb:31:in
`call'","/home/webapps/fitnessbuilder/releases/20140716164932/vendor/bundle/ruby/2.0.0/gems/actionpack-3.2.17/lib/action_dispatch/middleware/debug_exceptions.rb:16:in
`call'","/home/webapps/fitnessbuilder/releases/20140716164932/vendor/bundle/ruby/2.0.0/gems/actionpack-3.2.17/lib/action_dispatch/middleware/show_exceptions.rb:56:in
`call'","/home/webapps/fitnessbuilder/releases/20140716164932/vendor/bundle/ruby/2.0.0/gems/railties-3.2.17/lib/rails/rack/logger.rb:32:in
`call_app'","/home/webapps/fitnessbuilder/releases/20140716164932/vendor/bundle/ruby/2.0.0/gems/railties-3.2.17/lib/rails/rack/logger.rb:18:in
`call'","/home/webapps/fitnessbuilder/releases/20140716164932/vendor/bundle/ruby/2.0.0/gems/actionpack-3.2.17/lib/action_dispatch/middleware/request_id.rb:22:in
`call'","/home/webapps/fitnessbuilder/releases/20140716164932/vendor/bundle/ruby/2.0.0/gems/rack-1.4.5/lib/rack/methodoverride.rb:21:in
`call'","/home/webapps/fitnessbuilder/releases/20140716164932/vendor/bundle/ruby/2.0.0/gems/rack-1.4.5/lib/rack/runtime.rb:17:in
`call'","/home/webapps/fitnessbuilder/releases/20140716164932/vendor/bundle/ruby/2.0.0/gems/activesupport-3.2.17/lib/active_support/cache/strategy/local_cache.rb:72:in
`call'","/home/webapps/fitnessbuilder/releases/20140716164932/vendor/bundle/ruby/2.0.0/gems/rack-cache-1.2/lib/rack/cache/context.rb:136:in
`forward'","/home/webapps/fitnessbuilder/releases/20140716164932/vendor/bundle/ruby/2.0.0/gems/rack-cache-1.2/lib/rack/cache/context.rb:143:in
`pass'","/home/webapps/fitnessbuilder/releases/20140716164932/vendor/bundle/ruby/2.0.0/gems/rack-cache-1.2/lib/rack/cache/context.rb:155:in
`invalidate'","/home/webapps/fitnessbuilder/releases/20140716164932/vendor/bundle/ruby/2.0.0/gems/rack-cache-1.2/lib/rack/cache/context.rb:71:in
`call!'","/home/webapps/fitnessbuilder/releases/20140716164932/vendor/bundle/ruby/2.0.0/gems/rack-cache-1.2/lib/rack/cache/context.rb:51:in
`call'","/home/webapps/fitnessbuilder/releases/20140716164932/vendor/bundle/ruby/2.0.0/gems/railties-3.2.17/lib/rails/engine.rb:484:in
`call'","/home/webapps/fitnessbuilder/releases/20140716164932/vendor/bundle/ruby/2.0.0/gems/railties-3.2.17/lib/rails/application.rb:231:in
`call'","/home/webapps/fitnessbuilder/releases/20140716164932/vendor/bundle/ruby/2.0.0/gems/railties-3.2.17/lib/rails/railtie/configurable.rb:30:in
`method_missing'","/usr/lib/ruby/vendor_ruby/phusion_passenger/rack/thread_handler_extension.rb:58:in
`process_request'","/usr/lib/ruby/vendor_ruby/phusion_passenger/request_handler/thread_handler.rb:126:in
`accept_and_process_next_request'","/usr/lib/ruby/vendor_ruby/phusion_passenger/request_handler/thread_handler.rb:94:in
`main_loop'","/usr/lib/ruby/vendor_ruby/phusion_passenger/request_handler.rb:471:in
`block (3 levels) in start_threads'"]
@seuros It's probably not a good idea to tell people to remove gems from their app unless we have data that leads us to believe it's a possible cause.
@AndydeCleyre Can you pop into rails console and execute a delay or a sidekiq_delay or do you get the same error?
SharedWorkoutHelper.delay.foo(1,2,3) # method doesn't matter
SharedWorkoutHelper.sidekiq_delay.foo(1,2,3)
Ok. I just said that so we can isolate the problem.
The delay extension is well tested, so something is conflicting.
Running in the passenger irb console and trying a class method of SharedWorkoutHelper worked without the delay, but with the delay options couldn't find the method anymore. sidekiq log:
2014-07-21T21:34:06.209Z 24049 TID-14cjcw WARN: {"retry"=>true, "queue"=>"default", "class"=>"Sidekiq::Extensions::DelayedClass", "args"=>["---\n- !ruby/class 'SharedWorkoutHelper'\n- :and
y\n- []\n"], "jid"=>"48b72148c0eb7a97d8736591", "enqueued_at"=>1405978446.1958733, "error_message"=>"undefined method `andy' for SharedWorkoutHelper:Class", "error_class"=>"NoMethodError",
"failed_at"=>1405978446.2090428, "retry_count"=>0}
2014-07-21T21:34:06.210Z 24049 TID-14cjcw WARN: undefined method `andy' for SharedWorkoutHelper:Class
2014-07-21T21:34:06.210Z 24049 TID-14cjcw WARN: /home/webapps/fitnessbuilder/releases/20140721210509/vendor/bundle/ruby/2.0.0/gems/sidekiq-3.2.1/lib/sidekiq/extensions/class_methods.rb:17:
in `perform'
Well, yeah, that's to be expected: you probably don't have an andy method on the class. That looks totally normal.
So what happens when you run the delay in the console with the actual method you want to delay?
I made the andy method for this test. It was nice to have a class method that barely did anything and took no arguments, and it does work without the delay.
Oh -- I just bounced the sidekiq process after the change, and that delay syntax works on the new class method.
Likely that you didn't restart Sidekiq then.
You can see our confusion then: delay works fine in the console but not in production in your app. Sounds like an environmental problem.
Well this was with a class method, so that's a difference.
Just confirmed, not working with instance methods in the console.
Exception NoMethodError in passenger-irb (undefined method `delay' for #<SharedWorkoutHelper:0x000000086e5c00>) (process 25062, thread 0x0000000c7adbe8(IRB worker))
Ah. Instance methods only work on ActiveRecord::Base instances.
OK. Thanks.
@mperham is there any way by which delay instance method to get work with normal class objects(not active record)?
Nope. Jobs should be simple arguments, not complex stateful Ruby objects.
On Feb 27, 2015, at 19:40, Sachin Singh [email protected] wrote:
@mperham is there any way by which delay instance method to get with normal class objects(not active record)?
—
Reply to this email directly or view it on GitHub.
For anyone who finds this via google: I had this issue recently and solved it with Sidekiq::Extensions.enable_delay! in my initializer.
Thank you @codeodor , you save me more time!
thank you @codeodor, i had the same problem switching from rails 4.x to 5.x. For people like me who are switching rails version using sidekiq inside, here is Sidekiq documentation => https://github.com/mperham/sidekiq/blob/master/5.0-Upgrade.md
Delay is not a method on everything. Classes only.
On Mar 5, 2018, at 12:00, Richard McSharry notifications@github.com wrote:
I've upgraded and added Sidekiq::Extensions.enable_delay! in my initializer, but now get this error:
NameError (undefined methoddelay' for module Kernel' Did you mean? delay_for):
Any ideas?—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub, or mute the thread.
@codeodor This presents when upgrading Sidekiq gem from 4 to 5x
Most helpful comment
For anyone who finds this via google: I had this issue recently and solved it with
Sidekiq::Extensions.enable_delay!in my initializer.