如标题所述,我是 Ruby 的初学者。
我的项目使用了 2 个现有的 gem - 我想对其进行修改。 我在 GitHub 上 fork 了这些 gems,并将它们作为模块放入我的存储库中,它们显示为一个子目录。
我已经尝试对此进行研究,但我总是迷路 - 我想我在这里遗漏了一些基本概念/知识。
我的问题:
- 我这样做是对还是错?
- 是否有可能在我的实际项目中包含那些( fork 的)gems 的代码,或者我应该单独更新它们并将它们用作带有
require
的实际 gems(这看起来很麻烦) - 如果这些 gem 是我项目的一部分,我应该如何正确使用它们,我假设我不需要
require
部分?如果没有,我该如何访问/使用它们?
谢谢!
顺便说一句,在 Ubuntu 上使用 Ruby 1.9.2-p194,以 RubyMine 作为 IDE。
最佳答案
可能是错误的。 Ruby 是一种非常灵活的语言,并且具有所谓的开放类。这意味着您可以在运行时打开和更改类。在外部库上执行此操作称为 monkey patching。因此,您不必复制所有想要保持一致的代码,只需修改类并覆盖您想要的任何方法即可。 一个简单的例子:
class Fixnum def is_multiple_of_three? self % 3 == 0 end end
但是,如果您想要的更改真的很重要,那么 fork gem 可能是有意义的。
我推荐
bundler
gem。这将让你制作一个Gemfile
来列出你所有的依赖项。您可以将 github 存储库列为 gem 的来源,如下所示:gem 'gem_name_here', :git => 'git://github.com/username_here/gem_name_here.git'
然后运行
bundle install
来安装您的依赖项。如果您使用 bundler 安装 gem,它的作用就像您安装的任何其他 gem。
关于Ruby 初学者 - 在单个项目中使用/修改现有的 gem,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11705246/