【问题标题】:Forking a gem for a Rails project为 Rails 项目分叉 gem
【发布时间】:2010-12-07 15:38:41
【问题描述】:

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

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

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

【问题讨论】:

标签: ruby-on-rails ruby fork gem


【解决方案1】:

今天,使用 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"

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

【讨论】:

  • 这很有用,因为在某些情况下,有一个过时的 gem,或者有我想用作起点的功能。谢谢。
  • 我建议使用公共 git url。 git://github.com/pupeno/whatever.git 而不是私有的 (git@githpb.com:pupeno/whatever.git),以防其他人使用您的项目并且没有私有访问您的存储库的权限
  • 如何得到确切gem版本的github地址?
  • 要使用特定版本的 gem,请使用 :ref(或 :branch:tag)。 stackoverflow.com/questions/6119946/…
  • ... 要查看 github 中的可用版本,请访问 github.com/user-name/repo-name/releases
【解决方案2】:

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

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

我发现您实际上很少需要直接破解 3rd 方代码来执行您需要执行的操作。好的软件可以扩展/轻松扩充。

【讨论】:

    猜你喜欢
    • 2012-08-05
    • 2017-09-17
    • 1970-01-01
    • 2012-05-29
    • 1970-01-01
    • 1970-01-01
    • 2016-08-21
    • 1970-01-01
    • 2020-03-05
    相关资源
    最近更新 更多