【发布时间】:2012-09-11 02:02:49
【问题描述】:
我在本地运行我的登台服务器:
RAILS_ENV=staging rails console -p 1337
我已经预编译了资产,一切正常,只是我不知道如何为这些资产提供服务。我的 staging.rb 中有这个:
config.serve_static_assets = false
在我的 apache vhost 中,如果我在 80 上收听,我可以访问我的资产:
http://domain.local/assets/application.css
但是,如果我在 1337(与我的 rails 服务器相同的端口)上监听,那么 rails 会吐出 404。我的困惑是,我已经告诉 rails 不要使用 serve_static_assets,那么它为什么要尝试为它们服务呢?
http://domain.local:1337/assets/application.css
我一定错过了什么。该网站显示正常,所有资产仅返回 404:
ActionController::RoutingError (No route matches [GET] "/assets/application-791b26264f9bbe462a28d08cf9a79582.css"):
【问题讨论】:
-
你安装了 rubyracer gem 吗?
-
我没有,但我刚刚安装,没有它就无法使用。你能解释为什么这可能是问题吗?我以为 rubyracer 是用于 javascript 的?我已经更新了收到的确切错误消息。
-
apache 是如何适应的?您是否尝试使用 apache 作为反向代理?您是否安装了诸如 phusion 乘客之类的 ruby 模块?
public/assets的内容你会得到什么? -
@patrickmcgraw 如果我使用 apache 在端口 80 上侦听,这些资产已预编译并正在提供服务。我正在使用 apache 提供静态资产。 public/assets 包含我的应用程序的所有资产,包括 application.css。正如我所说,它在 80 上解析得很好,但是当我使用与 rails 服务器相同的端口时,即使我明确告诉它不要(config.serve_static_assets = false),rails 仍坚持提供静态服务。
标签: ruby-on-rails ruby-on-rails-3 apache2