Rails: ищет неправильные источники в gemfile.как исправить? - PullRequest
0 голосов
/ 25 июля 2011

Предупреждение новичка ...

Пытаясь исправить проблему с моим сервером rails webrick (т.е. начать работу), я использовал старый ответ Stackoverflow старый ответ и выполнил следующую команду

sudo install_name_tool -change libmysqlclient.16.dylib /usr/local/mysql/lib/libmysqlclient.16.dylib /Library/Ruby/Gems/1.8/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle

Однако я забыл изменить номера версий.Например, мой mysql равен 0.3.6 (в отличие от 0.2.6 в команде), а также libmysqlclient.18 вместо .16.

Теперь, когда я пытаюсь запустить сервер rails, он говорит

Could not find gem 'mysql2 (~> 0.2.6)' in any of the gem sources listed in your Gemfile.

Я попытался повторно запустить эту команду с обновленными версиями, но она ничего не изменила ... На самом деле, она даже не спрашивает у меня мой пароль root ... Любые идеи, как я могу это сделатьустранить эту проблему?

Обновление - это список драгоценных камней, производимых, когда я делаю gem list.Первый человек, который ответил на этот вопрос, предложил (в его комментариях) удалить mysql .0.2.6, но этот гем никогда не был установлен.Когда я выполнил команду name_tool, описанную выше, она сказала системе искать mysql 0.2.6, тогда как я должен был сказать, что она ищет mysql2-0.3.6.

abstract (1.0.0)
actionmailer (3.0.9, 3.0.7)
actionpack (3.0.9, 3.0.7)
activemodel (3.0.9, 3.0.7)
activerecord (3.0.9, 3.0.7)
activeresource (3.0.9, 3.0.7)
activesupport (3.0.9, 3.0.7)
arel (2.0.10)
builder (2.1.2)
bundler (1.0.14)
erubis (2.6.6)
i18n (0.5.0)
mail (2.2.19)
mime-types (1.16)
mysql2 (0.3.6)
polyglot (0.3.1)
rack (1.2.3)
rack-mount (0.6.14)
rack-test (0.5.7)
rails (3.0.9, 3.0.7)
railties (3.0.9, 3.0.7)
rake (0.9.1)
rdoc (3.8)
rubygems-update (1.8.5)
thor (0.14.6)
treetop (1.4.9)
tzinfo (0.3.27)

Обновление - после следования инструкциям в ответе Эрика Ху, я получил этот результат, когда я запустил rails server из папки своего проекта

2011-07-26 01:49:17 rails s
/Library/Ruby/Gems/1.8/gems/mysql2-0.2.11/lib/mysql2/mysql2.bundle: dlopen(/Library/Ruby/Gems/1.8/gems/mysql2-0.2.11/lib/mysql2/mysql2.bundle, 9): Library not loaded: libmysqlclient.18.dylib (LoadError)
  Referenced from: /Library/Ruby/Gems/1.8/gems/mysql2-0.2.11/lib/mysql2/mysql2.bundle
  Reason: image not found - /Library/Ruby/Gems/1.8/gems/mysql2-0.2.11/lib/mysql2/mysql2.bundle
    from /Library/Ruby/Gems/1.8/gems/mysql2-0.2.11/lib/mysql2.rb:9
    from /Library/Ruby/Gems/1.8/gems/bundler-1.0.14/lib/bundler/runtime.rb:68:in `require'
    from /Library/Ruby/Gems/1.8/gems/bundler-1.0.14/lib/bundler/runtime.rb:68:in `require'
    from /Library/Ruby/Gems/1.8/gems/bundler-1.0.14/lib/bundler/runtime.rb:66:in `each'
    from /Library/Ruby/Gems/1.8/gems/bundler-1.0.14/lib/bundler/runtime.rb:66:in `require'
    from /Library/Ruby/Gems/1.8/gems/bundler-1.0.14/lib/bundler/runtime.rb:55:in `each'
    from /Library/Ruby/Gems/1.8/gems/bundler-1.0.14/lib/bundler/runtime.rb:55:in `require'
    from /Library/Ruby/Gems/1.8/gems/bundler-1.0.14/lib/bundler.rb:120:in `require'
    from /Users/michaelmitchell/Sites/simple_cms/config/application.rb:7
    from /Library/Ruby/Gems/1.8/gems/railties-3.0.9/lib/rails/commands.rb:28:in `require'
    from /Library/Ruby/Gems/1.8/gems/railties-3.0.9/lib/rails/commands.rb:28
    from /Library/Ruby/Gems/1.8/gems/railties-3.0.9/lib/rails/commands.rb:27:in `tap'
    from /Library/Ruby/Gems/1.8/gems/railties-3.0.9/lib/rails/commands.rb:27
    from script/rails:6:in `require'
    from script/rails:6

Обновление - я сделал список пакетовкак предложил Эрик в своем комментарии

Gems included by the bundle:
  * abstract (1.0.0)
  * actionmailer (3.0.9)
  * actionpack (3.0.9)
  * activemodel (3.0.9)
  * activerecord (3.0.9)
  * activeresource (3.0.9)
  * activesupport (3.0.9)
  * arel (2.0.10)
  * builder (2.1.2)
  * bundler (1.0.14)
  * erubis (2.6.6)
  * i18n (0.5.0)
  * mail (2.2.19)
  * mime-types (1.16)
  * mysql2 (0.2.11)
  * polyglot (0.3.1)
  * rack (1.2.3)
  * rack-mount (0.6.14)
  * rack-test (0.5.7)
  * rails (3.0.9)
  * railties (3.0.9)
  * rake (0.9.2)
  * rdoc (3.8)
  * thor (0.14.6)
  * treetop (1.4.9)
  * tzinfo (0.3.29)

Ответы [ 2 ]

3 голосов
/ 26 июля 2011

Я полагаю, что вы испытываете путаницу из-за использования bundler и RubyGems.Когда вы gem install <gemname>, вы используете команды RubyGems для установки новейшей версии <gemname>.

Проекты Rails поставляются с гемом bundler, который также управляет гемами.Bundler создает отдельную копию гемов для каждого проекта Rails, для которого вы создаете Gemfile.Если вы не помните создание Gemfile, это потому, что это один из файлов, который rails new <projectname> сгенерирует для вас.

Скорее всего, вы не запустили bundle install.Прежде чем вы это сделаете, перейдите в папку для вашего текущего проекта Rails и откройте Gemfile, просто чтобы вы знали, что происходит.Готов поспорить, что там есть такая строка: gem 'mysql2', '~> 0.2.6'

Чтобы установить нужную версию, перейдите в папку вашего проекта в командной строке.Тип bundle install.Дайте ему минуту, и это должно быть так - попробуйте снова запустить rails s.

Если это кажется запутанным и ненужным, просто помните, что когда кто-то обновляет драгоценный камень, он может изменить его таким образом, что это сломаетваша программа.Bundler предоставляет вам сервис, гарантируя, что ваша программа работает с определенными версиями необходимых гемов (в данном случае, mysql2-0.2.6 вместо mysql2-0.3.6).

0 голосов
/ 25 июля 2011

Очистите этот драгоценный камень и переустановите его.

Как вариант, RVM + Mac Homebrew для установки MySQL творит чудеса.

...