dm-mysql2-adapter(LoadError)但为什么呢?

时间:2011-07-23 12:17:14

标签: ruby-on-rails configuration rubygems

我正在处理的问题如下。我已经安装了一个全新的红宝石环境。在我目前的项目中,我想使用以下宝石:

RAILS_VERSION = '~> 3.0.4'
DM_VERSION    = '~> 1.1.0'

gem 'rails', '3.0.9'

# Database & ORM
gem 'mysql2', '< 0.3'
gem 'data_mapper',        DM_VERSION
gem 'dm-mysql-adapter',   DM_VERSION
gem 'dm-rails',           DM_VERSION

# Authentication
gem 'devise'
gem 'dm-devise'

我有以下database.yml:

defaults: &defaults
  adapter: mysql2
  encoding: utf8
  reconnect: false
  pool: 5
  username: blabla
  password: albalb
  host: localhost
  socket: /tmp/mysql.sock

执行“捆绑安装”不会导致任何类型的错误。但是只要我想对数据库做一些事情(比如“rails s”或“rake db:migrate”),就会发生以下错误:

/Users/Gery/.rvm/gems/ruby-1.8.7-p352/gems/activesupport-3.0.9/lib/active_support/dependencies.rb:239:in `require': no such file to load -- dm-mysql2-adapter (LoadError)
from /Users/Gery/.rvm/gems/ruby-1.8.7-p352/gems/activesupport-3.0.9/lib/active_support/dependencies.rb:239:in `require'
from /Users/Gery/.rvm/gems/ruby-1.8.7-p352/gems/activesupport-3.0.9/lib/active_support/dependencies.rb:225:in `load_dependency'
from /Users/Gery/.rvm/gems/ruby-1.8.7-p352/gems/activesupport-3.0.9/lib/active_support/dependencies.rb:596:in `new_constants_in'
from /Users/Gery/.rvm/gems/ruby-1.8.7-p352/gems/activesupport-3.0.9/lib/active_support/dependencies.rb:225:in `load_dependency'
from /Users/Gery/.rvm/gems/ruby-1.8.7-p352/gems/activesupport-3.0.9/lib/active_support/dependencies.rb:239:in `require'

你知道如何解决这个问题吗?

最诚挚的问候,

了Gerardo

2 个答案:

答案 0 :(得分:4)

我刚进入#datamapper并且solnic帮助我理解了这一点:没有必要在DataMapper中使用mysql2 gem,因为do-mysql(DataObject驱动程序dm-mysql-adapter依赖于访问MySQL存储库)没有字符编码问题,这就是我(以及大多数人,我认为)在ActiveRecord项目中使用mysql2驱动程序的原因。

所以答案是,除非我弄错你为什么要使用它,否则从你的Gemfile和你的database.yml文件中删除mysql2(用mysql替换它)并做一个新的bundle install,你不应该需要它。

答案 1 :(得分:0)

由于亚标准编码,这是dm-core中的一个错误。我已经提交了一个黑客修复此黑客并在此处提交了一个拉取请求:https://github.com/datamapper/dm-core/pull/154