Я пытаюсь разбить несколько частей многоразовой функциональности приложения на движки Rails. У меня нет проблем с тем, чтобы заставить работать один движок, но приложение, похоже, не загружает данные из последующих движков. Я разрабатываю несколько движков одновременно, поэтому мне нужно, чтобы они были включены в gem-файл моего testapp с опцией: path.
Вот моя (упрощенная) настройка (мое понимание минимума установки двигателя с простой моделью):
my_engines / engine1 / Библиотека / engine1.rb:
module Engine1
require 'engine' if defined?(Rails) && Rails::VERSION::MAJOR == 3
end
my_engines / engine1 / Библиотека / engine.rb:
require 'engine1'
require 'rails'
module Engine1
class Engine < Rails::Engine
end
end
my_engines / engine1 / приложение / модели / engine1 / model1.rb:
module Engine1
class Model1
end
end
Мой второй Engine, engine2 настроен идентично и находится в том же родительском каталоге (только с именем engine2 и моделью model2).
Я использую ювелир для упаковки и генерации gemspecs для обоих двигателей, и мне требуются оба двигателя в тестовом приложении, например так:
my_engines / TestApp / Gemfile:
gem 'engine1', :path => '../engine1'
gem 'engine2', :path => '../engine2'
Странная вещь в том, что когда я запускаю консоль rails для моего testapp, Engine1 :: Model1.new работает, но Engine1 :: Model1.new приводит к «NameError: неинициализированная константа Engine2 :: Model2». Кажется, это верно для всех моделей, маршрутов, контроллеров и т. Д., Которые я включаю в любые последующие движки. Я почесал интернет безрезультатно. Есть мысли?