Sto scrivendo un gioiello, che include un'estensione C. Di solito quando scrivo una gemma, seguo un processo di TDD, dove scriverò una specifica fallita e poi lavoro sul codice finché non passa, ecc ecc ...Quando si sviluppa un rubygem con estensioni C, come si esegue il test locale con Rspec?
Con la mia estensione C in "ext/mygem /mygem.c "e un extconf.rb valido configurato nelle" estensioni "di gemspec, come posso eseguire le mie specifiche e avere ancora l'estensione C caricata? Quando apporto le modifiche al codice C, quali passi devo fare per ricompilare il codice?
Questa è probabilmente una domanda stupida, ma digitando 'bundle install' dall'interno dell'albero di sviluppo del mio gioiello non vengono create estensioni native. Quando eseguo manualmente ruby ext/mygem/extconf.rb
ottengo un Makefile (nella radice dell'intero progetto) e quando eseguo quindi make
, ottengo un oggetto condiviso (di nuovo, nella radice dell'intero progetto). Devo seguire il flusso di lavoro sbagliato, poiché capisco che il .so dovrebbe essere posto sotto lib /. A meno che non dovessi farlo a mano durante lo sviluppo?
Grazie :) Stavo tornando qui per postare che ho trovato "rake-compile" su github. Fondamentalmente lo aggiungi come dipendenza di sviluppo, quindi nel tuo Rakefile puoi dire quali estensioni creare. Eseguirà extconf.rb, make, quindi copierà lib e cleanup. https://github.com/luislavena/rake-compiler – d11wtq
+1 lo stesso però;) – d11wtq