2014-10-04 46 views
1

我的一些rSpec測試失敗了,我懷疑這是由於測試數據庫未被清除。當我嘗試運行rake db時:test:prepare,我得到下面的錯誤(我在Rails 3.2中)。顯然,這看起來像某種Postgres問題,看起來像rake任務試圖放棄測試數據庫,因此它可以重新填充它。生產數據庫模式加載正常。rake db:test:由於PG錯誤而準備出錯

我已經在lib/tasks /中查找了rake任務,但是我一直無法找到它。任何人都知道發生了什麼?

osx_user-> rake db:test:prepare 
[RailsAdmin] RailsAdmin initialization disabled by default. Pass SKIP_RAILS_ADMIN_INITIALIZER=false if you need it. 
rake aborted! 
ActiveRecord::StatementInvalid: PG::SyntaxError: ERROR: zero-length delimited identifier at or near """" 
LINE 1: DROP DATABASE IF EXISTS "" 
           ^
: DROP DATABASE IF EXISTS "" 
/Users/osx_user/.rvm/gems/ruby-1.9.3-p547/gems/activerecord-3.2.14/lib/active_record/connection_adapters/postgresql_adapter.rb:650:in `async_exec' 
/Users/osx_user/.rvm/gems/ruby-1.9.3-p547/gems/activerecord-3.2.14/lib/active_record/connection_adapters/postgresql_adapter.rb:650:in `block in execute' 
/Users/osx_user/.rvm/gems/ruby-1.9.3-p547/gems/activerecord-3.2.14/lib/active_record/connection_adapters/abstract_adapter.rb:280:in `block in log' 
/Users/osx_user/.rvm/gems/ruby-1.9.3-p547/gems/activesupport-3.2.14/lib/active_support/notifications/instrumenter.rb:20:in `instrument' 
/Users/osx_user/.rvm/gems/ruby-1.9.3-p547/gems/activerecord-3.2.14/lib/active_record/connection_adapters/abstract_adapter.rb:275:in `log' 
/Users/osx_user/.rvm/gems/ruby-1.9.3-p547/gems/activerecord-3.2.14/lib/active_record/connection_adapters/postgresql_adapter.rb:649:in `execute' 
/Users/osx_user/.rvm/gems/ruby-1.9.3-p547/gems/activerecord-3.2.14/lib/active_record/connection_adapters/postgresql_adapter.rb:772:in `drop_database' 
/Users/osx_user/.rvm/gems/ruby-1.9.3-p547/gems/activerecord-3.2.14/lib/active_record/railties/databases.rake:623:in `drop_database' 
/Users/osx_user/.rvm/gems/ruby-1.9.3-p547/gems/activerecord-3.2.14/lib/active_record/railties/databases.rake:532:in `block (3 levels) in <top (required)>' 
/Users/osx_user/.rvm/gems/ruby-1.9.3-p547/gems/activerecord-3.2.14/lib/active_record/railties/databases.rake:559:in `block (3 levels) in <top (required)>' 
/Users/osx_user/.rvm/gems/ruby-1.9.3-p547/bin/ruby_executable_hooks:15:in `eval' 
/Users/osx_user/.rvm/gems/ruby-1.9.3-p547/bin/ruby_executable_hooks:15:in `<main>' 
Tasks: TOP => db:test:load => db:test:purge 
(See full trace by running task with --trace) 

回答

1

想通了。我的開發環境的database.yml文件是這樣設置的:

database: <%= ENV['DATABASE_NAME_TEST'] %> 

rake任務正在尋找一個不存在的環境變量。