我已设置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 >
答案 0 :(得分:0)
发现问题。
我使用figaro处理环境变量。有人更改了application.yml
的权限,而EVN['CDN_URL']
在生产服务器上返回了nil。