我正在尝试迁移我们的应用程序以使用Asset Pipeline,因此我一直在本地测试我的更改(使用内置的Webrick服务器)。我的production.rb看起来像这样:
# Disable Rails's static asset server (Apache or nginx will already do this)
config.serve_static_assets = true
# Compress JavaScripts and CSS
config.assets.compress = true
# Don't fallback to assets pipeline if a precompiled asset is missed
config.assets.compile = false
# Generate digests for assets URLs
config.assets.digest = true
注意,config.serve_static_assets = true
这非常有效,因为我可以运行
rm -rf tmp
rm -rf public/assets
RAILS_ENV=production bundle exec rake assets:clean
RAILS_ENV=production bundle exec rake assets:precompile
rails server -p 3500 -e production
在我的本地机器上,一切都很好。但是,现在我想将我的更改推送到我们的生产Apache服务器,我希望Apache提供资源,所以我设置:
config.serve_static_assets = false
如果我现在尝试在本地机器上加载生产轨道服务器,则不会加载静态资产。我不确定这是否是预期的行为(我的意思是,我告诉Rails不要为我提供静态资产而不是 - 但我想某些东西为他们服务)。
所以我的问题是,如何在config.serve_static_assets = false
中production.rb
同时仍能运行本地生产轨道服务器?我的要求是甚至可能还是明智的?
由于
注意:使用Rails 3.2.11
答案 0 :(得分:0)
与rake assets:precompile
一起,您应该指示您的网络服务器提供公共文件夹。
您是否正在使用Passenger进行部署?
请参阅http://www.modrails.com/documentation/Users%20guide%20Apache.html,特别是:
Listen *:80
NameVirtualHosts *:80
....
LoadModule passenger_module /somewhere/passenger-x.x.x/ext/apache2/mod_passenger.so
PassengerRuby /usr/bin/ruby
PassengerRoot /somewhere/passenger/x.x.x
PassengerMaxPoolSize 10
<VirtualHost *:80>
ServerName www.foo.com
DocumentRoot /webapps/foo/public
RailsBaseURI /rails
</VirtualHost>
和
<Directory "/webapps/mycook/public">
Options FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>