Ruby 初学者 - 在单个项目中使用/修改现有的 gem

标签 ruby rubygems

如标题所述,我是 Ruby 的初学者。

我的项目使用了 2 个现有的 gem - 我想对其进行修改。 我在 GitHub 上 fork 了这些 gems,并将它们作为模块放入我的存储库中,它们显示为一个子目录。

我已经尝试对此进行研究,但我总是迷路 - 我想我在这里遗漏了一些基本概念/知识。

我的问题:

  1. 我这样做是对还是错?
  2. 是否有可能在我的实际项目中包含那些( fork 的)gems 的代码,或者我应该单独更新它们并将它们用作带有 require 的实际 gems(这看起来很麻烦)
  3. 如果这些 gem 是我项目的一部分,我应该如何正确使用它们,我假设我不需要 require 部分?如果没有,我该如何访问/使用它们?

谢谢!

顺便说一句,在 Ubuntu 上使用 Ruby 1.9.2-p194,以 RubyMine 作为 IDE。

最佳答案

  1. 可能是错误的。 Ruby 是一种非常灵活的语言,并且具有所谓的开放类。这意味着您可以在运行时打开和更改类。在外部库上执行此操作称为 monkey patching。因此,您不必复制所有想要保持一致的代码,只需修改类并覆盖您想要的任何方法即可。 一个简单的例子:

    class Fixnum
      def is_multiple_of_three?
        self % 3 == 0
      end
    end
    

    但是,如果您想要的更改真的很重要,那么 fork gem 可能是有意义的。

  2. 我推荐 bundler gem。这将让你制作一个 Gemfile 来列出你所有的依赖项。您可以将 github 存储库列为 gem 的来源,如下所示:

    gem 'gem_name_here', :git => 'git://github.com/username_here/gem_name_here.git'

    然后运行 ​​bundle install 来安装您的依赖项。

  3. 如果您使用 bundler 安装 gem,它的作用就像您安装的任何其他 gem。

关于Ruby 初学者 - 在单个项目中使用/修改现有的 gem,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11705246/

相关文章:

ruby - 为什么人们使用 `Module.send(:prepend, …)` ?

ruby-on-rails - Rails 3 数据类型?

ruby-on-rails - Rails 3.1 ckeditor

ruby-on-rails - Rails - 为什么是 "source ' https ://rubygems. org' "giving -bash No such file or directory"

ruby-on-rails - 安装 eventmachine gem 时出错

ruby - 需要本地 gem ruby

ruby-on-rails - Rails - 扩展 Ruby Gem

ruby - 在事件记录范围内映射

ruby - 在 ruby​​ 方法中使用问号

ruby-on-rails - Rails 应用程序中的 Rails : How are you using application_controller. rb 是新手吗?