我试图将几个可重用的应用程序功能分解成Rails引擎。我一点问题都没有得到一个引擎的工作,但该应用程序似乎没有加载后续引擎的数据。我正在同时开发多个引擎,所以我要求它们通过:path选项加入我的testapp的gemfile。您可以将多个本地引擎添加到Rails 3应用程序吗?
这是我(简化)设置(我的最低限度,以建立一个简单的模型发动机的理解):
my_engines /引擎1/lib中/ engine1.rb:
module Engine1
require 'engine' if defined?(Rails) && Rails::VERSION::MAJOR == 3
end
my_engines /引擎1/lib目录/ engine.rb:
require 'engine1'
require 'rails'
module Engine1
class Engine < Rails::Engine
end
end
my_engines /引擎1 /应用/模型/引擎1/model1.rb:
module Engine1
class Model1
end
end
我的第二个引擎engine2的设置完全相同,并在同一个父目录中(只是名称为engine2和model2)。
我使用珠宝商打包并产生用于两个发动机gemspecs,并且我需要像这样在测试应用两个引擎:
my_engines/testapp/Gemfile中:
gem 'engine1', :path => '../engine1'
gem 'engine2', :path => '../engine2'
的奇怪的是,当我为我的testapp启动rails控制台时,Engine1 :: Model1.new工作,但Engine1 :: Model1.new导致“NameError:未初始化的常量Engine2 :: Model2”。这似乎适用于我包含在任何后续引擎中的所有模型,路线,控制器等。我搜索了互联网无济于事。有什么想法吗?