なぜ 'rake test'が開発DBに接続しようとしているのですか?

私はこのように私のconfig/database.ymlを持っている:

development:
  adapter: postgresql
  database: psql_dev
  username: postgres
  min_messages: WARNING

test:
  adapter: sqlite3
  database: db/test.sqlite3
  min_messages: WARNING

rake test:unitsを実行すると、エラーが報告されます:

レーキが中止されました!

     

サーバーに接続できませんでした:そのようなファイルやディレクトリはありません           サーバーがローカルで実行されており、受け入れていますか?           Unixドメインソケット "/tmp/.s.PGSQL.5432"上の接続?

なぜ私のテストDB(db/test.sqlite3)に接続しなかったのですか?

そして、この rake test RAILS_ENV = test のようなテストを実行するとうまくいきます。

rake testのデフォルト設定は RAILS_ENV = test ではありませんか?

ruby​​ 1.8.7 rails 2.3.5 を実行していて、自分の $ RAILS_ENV がシェルで定義されていません。

5
よく、良い点。私はこれについて考えていない。
追加された 著者 Rocky,
OK、問題があります。根本的な原因は、database.ymlの開発用DB接続が無効なpsqlサーバを指していることです。そして、私は 'rake'が開発DBのアップデートをチェックしていると思っていますが、まだ開発DBを確認した上でテストDBを使用しようとしています。したがって、解決策は、開発のための有効なDBを指すことです。
追加された 著者 Rocky,
実際には、カスタマイズされたRakefileはありません。私はレールのデフォルトレーキファイルを使用しています。私の$ RAILS_ENVはnullです。
追加された 著者 Rocky,
エコー$ RAILS_ENV、それは何でもいいですか? Rakefileを貼り付けてください。
追加された 著者 daniel,
面白いです...しかしそれはなぜrakeテストで走るのか説明していません:units RAILS_ENV = test works ....なぜレールがチェックするのですか?
追加された 著者 daniel,
大丈夫ですか? grepテスト結果をペーストします.btwはレイクテストを行いますか?
追加された 著者 daniel,

2 答え

rake test rake db:test:prepare に依存し、現在のスキーマを development データベースからロードしようとします。開発データベースで移行を実行すると、テストデータベースがどのように更新されるのですか

3
追加された
それだけです、ありがとう!
追加された 著者 Rocky,

あなたはテストを持っていますか?ユニットレーキタスク?実行:

rake test

それは動作しますか?また、次の出力を貼り付けることもできます:

rake -T | grep tests
1
追加された
ここに 'rake test'の出力があります: pastebin.com/ZMejUjp8
追加された 著者 Rocky,
OK、もしあなたが何か結果があれば、この答えに更新してください。私はこれを受け入れる。
追加された 著者 Rocky,
ダニエルありがとう。私はこれを修正した。 rakeタスクがまず開発DBに接続して何らかのチェックを行うように見えます。
追加された 著者 Rocky,
ええ、test/test_helper.rbがあり、ENV ["RAILS_ENV"] = "test"が最初の行にあります。そして私は自分のフォルダをgrepしましたが、この値を変更しようとしている他の場所はありません。
追加された 著者 Rocky,
config/database.ymlを変更しようとしましたが、開発セクションをtestセクションと同じように変更しました。それはうまくいく。だから私は 'レーキテスト'が開発DBに接続していると言うことができます。
追加された 著者 Rocky,
しかし、私が言ったように、 'rake test:units RAILS_ENV = test'は期待通りにうまくいく。
追加された 著者 Rocky,
私の機能テストはうまくいったが、単体テストでは失敗したようだ。しかし、「rake test:functionalals」を実行すると、「rake test:units」のようにエラーが報告されます。
追加された 著者 Rocky,
追加された 著者 Rocky,
だからあなたはテストを持っている:ユニット...レーキテスト作業はしますか?
追加された 著者 daniel,
多分あなたはユニットテストのdbに接続していますか?あなたのユニットテストを見て、何かソケットが必要なのでしょうか?
追加された 著者 daniel,
rake test:unitsが実行されたときのRAILS_ENVの値を調べるためにENV ['RAILS_ENV']をテストするだけです。私はテスト以外の何かが疑わしい
追加された 著者 daniel,
レール2.3.5、レール3はtest/hello.rbでテストするためのenvを設定しています。最初の行はENV ["RAILS_ENV"] = "test"です。
追加された 著者 daniel,
あなたのテストの一つがうまくブレークポイントになっていることを確認し、RAILS_ENV = test ...を確認してください。問題はどこか別のものだと思います。
追加された 著者 daniel,
test_helper.rbがロードされる前にRAILS_ENV = "development"という説明があり、test:unitsタスクが呼び出されたときにその前に何かが接続されているため、失敗しました。コマンドラインからRAILS_ENV = testを設定すると、これは起こりませんでした。私は実際には、test_helper.rbがロードされる前にdbに接続しているものを見つけるでしょう。
追加された 著者 daniel,