2012-08-02 3 views
1

내가 this question에서 유용한 코드의이 비트를 사용하려고 시도하고있다 "데이터베이스 구성 어댑터를 지정하지 않습니다"재설정 테스트 데이터베이스 불평 :

:
namespace :db do 
    namespace :test do 
    task :reset do 
     ActiveRecord::Base.establish_connection('test') 
     Rake::Task['db:drop'].invoke 
     Rake::Task['db:create'].invoke 
     Rake::Task['db:migrate'].invoke 
     ActiveRecord::Base.establish_connection(ENV['RAILS_ENV']) #Make sure you don't have side-effects! 
    end 
    end 
end 

불행하게도 나는이 오류를 얻고있다

** Invoke db:test:reset (first_time) 
** Execute db:test:reset 
rake aborted! 
database configuration does not specify adapter 
/home/nick/.rvm/gems/ruby-1.9.3-p194/gems/activerecord- 3.2.5/lib/active_record/connection_adapters/abstract/connection_specification.rb:45:in `resolve_hash_connection' 
/home/nick/.rvm/gems/ruby-1.9.3-p194/gems/activerecord-3.2.5/lib/active_record/connection_adapters/abstract/connection_specification.rb:39:in `resolve_string_connection' 
/home/nick/.rvm/gems/ruby-1.9.3-p194/gems/activerecord-3.2.5/lib/active_record/connection_adapters/abstract/connection_specification.rb:25:in `spec' 
/home/nick/.rvm/gems/ruby-1.9.3-p194/gems/activerecord-3.2.5/lib/active_record/connection_adapters/abstract/connection_specification.rb:127:in `establish_connection' 
/home/nick/Projects/yumbin/lib/tasks/test_environment.rake:4:in `block (3 levels) in <top (required)>' 
/home/nick/.rvm/gems/[email protected]/gems/rake-0.9.2.2/lib/rake/task.rb:205:in `call' 
/home/nick/.rvm/gems/[email protected]/gems/rake-0.9.2.2/lib/rake/task.rb:205:in `block in execute' 
/home/nick/.rvm/gems/[email protected]/gems/rake-0.9.2.2/lib/rake/task.rb:200:in `each' 
/home/nick/.rvm/gems/[email protected]/gems/rake-0.9.2.2/lib/rake/task.rb:200:in `execute' 
/home/nick/.rvm/gems/[email protected]/gems/rake-0.9.2.2/lib/rake/task.rb:158:in `block in invoke_with_call_chain' 
/home/nick/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/monitor.rb:211:in `mon_synchronize' 
/home/nick/.rvm/gems/[email protected]/gems/rake-0.9.2.2/lib/rake/task.rb:151:in `invoke_with_call_chain' 
/home/nick/.rvm/gems/[email protected]/gems/rake-0.9.2.2/lib/rake/task.rb:144:in `invoke' 
/home/nick/.rvm/gems/[email protected]/gems/rake-0.9.2.2/lib/rake/application.rb:116:in `invoke_task' 
/home/nick/.rvm/gems/[email protected]/gems/rake-0.9.2.2/lib/rake/application.rb:94:in `block (2 levels) in top_level' 
/home/nick/.rvm/gems/[email protected]/gems/rake-0.9.2.2/lib/rake/application.rb:94:in `each' 
/home/nick/.rvm/gems/[email protected]/gems/rake-0.9.2.2/lib/rake/application.rb:94:in `block in top_level' 
/home/nick/.rvm/gems/[email protected]/gems/rake-0.9.2.2/lib/rake/application.rb:133:in `standard_exception_handling' 
/home/nick/.rvm/gems/[email protected]/gems/rake-0.9.2.2/lib/rake/application.rb:88:in `top_level' 
/home/nick/.rvm/gems/[email protected]/gems/rake-0.9.2.2/lib/rake/application.rb:66:in `block in run' 
/home/nick/.rvm/gems/[email protected]/gems/rake-0.9.2.2/lib/rake/application.rb:133:in `standard_exception_handling' 
/home/nick/.rvm/gems/[email protected]/gems/rake-0.9.2.2/lib/rake/application.rb:63:in `run' 
/home/nick/.rvm/gems/[email protected]/gems/rake-0.9.2.2/bin/rake:33:in `<top (required)>' 
./bundler_stubs/rake:16:in `load' 
./bundler_stubs/rake:16:in `<main>' 
Tasks: TOP => db:test:reset 

본인은 RVM을 통해 Ruby 1.9.3을 사용하고 있습니다. 나는 Rails 3.2.5, Rake 버전 0.9.2.2 및 PostgreSQL 9.1을 사용 중이며 pg gem (0.13.2)을 사용하고 있습니다. 또한 내 환경에는 데이터베이스 오류가 없습니다. 응용 프로그램이 배포되어 Heroku에서 실행되고 개발 중에 로컬로 실행되며 문제없이 전체 테스트를 실행할 수 있습니다. Rails 콘솔에서 다음 행을 실행하십시오.

ActiveRecord::Base.establish_connection('test') 

이 성공합니다. 나는 보이지 않는 문자들에 대해 vi에서 database.yml을 검사했지만 아무 것도 찾을 수 없었다. 각 행 끝에 '$'만 입력하십시오. 그 대답은 믿을 수 없을만큼 단순하고 코 앞에서 생각하기 시작했으나 나는 그것을 볼 수 없습니다.

UPDATE : 내 database.yml을 파일 추가 :

# SQLite version 3.x 
# gem install sqlite3 
# 
# Ensure the SQLite 3 gem is defined in your Gemfile 
# gem 'sqlite3' 
development: 
    adapter: postgresql 
    encoding: unicode 
    database: myapp-dev 
    pool: 5 
    username: ****** 
    password: ******* 

# Warning: The database defined as "test" will be erased and 
# re-generated from your development database when you run "rake". 
# Do not set this db to the same as development or production. 
test: 
    adapter: postgresql 
    encoding: unicode 
    database: myapp-test 
    pool: 5 
    username: ***** 
    password: ****** 

production: 
    adapter: postgresql 
    encoding: unicode 
    database: myapp 
    pool: 5 
    username: ****** 
    password: ******* 
+0

'database.yml'을 보는 것이 도움이 될 것입니다. – BaronVonBraun

+0

죄송합니다. database.yml로 질문을 업데이트했습니다. – Nicholas

답변

1

당신은 당신의 database.yml 파일에 test 항목을해야하고, 나는 당신이 아마 하나 부족한 것 같아요. 당신이 database.yml이처럼 보이는 항목이 있는지 확인하십시오 :

test: 
    adapter: sqlite3 
    database: db/test.sqlite3 
    pool: 5 
    timeout: 5000 

개발 데이터베이스가 사용하는 어떤 어댑터와 데이터베이스를 사용.

관련 문제