サブリポジトリ (Git サブツリー) に格納されたモデルの共有ライブラリ (Rails Engine として) を使用する Rails Web アプリケーションを作成しています。この共有ライブラリには、他の Ruby gems (私の場合は HTTParty と Dalli) への依存関係が含まれています。この共有ライブラリを含む親プロジェクトから自動的に参照されるようにしたいです。
ただし、私の宝石の依存関係は親プロジェクトで解決されていないようで、Web アプリケーションを起動すると、共有ライブラリ内のそれらの宝石の依存関係への参照が欠落しています。(つまりNameError: uninitialized constant ApiClient::HTTParty
) これらの参照を Web アプリの Gemfile に明示的に追加すると (以下の Gemfile 行のコメントを外すように)、すべて正常に動作します。
これらの依存関係を「連鎖」させ、親プロジェクトにこれらの参照を自動的に解決させるにはどうすればよいですか?
私のプロジェクトは次のようになります。
[MyRailsApp]
-- ...
-- [app]
-- [config]
-- [lib]
-- [MyLib]
-- ...
-- [app]
-- [config]
-- [lib]
-- [MyLib]
-- version.rb
-- engine.rb
-- MyLib.gemspec
-- Gemfile
-- Gemfile
MyRailsApp/Gemfile :
source 'https://rubygems.org'
gem 'activesupport', '3.2.13', :require => 'active_support'
gem 'actionpack', '3.2.13', :require => 'action_pack'
gem 'actionmailer', '3.2.13', :require => 'action_mailer'
gem 'railties', '3.2.13', :require => 'rails'
...
# gem 'dalli'
# gem 'httparty'
gem 'MyLib', :path => 'lib/MyLib'
MyLib/MyLib.gemspec :
$:.push File.expand_path("../lib", __FILE__)
# Maintain your gem's version:
require "mylib/version"
# Describe your gem and declare its dependencies:
Gem::Specification.new do |s|
s.name = "MyLib"
s.version = MyLib::VERSION
s.authors = ["David"]
s.email = ["ops@myemail.com"]
s.homepage = "http://www.mysite.com"
s.summary = "Shared Library"
s.description = "Shared Library"
s.files = Dir["{app,config,db,lib}/**/*"] + ["MIT-LICENSE", "Rakefile", "README.rdoc"]
s.add_dependency "rails", "~> 3.2.13"
s.add_dependency "dalli", ">= 2.6.4"
s.add_dependency "httparty", ">= 0.11.0"
end