【问题标题】:Rails error serving assetsRails 错误服务资产
【发布时间】:2013-03-20 14:04:47
【问题描述】:

我正在将一个大型站点从 Rails 2 迁移到 Rails 3。当我尝试获取资产时,使用 Webrick 时出现以下错误:

Started GET "/assets/key.png" for 127.0.0.1 at 2013-03-20 11:00:06 -0300
Served asset /key.png - 200 OK (15ms)
[2013-03-20 11:00:08] ERROR NoMethodError: undefined method `each' for nil:NilClass
    /usr/local/rvm/gems/ruby-1.9.3-p327/gems/rack-1.4.5/lib/rack/handler/webrick.rb:71:in `service'
    /usr/local/rvm/rubies/ruby-1.9.3-p327/lib/ruby/1.9.1/webrick/httpserver.rb:138:in `service'
    /usr/local/rvm/rubies/ruby-1.9.3-p327/lib/ruby/1.9.1/webrick/httpserver.rb:94:in `run'
    /usr/local/rvm/rubies/ruby-1.9.3-p327/lib/ruby/1.9.1/webrick/server.rb:191:in `block in start_thread'

我检查了机架源代码,问题出在文件 webrick.rb 的以下行(正文为 nil):

body.each { |part|
        res.body << part
      }

使用Thin 我得到一个类似的错误:

Started GET "/assets/key.png" for 127.0.0.1 at 2013-03-20 11:34:31 -0300
Served asset /key.png - 200 OK (33ms)
!! Rack application returned nil body. Probably you wanted it to be an empty string?
!! Unexpected error while processing request: undefined method `each' for nil:NilClass

在浏览器中:

Error 324 (net::ERR_EMPTY_RESPONSE): The server closed the connection without sending any data.

我一直在努力解决这个错误。有什么帮助吗??

【问题讨论】:

  • 也许您应该尝试将 rack 更新到较新的版本?
  • 我该怎么做?我也试过乘客,但没有用。但是让我知道如何更新机架。
  • 我会说gem update rack :)
  • 另外,Thin is faster than Webrick这个我也看了很多遍,或许你也可以试试?
  • gem 已更新,但 rails 仍在使用旧版本。我怀疑它不适用于 Thin,但我会试一试

标签: ruby ruby-on-rails-3.1 ruby-on-rails-3.2 webrick


【解决方案1】:

我发现了问题。

这与内存缓存有关。我没有安装它。

我刚刚评论了以下行:

config.cache_store = :mem_cache_store

【讨论】:

    【解决方案2】:

    确实,这与缺少内存缓存服务器有关。就我而言,我发现 Heroku 还发布了设置快速小型 memcached 服务器的说明,以便在本地复制您的生产环境。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-10-14
      • 1970-01-01
      • 2014-03-31
      • 2017-07-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-13
      相关资源
      最近更新 更多