【问题标题】:How can I see the source code of a gem installed on my machine?如何查看安装在我机器上的 gem 的源代码?
【发布时间】:2014-01-15 18:16:13
【问题描述】:

我在我的 Rails 应用程序中安装了 Devise,我想通读源代码并了解它是如何工作的。我查看了我的 Rails 应用程序的整个文件夹结构,但找不到任何代码(方法调用除外)。

我知道我可以从 Github 存储库中看到源代码,但我想在我的编辑器和本地机器上看到它。

我猜这段代码一定在某个主要的 Ruby 目录中,但我找不到它。任何帮助表示赞赏。谢谢。

【问题讨论】:

    标签: ruby-on-rails ruby devise


    【解决方案1】:

    试试gem unpack,它会将gem的源代码复制到当前目录。例如,

    gem unpack rails
    

    文档:gem unpack

    【讨论】:

    • 是的,可以很好地查看代码——它实际上在我的项目中创建了一个文件夹。但是我想知道当我运行bundle 时,dir 安装的代码是什么?
    【解决方案2】:

    除了塞尔吉奥的建议,还有另一个选择。

    在你的 Rails 路径中

    $ bundle open devise
    

    这将使用 Gemfile 中指定的版本在编辑器中打开已安装的 gem,非常方便。

    【讨论】:

    • 嘿,这是返回To open a bundled gem, set $EDITOR or $BUNDLER_EDITOR
    • 然后在 bash 中设置它。 $EDITOR = vim 或您喜欢的其他编辑器。
    • 是的,我试过了。实际上,我的 bash 中有 sublime 作为 subl 但是当我尝试设置它时 $EDITOR = subl 我得到 -bash: =: command not found
    • 我很久以前就设置了,忘记了:) 检查这个:stackoverflow.com/a/678022
    【解决方案3】:

    只需运行bundle show <gem-name>, 它将列出 gem 源代码的绝对路径,在下一步中只需使用这样的文本编辑器打开源代码 subl <gem-code-absolute-path>

    举例

    假设你想阅读kaminari gem 代码

    bundle show kaminari

    /home/abdullah/.rvm/gems/ruby-2.3.0@your_gem_name/gems/kaminari-0.16.3

    下一步(subl 是使用 Sublime 文本编辑器打开的命令)

    subl /home/abdullah/.rvm/gems/ruby-2.3.0@your_gem_name/gems/kaminari-0.16.3

    【讨论】:

    • 单行快捷方式,CODE `bundle show docusign_click` 将 CODE 替换为 subl 或 w/e 您正在使用的其他代码编辑器
    【解决方案4】:

    运行gem environment - 这将显示有关您的宝石的所有信息,包括它们的位置。

    此外,我建议您安装一些具有go to source 功能的 IDE - RubyMine 非常棒(并且有 30 天的免费试用期),如果您想完全免费使用NetBeans together with Ruby plugin。此功能允许您快速导航到单击方法的来源,无论它是在您的代码中还是在 gem 中定义的。

    【讨论】:

    • 感谢您的提示。我没有在完整的 IDE 中工作,因为我担心它可能会妨碍学习。现在我坚持使用 Sublime,这样我就不依赖 IDE。很久以前,当我将 Dreamweaver 用于 HTML 时,我犯了这个错误
    • 好吧,我尝试用 sublime 编写 ruby​​ 有一段时间了,改用 RubyMine 实际上帮助我学习了更多东西——主要是为了 go to source 功能。
    • TBH 我没有使用很少的 RubyMine 功能 - 我在命令行中手动运行所有任务(rake、rails g、git rspec)。不过,我想强调go to source 的影响——它可以让你找出为什么你的代码不能自己运行。当我在寻找一些选项时 - 我只是深入到找到它,发现非常多的东西只是通过 Rails 核心方法。为了回答你的问题,我知道 ruby​​ 不到 1 年,前 2 个月我真的很讨厌它,因为我完全不知道它是如何工作的。
    【解决方案5】:

    在您的本地机器上克隆 github 存储库并使用您喜欢的编辑器进行探索:

    git clone https://github.com/plataformatec/devise.git
    

    【讨论】:

      猜你喜欢
      • 2015-05-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-07-02
      • 1970-01-01
      • 1970-01-01
      • 2014-10-09
      相关资源
      最近更新 更多