我的Rails 3 + Ember + Ember Rails + Ember数据应用程序到Heroku / AWS无法加载

时间:2014-01-31 23:35:47

标签: ruby-on-rails heroku ember.js ember-data

这让我疯狂,因为我上周已经尝试排除了很多不同的事情而且我在这里。

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

有什么建议吗?

1 个答案:

答案 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