开发宝石和测试

时间:2010-12-20 19:29:00

标签: ruby-on-rails ruby gem

我是开发Ruby宝石的新手,但我想我会尝试一下。

最近在Railscasts上查看最新一集(http://railscasts.com/episodes/245-new-gem-with-bundler)我正在使用Bundler创建我的宝石。

然而,我对如何测试我的宝石毫无头绪。

当然,我可以运行 rake install 然后从 irb 中进行操作,但这对我来说似乎是一种缓慢的工作流程。

我想做的是创建一个虚拟Rails应用程序,并通过引用它的源代码来要求gem。这可能吗?我确定我已经在某个地方读到过它......

谢谢!

4 个答案:

答案 0 :(得分:33)

您可以在Rakefile中包含以下这些行:

task :console do
  exec "irb -r mygem -I ./lib"
end

这将创建一个rake任务来初始化一个新的irb会话并预加载你的库。现在,您所要做的就是:

$ rake console

答案 1 :(得分:24)

我不能推荐Ryan Bigg的这本指南:http://bundler.io/v1.16/guides/creating_gem.html。它将指导您使用Bundler生成gem并设置自动化测试。您无需手动运行代码即可开发功能。这是我用于自己的宝石开发的工作流程,到目前为止一直运作良好。

更新:重读你的问题,听起来你的宝石是一个Rails引擎。我建议看一下JoséValim的EngineX。它是一个生成器,它使用虚拟Rails应用程序创建一个用于测试的宝石(https://github.com/josevalim/enginex)。如果您已经有很多代码,http://keithschacht.com/creating-a-rails-3-engine-plugin-gem/可能会帮助您设置一个虚拟应用程序进行测试。

答案 2 :(得分:12)

你实际上可以这样做:

cd ~/my_gem_path& bundle console

这将是一个快速测试:

My::Gem::VERSION

答案 3 :(得分:6)

您可以reference the gem locally,但如果您不想在每次更改gem时都运行bundle update,则只需要使用完整路径或移动(或符号链接)来处理文件你的宝石进入/供应商。

但说实话,听起来你需要写一些测试! ;)手动测试您所做的每一项更改都会变得令人厌烦且容易出错。如果您不熟悉宝石,请查看其他流行宝石的来源,看看它们是如何测试的。