Mẹo truyền cờ vào bundler thông qua bundle config
Từ khi nâng cấp lên OSX 10.11, mình khá là bực mình khi chạy bundle install thì gặp phải lỗi sau: In file included from binder.cpp:20: ./project.h:116:10: fatal error: 'openssl/ssl.h' file not found #include <openssl/ssl.h> ^ 1 error generated. make: *** [binder.o] Error 1 Lý ...
Từ khi nâng cấp lên OSX 10.11, mình khá là bực mình khi chạy bundle install thì gặp phải lỗi sau:
In file included from binder.cpp:20: ./project.h:116:10: fatal error: 'openssl/ssl.h' file not found #include <openssl/ssl.h> ^ 1 error generated. make: *** [binder.o] Error 1
Lý do là có hiện OSX upgrade thay đổi các cấu hình và openssl header không còn được trỏ đúng nữa. Cách để giải quyết là install từng gem nào bị dính lỗi đó, ví dụ trong Gemfile của mình thì anh bạn eventmachine gem bị dính:
gem install eventmachine -v="1.0.7" -- --with-cppflags=-I/opt/boxen/homebrew/opt/openssl/include
Ở trên các bạn có thể thấy tôi khai báo cờ --with-cppflags trỏ vào thư mục có chứa header của openssl. Sau khi install xong thì tôi lại chạy bundle install và lặp lại bước này cho các gem nào bị dính.
Nhưng có một cách để tránh việc lặp lại thủ công này, xin giới thiệu bundle config, cách truyền cờ/biến vào cho bundler.
Tôi có thể nói bundler tự động gài cờ vào khi cài gem eventmachine với lệnh:
bundle config build.eventmachine --with-cppflags=-I/opt/boxen/homebrew/opt/openssl/include
Vâng, sau đó chỉ cần chạy bundle install là xong.
bundle config là lệnh cho phép gán UNIX env hoặc cờ vào một giai đoạn của workflow bundler, nó giúp tự động hoá nhiều bước thủ công khi cấu hình bundler.
Bạn có thể xem thêm chi tiết trên mạng. Mình chỉ gợi ý để mọi người tự tìm tòi.