Asked Mar 22nd, 2019 3:17 PM 144 0 1
  • 144 0 1
+1

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

Share
  • 144 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 ANSWERS


Answered Mar 22nd, 2019 4:37 PM
Accepted
+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.

Share
Thanh Nguyen @adamhoang308
Mar 23rd, 2019 3:32 AM

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

0
| Reply
Share
Hoàng Đức Quân @devil_boom_129
Mar 23rd, 2019 3:43 AM

@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

+1
| Reply
Share
Thanh Nguyen @adamhoang308
Mar 23rd, 2019 5:47 AM

@devil_boom_129 cam on ban nhieu nhieu 😄

0
| Reply
Share
Hoàng Đức Quân @devil_boom_129
Mar 23rd, 2019 6:57 AM

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

0
| Reply
Share