Lỗi khi tạo ứng dụng rails với database là mysql
Dạ chào mọi người.
Em có 1 câu hỏi như sau:
-) Em sử dụng macbook để làm việc, mọi thứ đều bình thường đến khi 1 ngày em tạo 1 project rails với database là MYSQL. Khi vừa gõ lệnh rails new ... để tạo project. Em đã nhận được các lỗi tương tự như trong link stackoverflow này:
https://stackoverflow.com/questions/30834421/error-when-trying-to-install-app-with-mysql2-gem
-) Em có làm theo hướng dẫn trong phần trả lời và giờ đã giải quyết được lỗi bằng cách gõ lệnh:
bundle config --local build.mysql2 "--with-ldflags=-L/usr/local/opt/openssl/lib --with-cppflags=-I/usr/local/opt/openssl/include"
Em có tìm đọc thêm nhưng kiến thức em còn nông nên hiện giờ chưa thể hiểu được vì sao bug này lại phát sinh và việc gõ lệnh trên vì sao lai giải quyết được vấn đề. Mong anh chị nào biết thì thông não giúp em (bow). Cảm ơn các anh chị nhiều.
1 CÂU TRẢ LỜI
Trong link stackoverflow có giải thích rõ ràng đấy. Apple đang dần bỏ các thư viện OpenSSL đi để sử dụng các thư viện TLS và crypto riêng(kinh tế mà, không thì làm sao mà bán đc phần cứng). Vậy nên ở lỗi này là do không kết nối được với các thư viện OpenSSL. Câu lệnh bundle trên sẽ giúp bạn thêm 3 biến sau
LDFLAGS: -L/usr/local/opt/openssl/lib
CPPFLAGS: -I/usr/local/opt/openssl/include
PKG_CONFIG_PATH: /usr/local/opt/openssl/lib/pkgconfig
khi đó thì kết hợp đc với OpenSSL và từ đó mọi việc xong.
oh, cảm ơn bạn nhiều, mình cũng có đọc đoạn đó, nhưng lỗi đó với mình nó chung chung quá, đọc xong mình cũng không thực sự hiểu gì cả. Và thêm 3 biến trên là thêm biến gì? thêm vào đâu? nó có chức năng gì mà vì sao khi thêm xong lại giải quyết được lỗi?... mình không hiểu những chỗ này.
@adamhoang308 Nếu ý bạn 3 biến trên là thêm chức năng gì thì mình xin trả lời:
PKG_CONFIG_PATH
để locate được package openSSL của bạn ở local để có thể kết nốiLDFLAGS
cho phép bạn kết nối đến các thư viện của C trong openSSLCPPFLAGS
là cho phép bạn dùng C++ trong openSSL
1 số module/package của Ruby có sử dụng C nên cần 2 biến FLAGS kia
@devil_boom_129 cam on ban nhieu nhieu
@adamhoang308 accept answer giúp mình nhé