我正在研究一项功能,该功能需要接受用户提交的表单中的文件。之后,我必须处理该文件以便检查指定的值是否正确,然后将CSV文件中指定的值更新为DB。 要在Rails应用程序中上传文件,我使用了一种类似于:http://guides.rubyonrails.org/form_helpers.html#uploading-files
的技术。我可以将文件保存在我的应用服务器上的tmp文件夹中。现在要做进一步的处理,我想将此文件的路径传递给将对该文件起作用的resque worker。该工作程序找不到该文件,并且File.exists?即使相同的方法在控制器类中返回true,也返回false。这是间歇性发生的,我认为存在比赛条件。关于可能是什么问题以及如何解决这个问题的任何建议?
[编辑]: 我意识到发生了什么事。因此,这是一个暂存环境,并且有多个应用程序服务器。该文件正在主应用程序服务器的tmp文件夹中上载,工作人员正在辅助应用程序服务器中搜索该文件。这是造成麻烦的真正原因。有什么办法解决这个问题吗?
答案 0 :(得分:0)
尝试在after_commit
回调后面运行您的工作程序。这可能是因为即使数据尚未持久存储在您的数据库中,您的工作程序也开始运行。