Tôi có Rails 3.1-rc4, MySQL 5.5.15 (vừa được nâng cấp) và Mac OS X Lion. Vấn đề của tôi hóa ra là tệp mysql_api.bundle được liên kết với tệp libmysqlclient.18.dylib bên phải, nhưng nó không thể tìm thấy thư viện:
otool -L ~/.rvm/gems/ruby-1.9.2-p180/gems/mysql-2.8.1/lib/mysql_api.bundle
/Users/rowland/.rvm/gems/ruby-1.9.2-p180/gems/mysql-2.8.1/lib/mysql_api.bundle:
/Users/rowland/.rvm/rubies/ruby-1.9.2-p180/lib/libruby.1.9.1.dylib (compatibility version 1.9.1, current version 1.9.1)
libmysqlclient.18.dylib (compatibility version 18.0.0, current version 18.0.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 159.0.0)
/usr/lib/libobjc.A.dylib (compatibility version 1.0.0, current version 228.0.0)
Trong thời gian chạy thư viện không được tìm thấy. Nỗ lực đầu tiên của tôi để sửa lỗi này là thêm lệnh LC_RPATH, nhưng điều đó là không đủ (có lẽ vì nó nằm ở cuối danh sách). Thay vào đó, tôi đã trực tiếp thay đổi liên kết thư viện bằng:
install_name_tool -change libmysqlclient.18.dylib /usr/local/mysql/lib/libmysqlclient.18.dylib ~/.rvm/gems/ruby-1.9.2-p180\@rails-3.1/gems/mysql-2.8.1/lib/mysql_api.bundle
Bây giờ otool chỉ cho tôi:
otool -L ~/.rvm/gems/ruby-1.9.2-p180\@rails-3.1/gems/mysql-2.8.1/lib/mysql_api.bundle
/Users/rowland/.rvm/gems/[email protected]/gems/mysql-2.8.1/lib/mysql_api.bundle:
/Users/rowland/.rvm/rubies/ruby-1.9.2-p180/lib/libruby.1.9.1.dylib (compatibility version 1.9.1, current version 1.9.1)
/usr/local/mysql/lib/libmysqlclient.18.dylib (compatibility version 18.0.0, current version 18.0.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 159.0.0)
/usr/lib/libobjc.A.dylib (compatibility version 1.0.0, current version 228.0.0)
và tất cả đều hạnh phúc trở lại. Tuy nhiên, điều này chỉ hoạt động trên Mac OS X.