ruby on rails - Using Sidekiq to run more complex jobs -
edit: simple, forgot pass in site
, token
i have setup sidekiq , redis on heroku , able work simple jobs this:
order_worker.rb
class orderworker include sidekiq::worker sidekiq_options retry: false def perform(num_orders) x=3*5 end end
but more complex jobs keep failing according sidekiq web ui. need include shopifyapi , faker somehow? i'm not super clear on being run. entire app, gems , being created in worker dyno?
order_worker.rb
class orderworker include sidekiq::worker sidekiq_options retry: false def perform(num_orders) include shopifyapi include faker # initialize session session = shopifyapi::session.new(site, token) shopifyapi::base.activate_session(session) #create orders num_orders.times new_order = shopifyapi::order.new( :line_items => [ shopifyapi::lineitem.new( :quantity => 1, :variant_id => 25701798472 ) ] ) new_order.billing_address = shopifyapi::billingaddress.new(:name => faker::name.name, :zip => zips[rnd], :country => 'united states', :province => states[rnd], :address1 => faker::address.street_address, :city => faker::address.city) new_order.email = r.rand(36**2).to_s(36) + '@yahoo.com' new_order.created_at = faker::time.backward(390, :evening) new_order.total_price = faker::number.decimal(3, 2) new_order.save @errs = @errs + new_order.errors.full_messages sleep 0.03 end end end
notice orderworker#perform
instance method, means runs in scope of instances of orderworker
, not in class orderworker
itself. instances don't have method include
. belongs class. consequence you'll nomethoderror
s when task run.
p.s. seems don't have include
anything. remove include
s inside perform
make worker work.
Comments
Post a Comment