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.