在本地运行Rails 3暂存环境(所有资产上404)

时间:2012-09-11 02:02:49

标签: ruby-on-rails ruby-on-rails-3 apache2

我正在使用以下方式在本地运行我的登台服务器:

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不要发送给service_static_assets,那么为什么要尝试为它们服务呢? / p>

http://domain.local:1337/assets/application.css

我一定错过了什么。该网站显示正常,只返回所有资产404:

ActionController::RoutingError (No route matches [GET] "/assets/application-791b26264f9bbe462a28d08cf9a79582.css"):

1 个答案:

答案 0 :(得分:5)

通过

访问您的应用程序时
http://domain.local:1337/

你没有通过Apache。

如果您只想使用WEBrick(RAILS_ENV = staging rails s -p 1337)运行它,那么您应该设置

config.serve_static_assets = true
你的staging.rb中的

。这将使WEBrick在您通过

访问您的应用程序时提供预编译资产
http://domain.local:1337

为了使用Apache提供的预编译资产,您应该考虑将Apache(或Nginx)与Ruby模块(如Phusion Passenger)结合使用。然后,您就可以通过

访问您的应用
http://domain.local

这将使Apache为您的资产提供服务,并将所有其他请求转发给模块。您可以阅读有关此here

的更多信息