2012-07-19 74 views
7

我是ruby的新手,需要调试一些作为宝石打包的ruby应用程序。什么是python setup.py开发的Ruby等价物?

我正在使用rvm,在那里我将软件包安装为一个gem,并且还有该软件包的新github签出。我如何告诉我的rvm环境使用github仓库中的代码而不是已安装的仓库?

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

Setuptools允许您在通用目录或暂存区域中部署项目,但不需要复制任何文件。因此,你可以在它的检出目录编辑每个项目的代码

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

回答

7

是的,你可以。

结账Bundler。这是使用它的事实标准。

+0

我看了一个捆绑器,并做了以下工作:首先,在rvm中创建一个新的gemset,然后在gem install bundler中创建一个新的gemset,然后捆绑器安装。它按预期的方式安装所有的依赖关系,但是当我尝试运行实际的应用程序时,我运行了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':找不到(流浪者是我正在查看的应用程序) – 2012-07-19 09:50:22

+0

嗯,你是如何运行vagrant的?如果你已经检查过它,你捆绑安装后,你应该能够做'bin/vagrant'并运行你刚刚签出的代码,你也可以执行'bundle exec bin/vagrant',这应该会更好,尽管gemset应该使它不相关('bundle exec' sandboxes the available gems to那些在'Gemfile.lock'中,但如果你有一个新的gemset,它应该是几乎相同的) – 2012-07-19 10:03:34

+0

我想我做错了什么,我没有看到这个问题了,无论如何,你的使用bundle exec完美地工作。谢谢 – 2012-07-19 14:48:14

0

除了前面的答案。

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

  • 首先创建一个新的Gemfile:bundle init
  • 然后编辑该文件,并添加你的工作对当地的宝石(对我来说是Nanoc):gem "nanoc", path: "path/to/local/nanoc"
  • 然后访问由宝石提供的可执行文件,您可以使用捆绑这样:bundle exec nanoc ...

这里bundle exec会从你的Gemfile宝石版本,并使用它。如果该宝石用:path选项指定,那么它将使用该选项。

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

相关问题