【问题标题】:What is the Ruby equivalent of python setup.py develop?python setup.py develop 的 Ruby 等价物是什么?
【发布时间】:2025-12-18 20:10:01
【问题描述】:

我是 ruby​​ 新手,需要调试一些打包为 gem 的 ruby​​ 应用程序。

我正在使用 rvm,我将包安装为 gem,并且还对该包进行了全新的 github 签出。如何告诉我的 rvm 环境使用 github repo 中的代码而不是已安装的 gem?

对于熟悉 python 的人来说,这相当于python setup.py develop

Setuptools 允许您部署项目以在公共目录或暂存区域中使用,但无需复制任何文件。因此,您可以在其签出目录中编辑每个项目的代码

https://pythonhosted.org/setuptools/setuptools.html#development-mode

【问题讨论】:

    标签: ruby gem rvm


    【解决方案1】:

    是的,你可以。

    查看Bundler。这是使用它的事实上的标准。

    【讨论】:

    • 我查看了一个 bundler,做了以下操作:首先,在 rvm 中创建一个新的 gemset,然后 gem install bundler,然后 bundler install。它按预期安装了所有依赖项,但是当我尝试运行我在其中运行 bundle install 的实际应用程序时,我得到了回溯。不确定它是否来自我对 rvm/gemset/whatever 的使用。回溯类似于“/Users/cournape/.rvm/rubies/ruby-1.9.2-p320/lib/ruby/site_ruby/1.9.1/rubygems/dependency.rb:247:in `to_specs': 找不到vagrant (>= 0) 在 [...] 中(vagrant 是我正在研究的应用程序)。
    • 嗯。你怎么跑无业游民?如果您已经检查过,在捆绑安装之后,您应该能够执行bin/vagrant 并运行您刚刚检查过的代码。您也可以使用bundle exec bin/vagrant,这应该会更好,尽管 gemset 应该使其无关紧要(bundle exec 将可用的 gem 沙箱到 Gemfile.lock 中的那些,但如果您有一个新的 gemset,它应该几乎相同)。
    • 我认为我做错了什么,我看不到问题了。无论如何,您对使用 bundle exec 的建议非常有效。谢谢
    • 实际上,最后一件事:有没有办法避免进入应用程序目录?我想同时使用两个应用的开发版
    • 好吧,我唯一能想到的就是将它添加到您的路径中。在 ruby​​ gems (/usr/local/bin?) 之前的目录中对其进行符号链接,或者将目录添加到您的路径中(bin/ 在您的版本中或创建~/bin,将其符号链接并添加到您的路径中)。跨度>
    【解决方案2】:

    除了上一个答案。

    有时 gems/packages 提供可执行文件。 python setup.py develop 的好处是您的路径中将始终拥有该可执行文件的最新版本。这对开发来说很方便。据我所知 Gem 不提供这样的功能。为了模拟你可以使用Bundler,它是这样的:

    • 首先新建一个Gemfile:bundle init
    • 然后编辑该文件并添加您正在处理的本地 Gem(对我来说是 Nanoc):gem "nanoc", path: "path/to/local/nanoc"
    • 然后要访问 Gem 提供的可执行文件,您可以使用捆绑程序:bundle exec nanoc ...

    这里bundle exec 将从您的 Gemfile 中获取 Gem 版本并使用它。如果该 Gem 使用 :path 选项指定,那么它将使用该选项。

    确实不如 Python 方便,但它是我在 Ruby 中找到的最接近的解决方案。

    【讨论】: