22.4. Kod w języku C wstawiany w kodzie Ruby
Podziękowania dla Garretta Rooneya
Problem
Chcemy zaimplementować niewielkie fragmenty programu w języku C bez konieczności tworzenia rozszerzeń w C dla języka Ruby.
Rozwiązanie
Można wstawić kod w języku C bezpośrednio w programie Ruby i skorzystać z biblioteki RubyInline
(dostępnej w postaci gemu rubyinline
) do automatycznego utworzenia rozszerzenia.
Przykładowo, aby skopiować plik za pomocą funkcji języka C z biblioteki stdio
, można napisać kod RubyInline
w następujący sposób[129]:
#!/usr/bin/ruby -w # copy.rb require 'rubygems' require 'inline' class Copier inline do |builder| builder.c <<END void copy_file(const char *source, const char *dest) { FILE *source_f = fopen(source, "r"); ...
Get Ruby. Receptury now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.