【发布时间】:2013-10-09 19:56:28
【问题描述】:
我有 Rails 4 应用程序。我用Ruby C API 创建了简单的C 扩展
此扩展从data 文件夹转换文件并根据该文件返回输出(some_file.f)
|-- data
| |--some_file.f
|-- ext
| `-- my_ext
| |-- extconf.rb
| |-- some_lib.c
| `-- my_ext.c
|-- lib
现在,当我想使用该扩展时,我需要在 my_ext dir 中运行以下命令
ruby extconf.rb
make
然后我有额外的.o .bundle 编译文件。我还用require 'my_ext/my_ext'创建了初始化程序
我应该将这些文件移到哪里?转入
lib/my_ext?有没有办法改进编译过程并更好地组织编译文件? 将来我还想添加测试并在扩展编译后运行它们。 也许我应该从那个扩展创建一个 gem?还是 rake 任务?
我阅读了http://tenderlovemaking.com/2009/12/18/writing-ruby-c-extensions-part-1.html 这个教程,但是如何在 Rails 应用程序中实现它?将 Rakefile 放在哪里?
【问题讨论】:
-
您可以使用
rake-compilergem 添加一个 rake 任务,并传递一些详细信息,以便它知道在哪里可以找到 extconf,以及在完成后将扩展名放在哪里。不确定项目的具体设置是什么,而不是 gem,因此不是完整的答案,但你想要的绝对是可能的。 -
但是将 rake-compiler 文档中的 Rakefile 放在 rails 应用程序的哪里?
标签: ruby-on-rails c ruby ruby-c-extension