在开发带有C扩展的rubygem时,如何使用Rspec在本地进行测试?

d11*_*wtq 5 ruby rubygems extconf.rb ruby-c-extension

我正在写一个包含C扩展的gem.通常当我写一个gem时,我会遵循TDD的过程,在那里我将编写一个失败的规范,然后处理代码直到它通过等等......

使用我在"ext/mygem/mygem.c"中的C扩展和在gemspec的"扩展"中配置的有效extconf.rb,如何运行我的规范并仍然加载了我的C扩展?当我更改C代码时,我需要采取哪些步骤来重新编译代码?

这可能是一个愚蠢的问题,但是从我的gem的开发源代码树里面输入'bundle install'并没有构建任何原生扩展.当我手动运行时,ruby ext/mygem/extconf.rb我得到一个Makefile(在整个项目的根目录中),当我运行时make,我确实得到了一个共享对象(同样,在整个项目的根目录中).我必须遵循错误的工作流程,因为我知道.so应该放在lib /下.除非我只是想在开发过程中手工做到这一点?

d11*_*wtq 4

我最终采用的解决方案是使用 github 上的 rake-compiler:

https://github.com/luislavena/rake-compiler

您只需添加一个 rake 任务来进行编译(自述文件中记录),然后使“spec”任务依赖于该构建阶段。