1

我收到以下错误:

undefined method `sub' for nil:NilClass
/Users/jdrm/.rvm/gems/ruby-2.0.0-p247/gems/activerecord-3.2.13/lib/active_record/connection_adapters/abstract/connection_specification.rb:68:in `connection_url_to_hash'

当我尝试在任何 rails 项目上运行 bundle exec db 操作时,例如:

bundle exec rake db:migrate

我的操作系统是 Mac OS X 10.8.4,我使用 RVM 安装了 ruby​​,并且已经尝试使用以下版本:

ruby-1.9.3-p448 [ x86_64 ]
ruby-2.0.0-p0 [ x86_64 ]
ruby-2.0.0-p247 [ x86_64 ]

还尝试使用 rails 3.13 和 3.14。

我很感激任何关于这个问题的建议。

4

1 回答 1

3

相关代码来自connection_specification.rb

      spec = { :adapter  => adapter,
               :username => config.user,
               :password => config.password,
               :port     => config.port,
 =>            :database => config.path.sub(%r{^/},""),
               :host     => config.host }

发生错误是因为您的适配器没有数据库路径条目。但是,如果您遵循此处的逻辑,此方法会将 URI 转换为配置对象。不是你可能想要的。

那么为什么会这样呢?最可能的原因是找不到正确的配置。检查环境中 RAILS_ENV 的值(如果有),以及是否存在匹配的配置。

于 2013-08-07T18:20:47.590 回答