2

私の状況は次のとおりです。

  • アプリケーション X を実行しています
  • Xは宝石「コア」を使用します
  • core は X のモデルをモデル A、B、C、D で拡張します

開発中、これは完全に機能します。しかし、私が走るとき

(bundle exec) rake RAILS_ENV=staging RAILS_GROUPS=assets assets:precompile

失敗する

** Execute environment
rake aborted!
uninitialized constant A

Rails.application.eager_load! を配置して、この問題を修正しようとしました。の前Application.initialize!にenvironments.rbが、他のエラーにつながっただけだと思います。

assets:precompile の前にエンジンからのモデルを gem に含める方法はありますか? すべてをeager_loadするのではなく、1つずつ要求することについて読んだことがありますが、gemへのパスはシステムごとに異なります。

「コア」のengine.rb:

require 'paperclip'

module Core
  class Engine < ::Rails::Engine

    config.time_zone = 'Amsterdam'
    config.encoding = "utf-8"
    config.autoload_paths += %W(#{config.root}/lib/**)

    config.generators do |g|
      g.test_framework :rspec, :views => false, :fixture => true
      g.fixture_replacement :factory_girl, :dir => 'spec/factories'
    end

    initializer "core.load_app_instance_data" do |app|
      Core.setup do |config|
        config.app_root = app.root
      end
      app.class.configure do 
        #Pull in all the migrations from Commons to the application
        config.paths['db/migrate'] += Core::Engine.paths['db/migrate'].existent
      end
    end

    initializer "core.load_static_assets" do |app|
      app.middleware.use ::ActionDispatch::Static, "#{root}/public"
    end    
  end
end

アプリケーション X ではなく、コア gem に修正を入れることを好みます。ただし、それが不可能な場合は、X で問題ありません:)

4

1 に答える 1

1

「コア」gem がステージング環境にロードされていますか?

于 2012-10-09T08:56:34.673 に答える