Ruby on rails Shopify API调用在Rails后台作业中不起作用

Ruby on rails Shopify API调用在Rails后台作业中不起作用,ruby-on-rails,shopify,background-process,Ruby On Rails,Shopify,Background Process,在我的Rails控制器操作中,我有一个方法来执行一系列Shopify API调用。例如: shoppifyAPI::Product.all() shopifigapi::Product.find(:all,参数:{title:title}) shopifigapi::Product.create(标题:标题、正文\u html:description、图像:图像、标签:标签、产品类型:产品类型) 所有这些都是我想要的…非常整洁 问题是我要上传一个CSV并使用这个控制器方法。如果我有8行项目就可以

在我的Rails控制器操作中,我有一个方法来执行一系列Shopify API调用。例如:
shoppifyAPI::Product.all()

shopifigapi::Product.find(:all,参数:{title:title})

shopifigapi::Product.create(标题:标题、正文\u html:description、图像:图像、标签:标签、产品类型:产品类型)

所有这些都是我想要的…非常整洁

问题是我要上传一个CSV并使用这个控制器方法。如果我有8行项目就可以了,但很快就会变慢。所以,我想,让我们把它转移到后台工作人员

我正在使用Redis/Resque让一切正常运行,并使用一些虚拟输出(即,
放置“Hi there champ!”
),我已确认后台工作程序配置正确,并在应该的时间和地点执行。整洁

然后我把我的控制器动作的各个部分放入并输出。在我调用Shopify API之前,这一切都是有效的。关于任何对象,我都可以调用
.new
,但是当我尝试
.find
.all
。创建任何有效对象(在我将其抽象到后台作业之前工作过)时,它有点死了。超级描述性!我试图通过
logger
put
输出正在发生的事情,但我似乎无法生成太多正在发生的事情的输出,但我已经将其隔离到Shopify API工作中。我认为,即使我有一个初始值设定项来指定我的密码、站点、API密钥、秘密等,我可能需要重新初始化我的Shopify会话,如图所示。我不是做错了,就是解决了问题


在这一点上,我确信我只是在文档中遗漏了一些东西,但我无法从我的后台工作中找到如何进行这些必要的API调用。有没有想过我可能犯了什么明显的错误可以解决这个问题?有人处理过类似的事情吗?

结果表明,这与Shopify引擎的安装位置有关。在my
routes.rb
中,我有以下几条路线(除了其他路线外,还有两条相关路线):

这一切都很好,但在某种程度上,您的Shopify API调用的上下文必须在
products.rb
index controller操作的上下文中进行,而不做任何更改。有两种方法可以做到这一点,其中一种显然更像铁路:

选项1:

包括

session = ShopifyApp::SessionRepository.retrieve(1)
ShopifyAPI::Base.activate_session(session)
在要进行Shopify API调用的任何文件的开头。这将设置会话(顺便说一句,假设您只有一个存储区……这是使用检索方法检索存储区1。风险假设),对API进行身份验证,生活中的一切都很好

选项2:

win的类继承。让所有进行API调用的控制器继承自
ShopifyApp::AuthenticatedController
。这使得初始值设定项实际工作,就是这样。回顾过去,这是一条清晰而明显的道路。你有订单管理员吗
class OrdersController
和done:
order=ShopifyAPI::order.find(params[:id])
完全按照您的预期执行

session = ShopifyApp::SessionRepository.retrieve(1)
ShopifyAPI::Base.activate_session(session)