Rails 在生产中忽略 asset_host 但在开发中没有
Rails ignoring asset_host in production but not in development
我已经设置在config/environments/production.rb
config.serve_static_files = false
config.assets.compile = false
config.action_controller.asset_host = ENV['CDN_URL']
我 运行 RAILS_ENV=production bundle exec rake assets:precompile
并将资产文件夹上传到我的资产服务器。
我可以在我的机器上启动生产服务器,并且运行良好。但是当我上传到生产服务器(nginx + unicorn)时,rails 应用程序继续使用本地路径而不是 asset_host
<script src="/assets/application-e5b02395783a59feaf5a100d0e23806c3e2bd45296770ebac0fc756f8e1dfd53.js" data-turbolinks-track="true"></script>
如何让它从 asset_host
获取资源?
编辑 更好地解释我的问题
在远程主机上:
$ RAILS_ENV=production bundle exec rails console
Loading production environment (Rails 4.2.3)
irb(main):001:0> puts helper.javascript_include_tag 'application.js'
<script src="/assets/application-e5b02395783a59feaf5a100d0e23806c3e2bd45296770ebac0fc756f8e1dfd53.js"></script>
=> nil
irb(main):002:0>
在本地机器上:
$ RAILS_ENV=production bundle exec rails console
Loading production environment (Rails 4.2.3)
2.2.2 :001 > puts helper.javascript_include_tag 'application.js'
<script src="http://cdn.site.com/assets/application-e5b02395783a59feaf5a100d0e23806c3e2bd45296770ebac0fc756f8e1dfd53.js"></script>
=> nil
2.2.2 :002 >
找到问题了。
我正在使用 figaro 来处理环境变量。有人更改了 application.yml
的权限,EVN['CDN_URL']
在生产服务器上返回 nil。
我已经设置在config/environments/production.rb
config.serve_static_files = false
config.assets.compile = false
config.action_controller.asset_host = ENV['CDN_URL']
我 运行 RAILS_ENV=production bundle exec rake assets:precompile
并将资产文件夹上传到我的资产服务器。
我可以在我的机器上启动生产服务器,并且运行良好。但是当我上传到生产服务器(nginx + unicorn)时,rails 应用程序继续使用本地路径而不是 asset_host
<script src="/assets/application-e5b02395783a59feaf5a100d0e23806c3e2bd45296770ebac0fc756f8e1dfd53.js" data-turbolinks-track="true"></script>
如何让它从 asset_host
获取资源?
编辑 更好地解释我的问题
在远程主机上:
$ RAILS_ENV=production bundle exec rails console
Loading production environment (Rails 4.2.3)
irb(main):001:0> puts helper.javascript_include_tag 'application.js'
<script src="/assets/application-e5b02395783a59feaf5a100d0e23806c3e2bd45296770ebac0fc756f8e1dfd53.js"></script>
=> nil
irb(main):002:0>
在本地机器上:
$ RAILS_ENV=production bundle exec rails console
Loading production environment (Rails 4.2.3)
2.2.2 :001 > puts helper.javascript_include_tag 'application.js'
<script src="http://cdn.site.com/assets/application-e5b02395783a59feaf5a100d0e23806c3e2bd45296770ebac0fc756f8e1dfd53.js"></script>
=> nil
2.2.2 :002 >
找到问题了。
我正在使用 figaro 来处理环境变量。有人更改了 application.yml
的权限,EVN['CDN_URL']
在生产服务器上返回 nil。