My Rails 3 + Ember + Ember Rails + Ember Data 应用程序到 Heroku/AWS 无法加载



这让我发疯,因为我在过去一周尝试排除了很多不同的事情,我在这里。

我有一个带有这些宝石的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

最新更新