这让我疯狂,因为我上周已经尝试排除了很多不同的事情而且我在这里。
我有一个带有这些宝石的Rails 3.2.13应用程序(这里只显示了一个子集):
gem' asset_sync'
gem'burer-source','〜> 1.3.1'
gem'ember-data-source',“〜> 1.0.0.beta.6”
gem'ember-rails'
gem'conmbure-rails',:git => 'git://github.com/alexspeller/emblem-rails.git'(用于模板化)
每次我部署到Heroku并尝试访问ember应用程序时,它都不会加载。我已经检查过以确保它在production.rb上也是正确的Ember变体。
过去似乎有效的另一个修复方法是不使用更新版本的ember-data(https://github.com/emberjs/ember-rails/issues/264)覆盖ember-rails供应商文件。我改为在Gemfile中添加了ember-source和ember-data-source版本。这似乎解决了这个问题,但仍然Heroku会挂在我的ember应用程序的网络请求上(查看chrome网络选项卡 - 它有时挂在html上,有时挂在带有ember-app的js文件上)。
为了排除Heroku问题,我还尝试将我的应用程序部署到AWS,并且有时仍然会遇到这些问题。
为了排除Heroku的静态资产作为一个问题,我也尝试将我的资产推送到S3(使用asset_sync gem)并从那里提供它,我仍然遇到这个问题,它会挂在页面上。但最终在部署之后它有时会起作用,但是当它发生时却非常缓慢。
其他值得注意的事情是整个Ember应用程序使用coffeescript。
有什么建议吗?
答案 0 :(得分:0)
这是一个问题,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