Rails 4资产未在Windows上的生产中提供

时间:2014-05-13 07:20:12

标签: windows ruby-on-rails-4 asset-pipeline

我目前遇到与本文所述完全相同的问题:Rails not serving assets in production or staging environments

我在Windows 7的生产环境中运行Rails 4.0.4(因此很容易出现问题,不幸的是不能使用Linux)。我已经运行rake assets:clobber以确保清理所有内容然后RAILS_ENV=production rake assets:precompile并且它成功而没有错误或警告。所有文件都出现在我的public / assets文件夹中,使用Windows资源管理器我可以在application.js和application.css中查看文本,并正确显示图像。但是当我尝试访问localhost:3001 / assets / application.js时它是空白的,与application.css相同,并且图像文件出现错误。我每次更改设置和预编译后都重新启动了服务器。

当我查看日志时,它表示页面呈现成功,没有像我在其他帖子中看到的“无路由匹配”错误。因此,资产被发现,但由于某种原因,他们没有得到适当的服务。

这是我的production.rb:

ABC::Application.configure do

    config.cache_classes = true
    config.eager_load = true
    config.consider_all_requests_local       = false
    config.action_controller.perform_caching = true
    config.action_dispatch.x_sendfile_header = "X-Sendfile"
    config.serve_static_assets = true
    config.action_mailer.default_url_options = { :host => '' }
    config.i18n.fallbacks = true
    config.active_support.deprecation = :notify
    config.assets.js_compressor = :uglifier
    config.assets.css_compressor = :sass
    config.assets.compile = false
    config.assets.digest = true

end

任何帮助都会非常感激,我已经坚持了将近两天!

1 个答案:

答案 0 :(得分:0)

正当我完成这个问题的打字时,我终于遇到了另一个帖子,其中说标题已经设置但是没有正文,这听起来像我的问题。他们使用nginx并通过更改以下内容来解决问题:

# Specifies the header that your server uses for sending files
# config.action_dispatch.x_sendfile_header = "X-Sendfile" # for apache
config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect' # for nginx

看到我没有使用Apache或者nginx,我注释掉了这两行,最后我的资产被提供了。事后似乎显而易见,但我认为无论如何我都会发布此内容以防其他人遇到同样的问题。