假设我有一个名为 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,那么我必须将调用更改为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
调用require 'foo'
.test_foo.rb
但这是一个相当缓慢的过程,感觉有点像它打破了 ruby 作为一种语言的意义,在这种语言中,您不必在尝试之前构建代码。
所以,我的问题是,在积极开发 gem 并对其进行测试时,最好的工作流程是什么?