C uzantısı içeren bir mücevher yazıyorum. Genellikle bir mücevher yazdığım zaman, TDD'nin bir sürecini takip ediyorum, nerede başarısız bir spec yazacağım ve kodlar geçene kadar kod üzerinde çalışacağım vs ...C uzantıları ile bir rubygem geliştirirken, Rspec ile yerel olarak nasıl test edersiniz?
"ext/mygem" deki C uzantımla /mygem.c "ve gemspec'in" uzantıları "nda yapılandırılmış geçerli bir extconf.rb, özellikleri nasıl çalıştırabilirim ve hala C uzantım yüklü mü? C kodunda değişiklik yaptığımda, kodu yeniden derlemek için hangi adımları atmam gerekiyor?
Bu muhtemelen aptalca bir sorudur, ancak gemimin geliştirme kaynak ağacının içinden 'bundle install' yazarak herhangi bir yerel uzantı oluşturmaz. ruby ext/mygem/extconf.rb
'u manuel olarak çalıştırdığımda bir Makefile (tüm projenin kökünde) alıyorum ve daha sonra make
çalıştırdığımda, paylaşılan bir nesne (yine, tüm projenin kökünde) alıyorum. Yanlış iş akışını takip etmeliyim, çünkü .so'nun lib/altına yerleştirilmesi gerektiğini anlıyorum. Geliştirme sırasında bunu elle yapmam gerekmiyor mu?
Ve sonra var benim Spec yardımcı için
$: << File.dirname(__FILE__) + '/../ext'
ekle
Teşekkürler :) Github'da "rake-compile" bulduğumu yayınlamak için buraya geliyordum. Temel olarak onu bir geliştirme bağımlılığı olarak eklersiniz, sonra Rakefile'inizde hangi uzantıların oluşturulacağını anlatabilirsiniz. Extconf.rb dosyasını çalıştırır, daha sonra lib ve temizlemeyi kopyalar. https://github.com/luislavena/rake-compiler – d11wtq
+1 hepsi aynı olsa;) – d11wtq