В моем гемфайле есть:
gem 'mysql2'
Моя database.yml выглядит следующим образом:
default: &default
adapter: mysql2
database: <%= ENV['db_name'] %>
username: <%= ENV['db_user'] %>
password: <%= ENV['db_pass'] %>
host: <%= ENV['db_host'] %>
pool: 32
socket: <%= ENV['socket'] %>
development:
<<: *default
production:
<<: *default
Я запустил и bundle update
, и bundle install
, и мой Gemfile.lock показывает mysql2.
Однако когда я запускаю rake db:migrate
, я получаю это как на моем компьютере, так и на промежуточном сервере:
myproject.com(master)$ rake db:migrate
WARNING: Use strings for Figaro configuration. 10000012508 was converted to "10000012508".
WARNING: Use strings for Figaro configuration. 860526407370038 was converted to "860526407370038".
rake aborted!
Gem::LoadError: Specified 'mysql2' for database adapter, but the gem is not loaded. Add `gem 'mysql2'` to your Gemfile (and ensure its version is at the minimum required by ActiveRecord).
.....
Просто чтобы убедиться, что это не плохая версия mysql2 или чего-то еще, я сделал bundle clean --force
и снова запустил bundle install
и bundle update
, а когда я запускаю gem list
, я вижу mysql2 (0.4.0)
и никаких других версий.
Любые идеи будут очень признательны.
РЕШЕНИЕ
В настоящее время это проблема с Rails 4.1.x и 4.2.x, согласно этому отчету об ошибке, это будет исправлено в следующем выпуске rails 4.2.x (ссылка на dcorr указана в комментариях).
А пока вы можете исправить это, выполнив пониженную версию mysql2 до версии 0.3.18, добавив эту строку в свой гем-файл:
gem 'mysql2', '~> 0.3.18'
bundle update mysql2
- person Pavan   schedule 08.09.2015mysql2 (0.4.0)
- это новейшая версия ruby gems, которая уже установлена. - person newUserNameHere   schedule 08.09.2015gem 'mysql2', '~> 0.3.18'
в Gemfile. - person newUserNameHere   schedule 08.09.2015