2009-10-17 165 views
54

在这种情况下,我发现自己已经两次了:我在我的系统上安装了一个gem,并开始使用它从我的Rails项目中使用它。最终,我需要对该宝石进行一些更改。我应该如何继续?分叉一个Rails项目的宝石

理想情况下,我想查看某处的那个gem的源代码,比如〜/ third_party/gems,在它上面工作,让我的Rails项目使用它。那可能吗?

在所有情况下,宝石都在github上,所以我可能会在github上克隆它,让我的机会和维护自己的分支。我想那时我会直接用我的服务器上的gem install来安装那个分支。那有意义吗?

+0

GitHub的构建宝石正在被淘汰。 http://github.com/blog/515-gem-building-is-defunct – 2009-10-19 13:15:30

回答

92

今天这与Bundler很容易做到。你让宝石的本地副本,然后,而不是在你的Gemfile做

gem "whatever" 

,你这样做:

gem "whatever", :path => "/home/pupeno/whatever" 

运行包安装后,创业板从该目录拾取。即使你在那里修改了某些东西,你所需要做的就是重新加载它,重新启动Rails。

如果您需要使用您自己的宝石的变化来部署应用程序,你犯了一个叉,在Github或相似,在Gemfile中你这样做:

gem "whatever", :git => "[email protected]:/pupeno/whatever.git" 

,就是这样。它很简单,直接,美观。

+2

这很有用,因为在某些情况下,存在陈旧的gem或具有我想用作凝视点的功能。谢谢。 – 2010-10-27 19:22:39

+0

非常有用的解决方案! – RubyFanatic 2011-12-14 21:48:14

+16

我建议使用公共git url。 'git:// github.com/pupeno/whatever.git'而不是私人('[email protected]:pupeno/whatever.git'),以防其他人使用您的项目并且无法私人访问您的项目回购 – 2012-04-17 23:57:01

5

在所有的情况下,宝石都在github上,所以我可能会在github上克隆它,让我的机会和维护自己的分支。我想那时我会直接用我的服务器上的gem install来安装那个分支。

如果你真的需要破解真正的宝石来源,那么是的,这将是做到这一点。但是,它应该是最后的手段。如果你不需要,你不想维护真正的宝石。为什么不从您的Rails代码中需要更改和使用您的类而不是Gem类的功能的Gem源扩展类?

我发现你很少需要直接破解第三方代码来做你需要做的事情。良好的软件可以扩展/轻松扩充。