Tôi đang viết một viên ngọc, bao gồm phần mở rộng C. Thông thường khi tôi viết một viên ngọc, tôi làm theo một quá trình TDD, nơi tôi sẽ viết một thông số thất bại và sau đó làm việc trên mã cho đến khi nó đi qua, v.v ...Khi phát triển một rubygem với phần mở rộng C, làm thế nào để bạn kiểm tra tại địa phương với Rspec?
Với phần mở rộng C của tôi trong "ext/mygem /mygem.c "và một extconf.rb hợp lệ được cấu hình trong" phần mở rộng "của gemspec, làm thế nào để chạy thông số kỹ thuật của tôi và vẫn có phần mở rộng C của tôi được nạp? Khi tôi thực hiện thay đổi đối với mã C, tôi cần thực hiện các bước nào để biên dịch lại mã?
Đây có lẽ là một câu hỏi ngu ngốc, nhưng gõ 'bundle install' từ bên trong cây nguồn phát triển của gem của tôi không xây dựng bất kỳ phần mở rộng gốc nào. Khi tôi chạy thủ công ruby ext/mygem/extconf.rb
Tôi nhận được một Makefile (trong thư mục gốc của toàn bộ dự án) và khi tôi chạy make
, tôi nhận được một đối tượng được chia sẻ (một lần nữa, trong thư mục gốc của toàn bộ dự án). Tôi phải tuân theo quy trình làm việc sai, vì tôi hiểu rằng .so được cho là được đặt dưới lib /. Trừ khi tôi chỉ phải làm điều đó bằng tay trong quá trình phát triển?
Cảm ơn :) Tôi vừa quay lại đây để đăng bài mà tôi đã tìm thấy "rake-biên dịch" trên github. Bạn về cơ bản thêm nó như là một phụ thuộc phát triển, sau đó trong Rakefile của bạn, bạn có thể cho nó biết những gì phần mở rộng để xây dựng. Nó sẽ chạy extconf.rb, tạo, sau đó sao chép lib và dọn dẹp. https://github.com/luislavena/rake-compiler – d11wtq
+1 tất cả đều giống nhau;) – d11wtq