实施控制器操作时,如下所示:
def create_file
File.open('public/test.txt', "w+") do |f|
f.write('test')
end
sleep(60)
head :no_content
end
操作完成后,可以访问文件域 /test.txt;但是,在操作返回之前(例如在sleep()调用期间)访问此URL的任何尝试似乎都会挂起,直到完成为止。
我有一些用例,我想根据用户输入创建可公开访问的文件,调用需要将URL传递给这样一个文件的第三方API(在这种情况下没有选项来发送数据) ,然后在操作完成之前删除该文件。不幸的是,这似乎是不可能的,因为在动作完成之前文件实际上是不可访问的。
在Rails中是否存在某种方式,某种类型的刷新呼叫或路由刷新或处理更接近?我不确定为什么它甚至挂在这种情况下。或者我将不得不使用单独的操作来创建和处理文件(假设我不想将它存储在同一服务器上的静态非Rails站点上)?
答案 0 :(得分:2)
似乎问题是,正如评论所示,只有一个线程可用于在开发模式下提供请求。解决方法是添加config.threadsafe! to config \ environments \ development.rb并使用--threaded选项启动thin。