Ich schreibe ein Juwel, das eine C-Erweiterung enthält. Normalerweise, wenn ich einen Edelstein schreibe, befolge ich einen Prozess von TDD, wo ich eine fehlgeschlagene Spezifikation schreibe und dann an dem Code arbeite, bis er geht, etc etc ...Wie können Sie bei der Entwicklung eines Rubygems mit C-Erweiterungen lokal mit Rspec testen?
Mit meiner C-Erweiterung in "ext/mygem /mygem.c "und eine gültige extconf.rb, die in den" extensions "der gemspec konfiguriert ist, wie leite ich meine Spezifikationen und lasse meine C-Erweiterung immer noch laden? Welche Schritte muss ich ausführen, um den Code neu zu kompilieren, wenn ich den C-Code ändere?
Das ist wahrscheinlich eine blöde Frage, aber das Eingeben von 'bundle install' aus dem Development-Source-Tree meines Edelsteins erzeugt keine nativen Erweiterungen. Wenn ich manuell ruby ext/mygem/extconf.rb
starte ich bekomme ein Makefile (im Stamm des gesamten Projekts) und wenn ich dann make
ausführen, bekomme ich ein gemeinsames Objekt (wieder im Stamm des gesamten Projekts). Ich muss den falschen Workflow verfolgen, da ich verstehe, dass die .so unter lib/platziert werden soll. Es sei denn, ich sollte das nur während der Entwicklung manuell machen.
Danke :) Ich kam gerade zurück, um zu posten, dass ich "rake-compile" auf github gefunden habe. Sie fügen es im Grunde als Entwicklungsabhängigkeit hinzu, und in Ihrem Rakefile können Sie ihm sagen, welche Erweiterungen zu erstellen sind. Es wird extconf.rb, make ausführen, dann kopieren Sie die lib und bereinigen. https://github.com/luislavena/rake-compiler – d11wtq
+1 alle gleich, obwohl;) – d11wtq