Rails 4 App - Heroku / Cloudfront - 资产不能正确地从原点服务

时间:2015-03-13 13:32:23

标签: javascript ruby-on-rails ruby heroku amazon-cloudfront

我有一个rails 4应用程序,我们使用cloudfront作为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'%>

资产/ Javascript角/ user_edit.js

//= require jquery
//= require jquery_ujs
//= require jquery.validate.min
//= require ./webarch/form_validations

在localhost上,这有效。我可以像这样访问浏览器中的js:

http://localhost:3000/assets/user_edit.js

但是在使用heroku进行制作时,该网站会查找此文件:

<script src="http://example3579.cloudfront.net/javascripts/user_edit.js"></script>

该文件无效。我无法在浏览器中访问,并且javascript无法在页面上呈现。我预先编译了资产。

1 个答案:

答案 0 :(得分:1)

在heroku上添加gem 'rails_12factor', group: :production#对rails 4资产有帮助

在/config/environments/production.rb

config.assets.compile = true

这应该有效