【发布时间】:2012-03-30 14:04:41
【问题描述】:
我正在编写一个包含 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/ 下。除非我应该在开发过程中手动完成?
【问题讨论】:
标签: ruby rubygems ruby-c-extension extconf.rb