红宝石1.9.2 RVM和MySQL下已经初始化持续警告
-
26-09-2019 - |
题
在使用Ruby 1.9.2.rc2 RVM下运行的Rails 3 RC我一直得到一个非常大的错误数量从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堆栈,而不是直接在相同环境下使用续集的脚本。
虽然包本身并没有负载和MySQL驱动程序不工作,警告序跋任何运行的这个巨大的堆通过导轨。通常这个结果从Rails环境中的mysql
宝石某处的冗余负载。宝石在Gemfile中宣称:
gem 'rails', '3.0.0.rc'
gem 'haml'
gem 'sequel'
gem 'mysqlplus'
gem 'mysql'
我想这是Rails自动加载不理解MySQL库已加载,并重新装入。有一种简单的方法来解决这个问题?
<强>更新强>
加载mysql
或mysqlplus
但不能同时在同一时间或你会得到这样的警告。 mysqlplus
包括所有的mysql
的功能和是续集的依赖关系。
解决方案
你需要的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
不隶属于 StackOverflow