Ruby on rails 本地运行Rails 3登台环境(所有资产上都运行404)

Ruby on rails 本地运行Rails 3登台环境(所有资产上都运行404),ruby-on-rails,ruby-on-rails-3,apache2,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_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不要为静态资产服务,那么它为什么要为它们服务呢

http://domain.local:1337/assets/application.css
我一定错过了什么。该站点显示良好,仅返回所有资产的404:

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

当您通过访问应用程序时

http://domain.local:1337/
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/
http://domain.local:1337
为了使用Apache提供的预编译资产,您应该考虑将Apache或Nginx与Ruby模块(如Phusion Passenger)结合使用。然后你就可以通过

http://domain.local

这将使Apache为您的资产提供服务,并将所有其他请求转发到模块。当您通过访问应用程序时,您可以阅读有关此的更多信息

http://domain.local:1337/
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/
http://domain.local:1337
为了使用Apache提供的预编译资产,您应该考虑将Apache或Nginx与Ruby模块(如Phusion Passenger)结合使用。然后你就可以通过

http://domain.local

这将使Apache为您的资产提供服务,并将所有其他请求转发到模块。你可以阅读更多关于这方面的信息

你安装了rubyracer gem吗?我没有,但我刚刚安装了,没有它,它就不能与我们的产品一起工作。你能解释一下为什么会有这样的问题吗?我以为rubyracer是javascript的?我已经更新了收到的确切错误消息。apache如何适应?您正在尝试使用apache作为反向代理吗?您是否安装了诸如phusion passenger之类的ruby模块?public/assets的内容有什么好处?@patrickmagraw如果我在端口80上使用apache进行侦听,那么这些资源是预编译的,并且正在提供服务。我使用apache来服务静态资产。public/assets包含我的应用程序的所有资产,包括application.css。正如我所说,它在80上解决得很好,但是当我使用与rails服务器相同的端口时,rails坚持提供静态服务,即使我明确告诉它不要config.service\u static\u assets=false。你安装了rubyracer gem吗?我没有,但我刚刚安装了,没有它就不能与我们的服务器一起工作。你能解释一下为什么会有这样的问题吗?我以为rubyracer是javascript的?我已经更新了收到的确切错误消息。apache如何适应?您正在尝试使用apache作为反向代理吗?您是否安装了诸如phusion passenger之类的ruby模块?public/assets的内容有什么好处?@patrickmagraw如果我在端口80上使用apache进行侦听,那么这些资源是预编译的,并且正在提供服务。我使用apache来服务静态资产。public/assets包含我的应用程序的所有资产,包括application.css。正如我所说,它在80上解决得很好,但当我使用与rails服务器相同的端口时,rails坚持提供静态服务,即使我明确告诉它不要config.service\u static\u assets=false。谢谢。我会读一读,试着更多地理解设置。我会接受这个答案,因为虽然我还没有弄明白,但我知道这是由于我自己的疏忽,而线索就在你的答案中的某个地方。与此同时,我确实安装并配置了unicorn和nginx:太棒了。独角兽是个不错的选择!对不起,如果我不够清楚的话。如果我能给你更多的帮助,请告诉我。谢谢。我会读一读,试着更多地理解设置。我会接受这个答案,因为虽然我还没有弄明白,但我知道这是由于我自己的疏忽,而线索就在你的答案中的某个地方。与此同时,我确实安装并配置了unicorn和nginx:太棒了。独角兽是个不错的选择!对不起,如果我不够清楚的话。如果我能给你更多的帮助,请告诉我。