Ruby 1.9.2 y MySQL bajo RVM ya se ha inicializado constantes advertencias
-
26-09-2019 - |
Pregunta
Al ejecutar Rails 3 RC con Ruby 1.9.2.rc2 bajo RVM sigo recibiendo un gran número de errores en el controlador de MySQL paquete que tener este aspecto:
/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
Esto se muestra en las pruebas unitarias, rails console
y todo lo que requiere de los rieles completos pila, pero no un script que usa secuela directa en el mismo entorno.
A pesar de que el paquete en sí lo hace la carga y el conductor de MySQL funciona, esta enorme pila de ejecución advertencias prefacios nada a través de los carriles. Por lo general, esto se debe a una carga redundante de la joya alguna parte mysql
dentro del entorno de Rails. La gema se declara en el Gemfile:
gem 'rails', '3.0.0.rc'
gem 'haml'
gem 'sequel'
gem 'mysqlplus'
gem 'mysql'
Me supongo que esto es los rieles cargador automático no comprender la biblioteca MySQL ya ha sido cargado, y cargarlo de nuevo. ¿Hay una manera fácil de solucionar este problema?
Actualización:
mysql
carga o mysqlplus
pero no ambos al mismo tiempo o se obtendrá advertencias similares a estas. mysqlplus
incluye toda la funcionalidad de mysql
y es una dependencia de Sequel.
Solución
¿Es usted necesita la gema mysqlplus? Estoy usando Rails 3 con solamente MySQL 2.8.1:
gem 'mysql', '2.8.1'
A pesar de que no he utilizado mysqlplus, estoy adivinando que establece las constantes que están viendo en las advertencias, y luego la gema mysql establece estas constantes de nuevo cuando se carga.
ACTUALIZACIÓN: El uso mysql2 lugar
#gem 'mysql', '2.8.1' gem 'mysql2'
También es necesario actualizar los adaptadores de base de datos en database.yml:
development: #adapter: mysql adapter: mysql2 database: somedatabase_development