这个让我难过。
我在这里的rails网站上有一个红宝石(rails 2.0.2,ruby 1.8.6,在nginx上运行的thins(0.8.2)),当我遇到某个动作时,我有时会得到正确的回答,有时我得到500错误。
此视图中的代码如下:
def show
@item = Item.find_by_url_slug(params[:id])
filename = "#{RAILS_ROOT}/public/#{@item.index.url}"
@data = File.open(filename, 'rb') { |f| f.read } # read data via File.
render :layout => false
end
视图相当简单,show.html.erb
包含
<%= @data %>
我怀疑是缓存,并尝试设置各种不同的标头(缓存控制,过期等),并尝试使用expires_now()
方法,但无济于事。
出于兴趣,我还尝试在控制器中添加sleep(2)
调用,并查看网络请求在500页面上显而易见的是此方法未被调用 - 以上代码中没有一个show
操作是。
此外,当页面没有加载时,没有证据表明production.log
中的调用。所以,没有错误调试,只是偶尔500(发生说2/4页加载)。
我应该补充一点,这个代码在本地工作正常,并且在我们的登台服务器上 - 只是在生产中这是一个问题。
任何想法??