我创建了一个依赖于另一个gem的gem/Rrails引擎(让我们称之为my_Rails_gem(;特别是composite_primarykeysgem(有些模型需要它(。所以在.gmspec文件中,我有
Gem::Specification.new do |s|
#...
s.add_dependency 'composite_primary_keys'
问题是,当我在另一个rails项目的Gemfile中包含my_rails_gem并尝试使用这些模型时,我会收到关于composite_primary_keys功能的错误。我还必须明确地将gem 'composite_primary_keys'
添加到应用程序的Gemfile中,以使其正常工作。
为什么会这样?这不是Bundle和gem依赖关系的全部意义吗?我想减轻使用my_rails_gem的开发人员的负担,记住必须包括composite_primary_keys,但这是专门防止这种情况发生的。我是做错了什么,还是我的期望/理解错了?
我认为,不自动需要依赖gem的原因是,您的gem的用户(您(可以选择需要依赖的gem。这是有原因的,但这是一个有点长的对话。
如果您希望在包含gem时自动需要依赖的gem,那么在my_rails_gem.rb
文件(在lib
目录中(中,您可以执行:
require 'composite_primary_keys'
我相信这应该对你有用。至少,我就是这么做的。
此外,如果依赖gem具有要包含的样式表和javascript资产(我怀疑composite_primary_keys
没有(,则需要将适当的指令添加到my_rails_gem.js
和my_rails_gem.sass
(或使用的任何模板引擎(文件中。