这让我发疯,因为我在过去一周尝试排除了很多不同的事情,我在这里。
我有一个带有这些宝石的Rails 3.2.13应用程序(此处仅显示的子集):
gem'Asset_sync'
宝石'ember-source',''〜>1.3.1'
宝石'ember-data-source'," gt;1.0.0.beta.6'
宝石'ember-rails'
gem'Emblem-rails',:git =>'git://github.com/alexspeller/emblem-rails.git'(用于模板)
每次我部署到Heroku时,我都尝试访问Ember应用程序,它永远不会加载。我已经检查了一下,以确保它也是Production.RB的正确Ember变体。
过去似乎有效的另一个修复程序是不要用Ember-data(https://github.com/emberjs/emberjs/ember-rails/issues/264)覆盖Ember-rails供应商文件。。相反,我将Ember-Source和Ember-Data-Source版本添加到了Gemfile。这似乎解决了问题,但Heroku仍然会挂在我的Ember应用程序的网络请求上(查看Chrome网络选项卡 - 有时会在HTML上挂起,而有时则使用Ember -App上的JS文件挂起)。
为了排除Heroku作为一个问题,我还尝试将我的应用程序部署到AWS,但有时仍然会遇到这些问题。
排除Heroku的静态资产作为问题,我还尝试将资产推向S3(使用Asset_sync Gem)并从那里提供服务,并且我仍然可以在该页面上挂在该页面上。但是最终在部署后有时会起作用,但是当它这样做时速度非常慢。
另一个值得注意的事情是整个Ember应用都使用CoffeeScript。
有什么建议?
这是Heroku不预先编译我的资产而是没有加载页面的问题。
这解决了:
config.assets.precompile << Proc.new do |path|
if path =~ /.(css|js)z/
full_path = Rails.application.assets.resolve(path).to_path
app_assets_path = Rails.root.join('app', 'assets').to_path
if full_path.starts_with? app_assets_path
puts "including asset: " + full_path
true
else
puts "excluding asset: " + full_path
false
end
else
false
end
end