1

Rails 4 にアップグレードした後、public/assets/manifest.yml は生成されなくなりました。代わりに、異なる形式の manifest-(fingerprint).json が存在します。しかし、サーバーはまだ古いmanifest.yml形式を探していて、.jsonバージョンを無視しているように思えますか?

同様の問題に基づいて他の質問が表示されますが、Rails 4 へのアップグレード、gem ファイルへの rails_12factor の追加、serve_static_assets = true の設定などによって解決されるようですが、これらの解決策はどれも私のシナリオでは効果がないようです。

この厄介な問題のために、私は疲れていてやる気がありません。

Heroku からのログファイル:

ActionController::RoutingError (No route matches [GET] "/assets/layouts/test/test.html"):

Gemfile:

ruby '2.0.0'
gem 'rails', '4.0.0'
...
gem "compass-rails", github: "milgner/compass-rails", ref: "1749c06f15dc4b058427e7969810457213647fb8"
...
gem 'rails_12factor', group: :production

production.rb

RailsFoundationAngular::Application.configure do
  config.assets.initialize_on_precompile = false
  config.cache_classes = true
  config.consider_all_requests_local       = false
  config.action_controller.perform_caching = true
  config.serve_static_assets = true
  config.assets.compress = true  
  config.assets.compile = false
  config.assets.digest = true
  config.i18n.fallbacks = true
  config.active_support.deprecation = :notify
  config.action_dispatch.x_sendfile_header = nil
end

私は Angular とその ui-router を使用しています。これは、test.html がリンクされている routes.js.coffee の一部です。

    .state "root",
      url: "/"
      views:
        "root":
          controller: "ApplicationController"
          templateUrl: "/assets/layouts/test/test.html"

ローカルでプリコンパイルも試みましたが、ここでも Rails 4 を使用しているため、まだ manifest.yml は作成されず、.json バージョンのみが作成されます。もちろん、開発中はすべてが完璧に機能しています...

したがって、私の実際の質問: Heroku に manifest-(fingerprint).json ファイルを認識させて使用させる方法、またはこれを機能させる別の方法を教えてください。

4

1 に答える 1

2

答えは、Heroku は既に manifest-(fingerprint).json ファイルを認識して使用しているということです。上記の私のコメントの「回避策」は、これらのファイルを参照する適切な方法であり、そうすることで、マニフェストファイルは使用される方法で使用されます。

内部リンクを含むファイルの名前を .erb に変更し、次のように参照するとうまくいきtemplateUrl: "<%= asset_path('layouts/test/test.html') %>"ます。すべての内部ファイル、画像、および html ファイルは、このように参照する必要があります。

ここですべてが非常に完全に説明されています: Asset-pipeline guide

今ではとてもシンプルで簡単に思えますが、最初からこれを回避するために多くの時間を費やしました。この回答が他の人の時間を節約できることを願っています。

于 2013-07-19T08:29:54.680 に答える