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'

たとえば、次のようなレールプロジェクトに対して bundle exec db 操作を実行しようとすると:

bundle exec rake db:migrate

私のOSは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 に答える