У меня есть высшее приложение уровня, который включает в себя два двигателя:Рельсы: Ссылка двигатель от двигателя
- Ядро (двигатель)
- API (двигатель)
API-интерфейс двигателя зависит на модели, присутствующие в двигателе Core. Мне было интересно, как это сделать.
То, что я пытался
Например, если основной двигатель модели «Пользователь», как я ссылаться на него через API движка?
module Api
describe User do
routes { Api::Engine.routes }
before :each do
::Core::User.create!
end
....
С помощью этого кода, я получил:
Failure/Error: ::Core::User.create!
NameError:
uninitialized constant Core
Так я думал, что я должен был включать в себя основной двигатель в файле api.gemspec.
s.add_dependency "core", path: "core/"
Однако, похоже, связка не понравилась.
There was a Gem::Requirement::BadRequirementError while loading
api.gemspec:
Illformed requirement [{:path=>"core/"}] from myAppPath/api/api.gemspec:21:in
Я также попытался
s.add_dependency "core", path: "../core/"
, но это дало мне подобную ошибку.
Любая идея, что делать, чтобы ссылаться на модели Core
от двигателя API
?
Спасибо!
Обновление Я попытался добавить двигатель Core в двигатель Api через Gemfile Api. К сожалению, я получаю сообщение об ошибке. Я начинаю чувствовать, что двигатель не должен ссылаться на другие двигатели. Это правда?
/home/.rvm/gems/ruby-2.0.0-p247/gems/railties-
4.0.0/lib/rails/application/routes_reloader.rb:10:in `rescue in execute_if_updated':
Rails::Application::RoutesReloader#execute_if_updated delegated to
updater.execute_if_updated, but updater is nil: #
<Rails::Application::RoutesReloader:0x007fb53b67bce8 @paths=
["/home/myApp/api/spec/dummy/config/routes.rb", "/home/myApp/core/config/routes.rb",
"/home/myApp/api/config/routes.rb"], @route_sets=[#
<ActionDispatch::Routing::RouteSet:0x007fb53b3b8420>, #
<ActionDispatch::Routing::RouteSet:0x007fb53b6008b8>, #
<ActionDispatch::Routing::RouteSet:0x007fb53b6b9b60>]> (RuntimeError)
UPDATE на выводах В дополнение к приведенному ниже ответ, я хотел бы добавить, что .gemspec файлы не имеют никакой информации о том, где драгоценный камень будет сохранен, то есть он не будет указывать в хранилище Git, или путь к файлу и т.д. Это объясняется в этой статье:
http://yehudakatz.com/2010/12/16/clarifying-the-roles-of-the-gemspec-and-gemfile/
добавить к вашему gem-файлу API, например, «ядро» драгоценного камня, путь: «путь/к/ядро /». –
как в Gemfile? да, я думаю, что это может быть так. Я просто попробовал - получил другую ошибку, но я чувствую, что эта новая ошибка не связана. – Karan