Ruby 1.9.2 под RVM и MySQL уже инициализировал постоянные предупреждения - PullRequest
0 голосов
/ 06 августа 2010

При запуске Rails 3 RC с Ruby 1.9.2.rc2 под RVM я продолжаю получать очень большое количество ошибок из пакета драйверов MySQL, которые выглядят так:

/opt/local/rvm/gems/ruby-1.9.2-rc2/gems/mysql-2.8.1/lib/mysql_api.bundle: warning: already initialized constant MysqlRes
/opt/local/rvm/gems/ruby-1.9.2-rc2/gems/mysql-2.8.1/lib/mysql_api.bundle: warning: already initialized constant MysqlField
/opt/local/rvm/gems/ruby-1.9.2-rc2/gems/mysql-2.8.1/lib/mysql_api.bundle: warning: already initialized constant MysqlError
/opt/local/rvm/gems/ruby-1.9.2-rc2/gems/mysql-2.8.1/lib/mysql_api.bundle: warning: already initialized constant VERSION
/opt/local/rvm/gems/ruby-1.9.2-rc2/gems/mysql-2.8.1/lib/mysql_api.bundle: warning: already initialized constant OPT_CONNECT_TIMEOUT
/opt/local/rvm/gems/ruby-1.9.2-rc2/gems/mysql-2.8.1/lib/mysql_api.bundle: warning: already initialized constant OPT_COMPRESS
/opt/local/rvm/gems/ruby-1.9.2-rc2/gems/mysql-2.8.1/lib/mysql_api.bundle: warning: already initialized constant OPT_NAMED_PIPE
/opt/local/rvm/gems/ruby-1.9.2-rc2/gems/mysql-2.8.1/lib/mysql_api.bundle: warning: already initialized constant INIT_COMMAND

Это отображается в rails console и модульные тесты, все, что требует полного стека Rails, но не скрипт, который использует Sequel непосредственно в той же среде.

Хотя сам пакет загружается, а драйвер MySQL работает, эта огромная кучаПредупреждения предисловия все, что проходит через Rails.Обычно это происходит из-за избыточной загрузки гема mysql где-то в среде Rails.Gem объявлен в Gemfile:

gem 'rails', '3.0.0.rc'

gem 'haml'
gem 'sequel'

gem 'mysqlplus'
gem 'mysql'

Я полагаю, что это автозагрузчик Rails, который не может понять, что библиотека Mysql уже загружена и загружается снова.Есть ли простой способ исправить это?

Обновление:

Загрузка mysql или mysqlplus, но не оба одновременно, или вы получите предупреждения, подобныеэтот.mysqlplus включает в себя все функции mysql и является зависимостью от Sequel.

1 Ответ

1 голос
/ 17 августа 2010

Вам нужен драгоценный камень mysqlplus?Я использую Rails 3 только с mysql 2.8.1:

gem 'mysql', '2.8.1'

Хотя я не использовал mysqlplus, я предполагаю, что он устанавливает константы, которые вы видите в предупреждениях, а затем гем mysql устанавливает этиконстанты снова, когда он загружен.

ОБНОВЛЕНИЕ: используйте вместо mysql2

#gem 'mysql', '2.8.1'
gem 'mysql2'

Вам также необходимо обновить адаптеры базы данных в database.yml:

development:
  #adapter: mysql
  adapter: mysql2
  database: somedatabase_development
...