我正在编写一个包含 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/ 下。除非我应该在开发过程中手动完成?