我正在使用最新版本的 rails 和 ruby。通过一个表单,我导入了一个 CSV,然后触发了一个异步作业(我为此使用了 gem https://github.com/brandonhilkert/sucker_punch)来读取文件并处理数据。
总而言之,一切正常,但是:
我的问题是,我如何让控制器知道后台工作何时完成?我想通过快速通知重定向,但显然我不应该从模型中这样做......我可以在这里做什么?
这是我的sucker_punch 工作:
#app/jobs/import_job.rb
class ImportJob
include SuckerPunch::Job
def perform(import_file)
ActiveRecord::Base.connection_pool.with_connection do
ModelName.import_from_csv(import_file)
end
end
end
这是我的控制器操作:
def import
ImportJob.new.async.perform(import_file)
redirect_to list_data_path, notice: 'Data being imported...'
# i get sent to list_data_path and i stay there even though the background job already finished successfully
end