Версия mysql2 (0.3.2) не поставляется вместе с адаптером ActiveRecord, поскольку теперь она является частью Rails 3.1

Привет, я использую rails версии 3.0.7, когда я запускаю рельсы, создавая имя модели: string я m получает следующее предупреждение

WARNING: This version of mysql2 (0.3.2) doesn't ship with the ActiveRecord adapter bundled anymore as it now part of Rails 3.1
WARNING: Please use the 0.2.x releases if you plan on using it in Rails <= 3.0.x
/usr/lib/ruby/gems/1.8/gems/activerecord-3.0.7/lib/active_record/connection_adapters/abstract/connection_specification.rb:71:in `establish_connection': Please install the mysql2 adapter: `gem install activerecord-mysql2-adapter` (no such file to load -- active_record/connection_adapters/mysql2_adapter) (RuntimeError)
    from /usr/lib/ruby/gems/1.8/gems/activerecord-3.0.7/lib/active_record/connection_adapters/abstract/connection_specification.rb:60:in `establish_connection'
    from /usr/lib/ruby/gems/1.8/gems/activerecord-3.0.7/lib/active_record/connection_adapters/abstract/connection_specification.rb:55:in `establish_connection'
    from /usr/lib/ruby/gems/1.8/gems/activerecord-3.0.7/lib/active_record/railtie.rb:59
    from /usr/lib/ruby/gems/1.8/gems/activesupport-3.0.7/lib/active_support/lazy_load_hooks.rb:36:in `instance_eval'
    from /usr/lib/ruby/gems/1.8/gems/activesupport-3.0.7/lib/active_support/lazy_load_hooks.rb:36:in `execute_hook'
    from /usr/lib/ruby/gems/1.8/gems/activesupport-3.0.7/lib/active_support/lazy_load_hooks.rb:43:in `run_load_hooks'
    from /usr/lib/ruby/gems/1.8/gems/activesupport-3.0.7/lib/active_support/lazy_load_hooks.rb:42:in `each'
    from /usr/lib/ruby/gems/1.8/gems/activesupport-3.0.7/lib/active_support/lazy_load_hooks.rb:42:in `run_load_hooks'
    from /usr/lib/ruby/gems/1.8/gems/activerecord-3.0.7/lib/active_record/base.rb:1904
    from /home/sun/railsapp/dog/vendor/plugins/attribute_fu/init.rb:1
    from /usr/lib/ruby/gems/1.8/gems/railties-3.0.7/lib/rails/plugin.rb:81
    from /usr/lib/ruby/gems/1.8/gems/railties-3.0.7/lib/rails/initializable.rb:25:in `instance_exec'
    from /usr/lib/ruby/gems/1.8/gems/railties-3.0.7/lib/rails/initializable.rb:25:in `run'
    from /usr/lib/ruby/gems/1.8/gems/railties-3.0.7/lib/rails/initializable.rb:50:in `run_initializers'
    from /usr/lib/ruby/gems/1.8/gems/railties-3.0.7/lib/rails/initializable.rb:49:in `each'
    from /usr/lib/ruby/gems/1.8/gems/railties-3.0.7/lib/rails/initializable.rb:49:in `run_initializers'
    from /usr/lib/ruby/gems/1.8/gems/railties-3.0.7/lib/rails/application.rb:134:in `initialize!'
    from /usr/lib/ruby/gems/1.8/gems/railties-3.0.7/lib/rails/application.rb:77:in `send'
    from /usr/lib/ruby/gems/1.8/gems/railties-3.0.7/lib/rails/application.rb:77:in `method_missing'
    from /home/sun/railsapp/dog/config/environment.rb:5
    from /usr/lib/ruby/gems/1.8/gems/railties-3.0.7/lib/rails/application.rb:103:in `require'
    from /usr/lib/ruby/gems/1.8/gems/railties-3.0.7/lib/rails/application.rb:103:in `require_environment!'
    from /usr/lib/ruby/gems/1.8/gems/railties-3.0.7/lib/rails/commands.rb:16
    from script/rails:6:in `require'
    from script/rails:6

когда я пытаюсь установить activerecord-mysql2-adapter: gem install activerecord-mysql2-adapter ОШИБКА: Не удалось найти действительный gem "activerecord-mysql2-adapter" ( >= 0) в любом репозитории

пожалуйста, помогите мне спасибо

Ответ 1

Проблема заключается в том, что вы пытаетесь установить последнюю версию mysql2, которая несовместима с версией rails 3.0.x

SO, в вашем Gemfile измените строку для mysql2 gem для этого:

gem 'mysql2', '< 0.3'

затем bundle команда

а затем, когда новый файл gem mysql2 (я думаю, равен 0.2.7), вы решите проблему

Ответ 2

если все еще не работает, попробуйте это тоже:

sudo install_name_tool -change libmysqlclient.18.dylib /usr/local/mysql/lib/libmysqlclient.18.dylib /Users/YOUR_USER_NAME/.rvm/gems/1.8/gems/mysql2-0.2.7/lib/mysql2/mysql2.bundle

Ответ 3

gem 'mysql2', '< 0.3 'является единственным способом для Rails 3.0.7 (до 3.1)

UPDATE: извините, это тоже не так, не работает, есть лучший способ:

vendor/bundle/ruby ​​/1.9.1/gems/mysql2-0.3.2/lib/active_record/connection_adapters $[rails307] $ls em_mysql2_adapter.rb mysql2_adapter.rb

возьмите файл mysql2_adapter.rb из mysql2 gem версии 0.2.x и скопируйте его в указанное место

теперь он работает для меня только с gem 'mysql2' в Gemfile

Ответ 4

После попытки решения, предлагаемого @eveevans, у меня все еще были проблемы с версией. Затем, прочитав предложение @rubyconvict, я вместо этого подумал об использовании опции -v для gem, а не о том, чтобы нажимать файлы.

Вот то, что я нашел, в конце концов разрешило мою борьбу с ужасным "сообщением mysql2 (0.3.2)" на DreamHost:

# in mysql, create example_app & example_app_test ...
# ... for the purposes of this example only, production == development db
rails new example_app --database=mysql --freeze
cd example_app
vim config/database.yml
#   change settings for host, user, password ...
#   ... database for test (example_app_test) ...
#   ... & database for production & development (example_app)

vim Gemfile
#   gem 'mysql2', '< 0.3'

gem uninstall mysql2        # if installed: gem list -d mysql2
gem install mysql2 -v 0.2.7 
rake db:migrate     

Оттуда я могу перейти на другое удовольствие от RoR, например, возможно, изменить маршруты (vim config/routes.rb... однако ваш пробег может меняться).

Ответ 5

ПРЕДУПРЕЖДЕНИЕ: используйте 0.2.x если вы планируете использовать его в Rails <= 3.0.x

поэтому вкратце используйте последнюю версию в ветке 0.2.x для драгоценного камня mysql2.