2015-03-13 49 views
1

我有一个rails 4应用程序,我们在其中使用cloudfront作为CDN。Rails 4应用程序 - Heroku/Cloudfront - 资产不能从原产地正确投放

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'%> 

资产/ Java脚本/ 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不会在页面上呈现。我已经预先编译了资产。

回答

1

添加gem 'rails_12factor', group: :production#利于轨道4,5资产在Heroku

而且在/config/environments/production.rb

config.assets.compile = true 

这应该工作

+0

我有轨12的因素,但配置' .assets.compile = false'。现在改变。 – miler350 2015-03-13 13:49:59

+0

好吧,让我知道接下来会发生什么。 – 2015-03-13 13:51:18

+0

另外,请发布日志,因为这些都非常有帮助。 – 2015-03-13 13:51:44