【发布时间】:2012-06-09 09:36:35
【问题描述】:
假设我有一个名为 foo 的 gem,文件结构如下:
foo.gemspec
test_foo.rb
lib/foo.rb
lib/foo/file1.rb
lib/foo/file2.rb
文件test_foo.rb 包含一些我用来试用我的gem 的代码。它使用以下行访问 gem 的代码:
require './lib/foo'
然后,lib/foo.rb 访问 gem 所需的其他文件,如下所示:
require './lib/foo/file1'
require './lib/foo/file2'
由于test_foo.rb在gem目录的根目录下,所以需要lib/foo中的文件与根目录的完整路径。
这一切都很好,并且允许我通过更改 test_foo.rb 中使用的代码来立即使用我的 gem。
但是,如果我想构建 gem,则必须将调用更改为 require,如下所示:
require 'foo/file1'
require 'foo/file2'
而不是
require './lib/foo/file1'
require './lib/foo/file2'
每次我想构建 gem 时,这样做有点乏味。
所以,我想到了另一种尝试的方法,即使用rake 自动构建和安装gem,如下所示:
task :build do
`gem build foo.gemspec`
`gem uninstall foo`
`gem install ./foo-0.0.0.gem`
end
然后当我对代码进行更改并想尝试一下时,只需运行rake build,然后在test_foo.rb 中调用require 'foo'。
但这是一个相当缓慢的过程,并且感觉有点违背了 ruby 作为一种语言的意义,在这种语言中,您无需在尝试之前构建代码。
那么,我的问题是,在积极开发 gem 并对其进行测试时,最好的工作流程是什么?
【问题讨论】: