2014-07-26 54 views
4

我有兴趣提出一个需要我为ruby需要gmail gem的应用程序。 现在有2个宝石:如何要求具有相同名称的不同宝石?

https://github.com/dcparker/ruby-gmail

https://github.com/nu7hatch/gmail

两个宝石具有相同要求的名称,即:Gmail的 第二个是多少不清楚,但有其方法的一个问题。这种方法在第一个gem(链接)中运行良好。所以我想,也许我可以要求第一个只用于这种方法。这有可能这样做,怎么样?

+3

我怀疑你可以同时使用这两个宝石。一个定义了“class Gmail”,另一个定义了“module Gmail”。你不能有一个类和一个同名的模块。即使两者都是课程,或者两者都是模块(这样你就可以同时需要这两个文件),那么你们两个一起工作都会非常幸运。 – matt

回答

0

正如其他的答案和评论说,你不能简单地要求两者的宝石,因为它们。

但是,由于两者都托管在GitHub上,您可以将其中一个叉入并重命名违规类。只要你的重命名在宝石中是一致的,你可以在你的Gemfile中使用你的叉子

当然,你不会轻易地将变化重新定位到你的叉子上,但如果你真的必须使用这两个宝石,这可能是一个让你满意的妥协方案。

-1

您可以添加以下到您的Gemfile:

gem 'gmail', :git => "git://github.com/dcparker/ruby-gmail", :branch => "master" 
gem 'gmail', :git => "git://github.com/nu7hatch/gmail", :branch => "master" 
+0

这不起作用。你会得到错误“你不能指定两次来自不同来源的相同的宝石。” – matt

+0

有什么办法可以创建一个别名?像alias第一个g1到g1,第二个到g2或类似的东西。 – optimusprime

相关问题