【发布时间】:2017-03-26 21:49:57
【问题描述】:
edit:其实很简单,我忘了传入site和token
我已经在 Heroku 上设置了 Sidekiq 和 Redis,并且我能够让它用于像这样的非常简单的工作:
order_worker.rb
class OrderWorker
include Sidekiq::Worker
sidekiq_options retry: false
def perform(num_orders)
x=3*5
end
end
但根据 Sidekiq 网络用户界面,更复杂的作业不断失败。我是否需要以某种方式包含 ShopifyAPI 和 Faker?我不太清楚正在运行什么。整个应用程序,包括 gems 和所有都是在工作人员测功机中创建的吗?
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 do
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
【问题讨论】:
-
可能是perform方法中
include那几行,建议你把所有登录都封装到一个类中,然后在perform方法中运行你的类
标签: ruby-on-rails ruby heroku redis sidekiq