2012-10-10 137 views
1

我在生产环境中运行rails服务器,并且预编译了我的资产,但由于某些原因,请求将转到/ assets目录而不是/上市。Rails资产已预编译,但生产环境正在寻找它们/资产

我有默认的production.rb文件。什么可能导致这个?

# config/environments/production.rb 

config.cache_classes = true 
config.consider_all_requests_local  = false 
config.action_controller.perform_caching = true 
config.serve_static_assets = false 
config.assets.compress = true 
config.assets.compile = false 
config.assets.digest = true 
config.force_ssl = true 
config.i18n.fallbacks = true 
config.active_support.deprecation = :notify 

回答

1

您还可以更改:

config.serve_static_assets = true 

,然后你的资产将从/公/资产提供服务,而不必使用Apache或Nginx的。

对于开发,只需删除/ public/assets目录,然后它们将自动编译并从/ assets中提供。

+0

我正在寻找的快速解决方案,但我敦促人们看看乘客(见下文) – AJcodez

1

请求要/assets,这是由它应该坐在你的Rails应用程序的前端Web服务器提供了public目录。

因为你已经有config.serve_static_assets设置为false那里面config/environments/production.rb那里,Rails甚至不会尝试服务这些资产。

我建议在Rails前面放置一个运行Passenger的Apache或Nginx服务器,以便Apache或Nginx能够将资产和代理请求提供给您的应用程序。

+0

我不太明白...我需要2台服务器才能使它在生产环境中工作吗? – AJcodez

+0

不......你需要一个坐在Rails服务器前面的服务器,并向它传递请求。乘客将自动缓冲您的应用程序实例并处理请求的管道。前端服务器(apache或nginx)在服务静态资产方面比在Ruby中编写的任何东西都快得多,这就是为什么它是首选的方法。 –

+0

哦,我真的不在乎,如果它的速度很快,我只想让图像出现!问题是它在图像的错误文件夹中查找。它正在生产,但看资产/而不是公共/资产/ – AJcodez