Rails 4.2:重定向后的活动作业
Rails 4.2: Active Job After Redirect
这是我第一次使用 ActiveJob,所以我仍在思考细节。我有一个表单,当通过 Execute
按钮保存时,它会执行一些需要很长时间的 API 调用。
我希望页面无需长时间等待即可重定向到索引。这是我的控制器的创建操作..
campaigns_controller.rb
def create
@campaign = Campaign.new(campaign_params)
if @campaign.save
flash[:success] = "Campaign Successfully Saved!"
redirect_to campaigns_path
if params[:save_type] == 'Execute'
FolderPushJob.perform_later(@campaign)
end
else
flash[:error] = "There was a problem launching your Campaign."
redirect_to new_campaign_path
end
end
...我的工作还处于婴儿期
folder_push_job.rb
class FolderPushJob < ActiveJob::Base
queue_as :default
def perform(campaign)
...some api calls..
end
完成这项工作的最佳方法是什么?
更新
我发现的一个问题是我没有作业的后端,所以我安装了 delayed_job
gem。
config/application.rb
config.active_job.queue_adapter = :delayed_job
现在它重定向并且 运行 根本不重定向作业。
非常感谢任何帮助。
您必须在 redirect_to 之前执行作业,因为您的方式 rails 执行重定向并且从不调用作业
我的印象是我可以在特定时间创建一个设置为 运行 的延迟作业,并在开发时观看它 运行。看来在开发模式下,我必须手动启动作业。根据这个博客..
Simple Steps to Implement Delayed Job in Rails
Start up the jobs process There are two ways to do this.
If application is in development mode, we would use the below rake
task instead.
rake jobs:work
If application is in production mode, then it is preferred to use the
“delayed_job” script.
我还了解到这个 rake
任务可以 运行 在服务器旁边。保留它 运行ning,它将在您与您的应用交互时执行这些工作。
这是我第一次使用 ActiveJob,所以我仍在思考细节。我有一个表单,当通过 Execute
按钮保存时,它会执行一些需要很长时间的 API 调用。
我希望页面无需长时间等待即可重定向到索引。这是我的控制器的创建操作..
campaigns_controller.rb
def create
@campaign = Campaign.new(campaign_params)
if @campaign.save
flash[:success] = "Campaign Successfully Saved!"
redirect_to campaigns_path
if params[:save_type] == 'Execute'
FolderPushJob.perform_later(@campaign)
end
else
flash[:error] = "There was a problem launching your Campaign."
redirect_to new_campaign_path
end
end
...我的工作还处于婴儿期
folder_push_job.rb
class FolderPushJob < ActiveJob::Base
queue_as :default
def perform(campaign)
...some api calls..
end
完成这项工作的最佳方法是什么?
更新
我发现的一个问题是我没有作业的后端,所以我安装了 delayed_job
gem。
config/application.rb
config.active_job.queue_adapter = :delayed_job
现在它重定向并且 运行 根本不重定向作业。
非常感谢任何帮助。
您必须在 redirect_to 之前执行作业,因为您的方式 rails 执行重定向并且从不调用作业
我的印象是我可以在特定时间创建一个设置为 运行 的延迟作业,并在开发时观看它 运行。看来在开发模式下,我必须手动启动作业。根据这个博客..
Simple Steps to Implement Delayed Job in Rails
Start up the jobs process There are two ways to do this.
If application is in development mode, we would use the below rake task instead.
rake jobs:work
If application is in production mode, then it is preferred to use the “delayed_job” script.
我还了解到这个 rake
任务可以 运行 在服务器旁边。保留它 运行ning,它将在您与您的应用交互时执行这些工作。