什么';列出gem的非ruby依赖项的最佳方法是什么?

什么';列出gem的非ruby依赖项的最佳方法是什么?,ruby,rubygems,dependency-management,Ruby,Rubygems,Dependency Management,我正在编写一个RubyGem,我想使用一个作为python分发的开源程序。我没有时间将python程序移植到ruby,我希望尽可能自动地管理外部依赖关系 我正在考虑使用Gem.pre_安装钩子来自动轻松地安装我感兴趣的python包 如果这是一种公认的做法,我将非常感谢提供更好的方法或支持预安装的建议。您可能想看看Babushka来描述非ruby依赖项 我不知道在pre_install hook中安装python包是否是一种礼貌的行为。这是一个很老的问题,但值得回答。对不起,我还没有检查sta

我正在编写一个RubyGem,我想使用一个作为python分发的开源程序。我没有时间将python程序移植到ruby,我希望尽可能自动地管理外部依赖关系

我正在考虑使用Gem.pre_安装钩子来自动轻松地安装我感兴趣的python包


如果这是一种公认的做法,我将非常感谢提供更好的方法或支持预安装的建议。

您可能想看看Babushka来描述非ruby依赖项


我不知道在pre_install hook中安装python包是否是一种礼貌的行为。

这是一个很老的问题,但值得回答。对不起,我还没有检查stackoverflow中与babushka相关的问题:)

如果python包作为pip提供,那么您可以执行以下操作:

dep 'blah.gem' do
  requires 'something.pip'
end

dep 'something.pip'
然后,
babushka blah.gem
将处理安装,包括根据需要安装rubygems和pip


关于Gem.post_install还有一个问题,它表明在所有Gem安装后,钩子都会全局运行。那真的不是我想要的。。。缠着Ruby社区与Linux发行版的打包系统更好地合作。因为apt get和yum可以比rubygems更好地处理这类事情。@Ken:你认为是Ruby社区不愿意与Linux发行版合作,而不是相反吗?@Andrew:我认为向rubygems添加一个特定的功能,发行包可以告诉rubygems“嘿!我提供了Y gem的X版本”(通过在
/usr/lib/ruby/gems/1.8/equivs
中删除一个文件),这将大大有助于将RubyGems与打包系统集成。