Yêu cầu thg 3 22, 2019 3:17 CH 191 0 1
  • 191 0 1
+1

Lỗi khi tạo ứng dụng rails với database là mysql

Chia sẻ
  • 191 0 1

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


Đã trả lời thg 3 22, 2019 4:37 CH
Đã được chấp nhận
+1

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.

Chia sẻ
Avatar Thanh Nguyen @adamhoang308
thg 3 23, 2019 3:32 SA

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. 😅😅

Avatar Hoàng Đức Quân @devil_boom_129
thg 3 23, 2019 3:43 SA

@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ối
  • LDFLAGS cho phép bạn kết nối đến các thư viện của C trong openSSL
  • CPPFLAGS 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

Avatar Thanh Nguyen @adamhoang308
thg 3 23, 2019 5:47 SA

@devil_boom_129 cam on ban nhieu nhieu 😄

Avatar Hoàng Đức Quân @devil_boom_129
thg 3 23, 2019 6:57 SA

@adamhoang308 accept answer giúp mình nhé

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí