60

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

理想情况下,我想在某个地方查看该 gem 的源代码,例如 ~/third_party/gems,然后处理它并让我的 Rails 项目使用它。那可能吗?

在所有情况下,宝石都在 github 上,所以我可能会在 github 上找到它,克隆它,创造机会并维护我自己的分支。我想我会直接在我的服务器上使用 gem install 安装该分支。那有意义吗?

4

2 回答 2

105

今天,使用 Bundler 很容易做到这一点。您制作 gem 的本地副本,然后代替

gem "whatever"

在您的 Gemfile 中,您可以:

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

运行 bundle install 后,从该目录中选择 gem。即使您在其中修改了某些内容,重新加载它所需要做的就是重新启动 Rails。

如果您需要使用自己对 Gem 的更改来部署应用程序,您可以在 Github 或类似网站上创建一个 fork,然后在 Gemfile 上执行以下操作:

gem "whatever", :git => "git@github.com:/pupeno/whatever.git"

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

于 2010-10-01T09:46:51.933 回答
3

在所有情况下,宝石都在 github 上,所以我可能会在 github 上找到它,克隆它,创造机会并维护我自己的分支。我想我会直接在我的服务器上使用 gem install 安装该分支。

如果您真的需要破解实际的 gem 来源,那么可以,这就是这样做的方法。但是,这应该是最后的手段。如果您不需要,您不想维护实际的宝石。为什么不从 gem 源扩展类,您需要更改和使用您的类而不是 Rails 代码中的 gem 类?

我发现你很少需要直接破解 3rd 方代码来做你需要做的事情。好的软件可以扩展/轻松增强。

于 2009-10-17T17:58:20.837 回答