【发布时间】:2012-01-23 09:31:45
【问题描述】:
我的 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 时,它会报错:
rake 中止!
无法连接到服务器:没有这样的文件或目录 服务器是否在本地运行并接受 Unix 域套接字“/tmp/.s.PGSQL.5432”上的连接?
为什么它没有连接到我的测试数据库(db/test.sqlite3)。
而且,如果我像 rake test RAILS_ENV=test 这样运行测试,它运行良好。
RAILS_ENV=test 不是 rake 测试的默认设置吗?
我正在运行 rails 2.3.5 和 ruby 1.8.7,而我的 $RAILS_ENV 没有在我的 shell 中定义。
【问题讨论】:
-
echo $RAILS_ENV,有什么办法吗?粘贴你的 Rakefile。
-
实际上,我没有自定义的 Rakefile。我只是在 rails 中使用默认的 rake 文件。而且,我的 $RAILS_ENV 为空。
-
ok,do rake -T | grep test 粘贴结果,顺便说一下 rake test 有效吗?
-
好的,我明白了。根本原因是我在 database.yml 中用于开发的数据库连接指向无效的 psql 服务器。而且我猜'rake'会检查开发数据库是否有一些更新,在检查开发数据库后它仍在尝试使用测试数据库。所以解决方案是指向一个有效的数据库进行开发。
-
很有趣...但这并不能解释为什么使用 rake test:units RAILS_ENV=test 运行....为什么 rails 会检查呢?
标签: ruby-on-rails rake