當在RVM下運行Rails 3 RC和Ruby 1.9.2.rc2時,我一直從MySQL驅動程序捆綁包中看到如下所示的大量錯誤:RVM和MySQL下的Ruby 1.9.2已經初始化了常量警告
/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運行的任何東西。通常這是由於在Rails環境中某處存在多餘的負載。創業板在Gemfile中宣稱:
gem 'rails', '3.0.0.rc'
gem 'haml'
gem 'sequel'
gem 'mysqlplus'
gem 'mysql'
我想這是Rails自動加載不理解MySQL庫已加載,並重新裝入。有沒有簡單的方法來解決這個問題?
更新:
負載mysql
或mysqlplus
但不能同時在同一時間或你會得到這樣的警告。 mysqlplus
包括mysql
的所有功能,並且是Sequel的依賴項。
我已經收窄到'mysqlplus'寶石,但無法證實原因。 – tadman 2010-08-09 16:14:02