Ruby 1.9.2 под RVM и MySQL уже инициализировали постоянные предупреждения
-
26-09-2019 - |
Вопрос
При ходу 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
И модифицированные тесты, все, что требует полных рельсов стека, но не скрипт, который использует продолжение непосредственно в той же среде.
Хотя сам пакет загрузка, и водитель MySQL работает, эта огромная куча предупреждений преодолевает все пробежки через рельсы. Обычно это результаты из избыточной нагрузки mysql
Gem где-то в среде рельсов. GEM объявляется в GemFile:
gem 'rails', '3.0.0.rc'
gem 'haml'
gem 'sequel'
gem 'mysqlplus'
gem 'mysql'
Я полагаю, что это рельсы автозагрузчика, не понимая, что библиотека MySQL уже загружена, и загрузка ее снова. Есть ли простой способ исправить это?
Обновлять:
Нагрузка mysql
или mysqlplus
Но не оба одновременно, либо вы получите следующие предупреждения. mysqlplus
включает в себя все функциональные возможности mysql
и является зависимостью продолжения.
Решение
Вам нужен Gem MySqlplus? Я использую Rails 3 с только MySQL 2.8.1:
GEM 'MYSQL', «2.8.1»
Хотя я не использовал MySqlplus, я предполагаю, что он устанавливает константы, которые вы видите в предупреждениях, а затем GEM MySQL снова устанавливает эти константы, когда он загружен.
Обновление: используйте MySQL2 вместо
#gem 'mysql', '2.8.1' Gem 'MySQL2'
Вам также необходимо обновить адаптеры базы данных в базе данных .yml:
Разработка: #Adapter: MySQL Adapter: база данных mysql2: somedatabase_development