0

我正在尝试迁移我们的应用程序以使用资产管道,因此我一直在本地测试我的更改(使用内置的 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 服务器,则不会加载静态资产。我不确定这是否是预期的行为(我的意思是,我告诉 Rails 不要为我提供静态资产,但事实并非如此——但我想要一些东西为我服务)。

所以我的问题是,我怎样才能config.serve_static_assets = false在我production.rb仍然能够运行本地生产 Rails 服务器的同时拥有?我要问的是可能的还是明智的?

谢谢

注意:使用 Rails 3.2.11

4

1 回答 1

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>
于 2013-01-29T10:01:34.050 回答