У меня есть Rails 4 приложение. Я создал простое расширение C с Ruby C API
Это расширение преобразования файлов из data
папки и возвращает выходной сигнал, основанный на этом файле (some_file.f
)Как добавить расширение Ruby C в Rails?
|-- data
| |--some_file.f
|-- ext
| `-- my_ext
| |-- extconf.rb
| |-- some_lib.c
| `-- my_ext.c
|-- lib
Прямо сейчас, когда я хочу использовать это расширение мне нужно запустить следующие команды в my_ext
директории
ruby extconf.rb
make
Тогда у меня есть дополнительные .o
.bundle
ВЫПОЛНИВШИЕ файлы. Я также создал инициализатор с require 'my_ext/my_ext'
Где я должен перемещать эти файлы? В
lib/my_ext
?Есть ли способ улучшить этот процесс компиляции и лучше организовать соответствующие файлы? В будущем я хотел бы также добавить тесты и запустить их после компиляции с расширением. Может быть, я должен создать камень из этого расширения? Или рейк-задача?
Я читал http://tenderlovemaking.com/2009/12/18/writing-ruby-c-extensions-part-1.html этот учебник, но как реализовать это в приложении Rails? Где поставить Rakefile?
Вы можете добавить задачу грабли с помощью графа 'rake-compiler', передав ему несколько деталей, чтобы он знал, где найти extconf, и куда поместить расширение, когда это будет сделано. Не уверен, что настройки для проекта в отличие от драгоценного камня, следовательно, не полный ответ, но то, что вы хотите, безусловно, возможно. –
Но где положить Rakefile из rake-компилятора в приложение rails? – tomekfranek