#mysql #ruby-on-rails #ruby #ruby-on-rails-3 #macos
#mysql #ruby-on-rails #ruby #ruby-on-rails-3 #macos
Вопрос:
- Платформа: Mac OS X (macosx) 10.6.6
- Ruby: 1.9.2
- Rails: 3.0.3
- Использование RVM
Это ошибка, которую я получаю:
$ rails s
/Users/nicolas/.rvm/gems/ruby-1.9.2-p180/gems/mysql2-0.2.7/lib/mysql2/mysql2.bundle: dlsym(0x13782a0, Init_mysql2): symbol not found - /Users/nicolas/.rvm/gems/ruby-1.9.2-p180/gems/mysql2-0.2.7/lib/mysql2/mysql2.bundle (LoadError)
from /Users/nicolas/.rvm/gems/ruby-1.9.2-p180/gems/mysql2-0.2.7/lib/mysql2.rb:8
from /Users/nicolas/.rvm/gems/ruby-1.9.2-p180/gems/bundler-1.0.13/lib/bundler/runtime.rb:68:in `require'
from /Users/nicolas/.rvm/gems/ruby-1.9.2-p180/gems/bundler-1.0.13/lib/bundler/runtime.rb:68:in `require'
from /Users/nicolas/.rvm/gems/ruby-1.9.2-p180/gems/bundler-1.0.13/lib/bundler/runtime.rb:66:in `each'
from /Users/nicolas/.rvm/gems/ruby-1.9.2-p180/gems/bundler-1.0.13/lib/bundler/runtime.rb:66:in `require'
from /Users/nicolas/.rvm/gems/ruby-1.9.2-p180/gems/bundler-1.0.13/lib/bundler/runtime.rb:55:in `each'
from /Users/nicolas/.rvm/gems/ruby-1.9.2-p180/gems/bundler-1.0.13/lib/bundler/runtime.rb:55:in `require'
from /Users/nicolas/.rvm/gems/ruby-1.9.2-p180/gems/bundler-1.0.13/lib/bundler.rb:120:in `require'
from /Users/nicolas/git/hits/config/application.rb:7
from /Users/nicolas/.rvm/gems/ruby-1.9.2-p180/gems/railties-3.0.6/lib/rails/commands.rb:28:in `require'
from /Users/nicolas/.rvm/gems/ruby-1.9.2-p180/gems/railties-3.0.6/lib/rails/commands.rb:28
from /Users/nicolas/.rvm/gems/ruby-1.9.2-p180/gems/railties-3.0.6/lib/rails/commands.rb:27:in `tap'
from /Users/nicolas/.rvm/gems/ruby-1.9.2-p180/gems/railties-3.0.6/lib/rails/commands.rb:27
from script/rails:6:in `require'
from script/rails:6
Это очень постоянная ошибка. Вот еще немного информации, которая может помочь решить эту проблему:
- В прошлом я обновился с Leopard до Snow Leopard.
- Я попытался установить пакет.
- Я попытался удалить ~ /.rvm и переустановить RVM
- Я пробовал: env ARCHFLAGS=»-arch x86_64″ gem установить mysql2 -v 0.2.7
- Я попытался установить последнюю версию mysql (mysql-5.5.12-osx10.6-x86_64.dmg) поверх любого mysql, который был в моей системе раньше
Вот еще немного информации о моей системе:
$ echo $DYLD_LIBRARY_PATH
/usr/local/mysql/lib:
$ file ~/.rvm/rubies/default/bin/ruby
/Users/nicolas/.rvm/rubies/default/bin/ruby: Mach-O 64-bit executable x86_64
$ file /usr/local/mysql/lib/libmysqlclient.18.dylib
/usr/local/mysql/lib/libmysqlclient.18.dylib: Mach-O 64-bit dynamically linked shared library x86_64
$ rvm list
rvm rubies
=> ruby-1.9.2-p180 [ x86_64 ]
$ which ruby
/opt/local/bin/ruby
$ file /opt/local/bin/ruby
/opt/local/bin/ruby: Mach-O executable i386
Комментарии:
1. Попробуйте указать gem ‘mysql2’, ‘0.2.7’
Ответ №1:
which ruby
говорит, что вы используете ruby, не поставляемый RVM. После установки RVM и ruby вы должны указать RVM использовать его:
rvm use --default 1.9.2
Если вы еще не установили ruby на RVM, вам необходимо установить его перед использованием:
rvm install 1.9.2
После этого вам, вероятно, потребуется снова установить rails, поскольку ваша текущая версия, вероятно, установлена с системой ruby, а не RVM.
Комментарии:
1. Спасибо, это сработало. Мне также нужно было удалить mysql2 gem и переустановить его следующим образом:
env ARCHFLAGS="-arch x86_64" gem install mysql2
я замечаю, что, хотя я запускаюrvm use --default 1.9.2
и работает, когда я открываю новый терминал,which ruby
все еще выдает мне системный ruby, если я не выполнюrvm use
команду снова (что, возможно, вызвало путаницу). Разве не в этом весь смысл--default
, то есть запоминать? Примечание: это последняя строка моего .bash_profile:source /Users/nicolas/.rvm/scripts/rvm
2. Да, он должен оставаться ruby по умолчанию, но я не знаю, почему этого не происходит.