Rails 4 应用程序 - Heroku / Cloudfront - 资产未从源正确服务
Rails 4 App - Heroku / Cloudfront - Assets not serving from origin properly
我有一个 rails 4 应用程序,我们在其中使用云端作为 CDN。
在production.rb
文件中,我们有以下代码:
config.action_controller.asset_host = "example3579.cloudfront.net"
我们已经做了一些相当彻底的资产分离。从资产管道的角度来看,这可能是不可取的,但它应该使调试这个问题变得非常容易。
我正在处理的特定页面是 users#edit
视图,但问题是普遍的。
users#edit
操作使用它自己的布局:views/layouts/user_edit.html.erb
views/layouts/user_edit.html.erb
文件调用此 javascript。
<%= javascript_include_tag 'user_edit'%>
assets/javascripts/user_edit.js
//= require jquery
//= require jquery_ujs
//= require jquery.validate.min
//= require ./webarch/form_validations
在本地主机上,这有效。我可以这样访问浏览器中的js:
http://localhost:3000/assets/user_edit.js
但是在使用 heroku 进行生产时,站点会查找此文件:
<script src="http://example3579.cloudfront.net/javascripts/user_edit.js"></script>
文件无效。我无法在浏览器中访问并且 javascript 不会在页面上呈现。我已经预编译了资产。
添加 gem 'rails_12factor', group: :production
# 对 rails heroku 上的 4 个资产有帮助
并在 /config/environments/production.rb
config.assets.compile = true
这应该有效
我有一个 rails 4 应用程序,我们在其中使用云端作为 CDN。
在production.rb
文件中,我们有以下代码:
config.action_controller.asset_host = "example3579.cloudfront.net"
我们已经做了一些相当彻底的资产分离。从资产管道的角度来看,这可能是不可取的,但它应该使调试这个问题变得非常容易。
我正在处理的特定页面是 users#edit
视图,但问题是普遍的。
users#edit
操作使用它自己的布局:views/layouts/user_edit.html.erb
views/layouts/user_edit.html.erb
文件调用此 javascript。
<%= javascript_include_tag 'user_edit'%>
assets/javascripts/user_edit.js
//= require jquery
//= require jquery_ujs
//= require jquery.validate.min
//= require ./webarch/form_validations
在本地主机上,这有效。我可以这样访问浏览器中的js:
http://localhost:3000/assets/user_edit.js
但是在使用 heroku 进行生产时,站点会查找此文件:
<script src="http://example3579.cloudfront.net/javascripts/user_edit.js"></script>
文件无效。我无法在浏览器中访问并且 javascript 不会在页面上呈现。我已经预编译了资产。
添加 gem 'rails_12factor', group: :production
# 对 rails heroku 上的 4 个资产有帮助
并在 /config/environments/production.rb
config.assets.compile = true
这应该有效