2013-04-29 55 views
-2

我試圖學習Rails,並遇到一些問題,我不明白。我從Hartl的書開始,看着這個錯誤信息,看起來像是我爲此做了些什麼。數據庫錯誤與Rails測試

現在我正在一個新項目中,當我嘗試對我的路線文件運行測試時,我得到了這個。

1) Error: 
test_that_/login_route_opens_the_login_page(CursomRoutesTest): 
ActiveRecord::StatementInvalid: Could not find table 'statuses' 
/Users/TomEllis/.rvm/gems/[email protected]/gems/activerecord-3.2.13/lib/active_record/connection_adapters/sqlite_adapter.rb:472:in `table_structure' 
/Users/TomEllis/.rvm/gems/[email protected]/gems/activerecord-3.2.13/lib/active_record/connection_adapters/sqlite_adapter.rb:346:in `columns' 
/Users/TomEllis/.rvm/gems/[email protected]/gems/activerecord-3.2.13/lib/active_record/fixtures.rb:660:in `column_names' 
/Users/TomEllis/.rvm/gems/[email protected]/gems/activerecord-3.2.13/lib/active_record/fixtures.rb:652:in `timestamp_column_names' 
/Users/TomEllis/.rvm/gems/[email protected]/gems/activerecord-3.2.13/lib/active_record/fixtures.rb:585:in `block in table_rows' 
/Users/TomEllis/.rvm/gems/[email protected]/gems/activerecord-3.2.13/lib/active_record/fixtures.rb:579:in `each' 
/Users/TomEllis/.rvm/gems/[email protected]/gems/activerecord-3.2.13/lib/active_record/fixtures.rb:579:in `map' 
/Users/TomEllis/.rvm/gems/[email protected]/gems/activerecord-3.2.13/lib/active_record/fixtures.rb:579:in `table_rows' 
/Users/TomEllis/.rvm/gems/[email protected]/gems/activerecord-3.2.13/lib/active_record/fixtures.rb:494:in `block (3 levels) in create_fixtures' 
/Users/TomEllis/.rvm/gems/[email protected]/gems/activerecord-3.2.13/lib/active_record/fixtures.rb:492:in `each' 
/Users/TomEllis/.rvm/gems/[email protected]/gems/activerecord-3.2.13/lib/active_record/fixtures.rb:492:in `block (2 levels) in create_fixtures' 
/Users/TomEllis/.rvm/gems/[email protected]/gems/activerecord-3.2.13/lib/active_record/connection_adapters/abstract/database_statements.rb:192:in `transaction' 
/Users/TomEllis/.rvm/gems/[email protected]/gems/activerecord-3.2.13/lib/active_record/fixtures.rb:491:in `block in create_fixtures' 
/Users/TomEllis/.rvm/gems/[email protected]/gems/activerecord-3.2.13/lib/active_record/connection_adapters/abstract_adapter.rb:168:in `disable_referential_integrity' 
/Users/TomEllis/.rvm/gems/[email protected]/gems/activerecord-3.2.13/lib/active_record/fixtures.rb:476:in `create_fixtures' 
/Users/TomEllis/.rvm/gems/[email protected]/gems/activerecord-3.2.13/lib/active_record/fixtures.rb:895:in `load_fixtures' 
/Users/TomEllis/.rvm/gems/[email protected]/gems/activerecord-3.2.13/lib/active_record/fixtures.rb:849:in `setup_fixtures' 
/Users/TomEllis/.rvm/gems/[email protected]/gems/activesupport-3.2.13/lib/active_support/callbacks.rb:418:in `_run__3689392786993953837__setup__3124079788890242138__callbacks' 
/Users/TomEllis/.rvm/gems/[email protected]/gems/activesupport-3.2.13/lib/active_support/callbacks.rb:405:in `__run_callback' 
/Users/TomEllis/.rvm/gems/[email protected]/gems/activesupport-3.2.13/lib/active_support/callbacks.rb:385:in `_run_setup_callbacks' 
/Users/TomEllis/.rvm/gems/[email protected]/gems/activesupport-3.2.13/lib/active_support/callbacks.rb:81:in `run_callbacks' 
/Users/TomEllis/.rvm/gems/[email protected]/gems/activesupport-3.2.13/lib/active_support/testing/setup_and_teardown.rb:35:in `run' 

1 tests, 0 assertions, 0 failures, 1 errors, 0 skips 
+0

搜索失敗: http://stackoverflow.com/questions/6345319/could-not-find-table-users 不過,任何人都可以解釋參考rails3tutorial是在礦井寶石什麼,以及如何將其刪除? – 2013-04-29 14:42:44

+0

如果您的意思是'rails3tutorial2ndEd',那就是您的RVM gemset的名稱。 – sevenseacat 2013-04-29 14:49:50

+0

對不起,我不明白你的意思。這就是我在用Rails掙扎的原因。我發現了一些人們喜歡的教程和指南,但他們並沒有真正解釋所有這些東西。 我可以得到一個美妙的社交網絡,但我還沒有弄清楚RVM gemset是什麼,但我仍然不明白db:命令的作用。 你能告訴我這是我的第一個後端語言嗎?... – 2013-04-29 15:31:26

回答

4

您可能還沒有運行rake任務來準備測試數據庫:

bundle exec rake db:test:prepare 
1

bundle exec rake db:test:clone

1

我也是一個Rails的新手,我遇到了一個非常類似的問題(工作在不同的項目上,但得到Hartl的錯誤)。在仔細研究了我的腦海和Google搜索之後,我相信我發現了整體問題和解決方案。

不過,任何人都可以解釋什麼對rails3tutorial的引用是在寶石中,以及如何刪除它?

當我們開始軌道教程,哈特爾勸我們運行下面的命令:

$ rvm use [email protected] --create --default 
Using /Users/mhartl/.rvm/gems/ruby-1.9.3 with gemset rails3tutorial2ndEd 

http://ruby.railstutorial.org/ruby-on-rails-tutorial-book?version=3.2#sec-install_rubygems

結果?

...任何時候我們打開一個新的終端窗口[email protected] Ruby/gemset組合會被自動選中。

我解決了這個問題通過運行:

rvm use 1.9.3-p484 --default 

http://rvm.io/gemsets/using

這使得 「常規」 寶石我們默認的寶石(相對於我們的定製哈特教程寶石)。我很確定「常規寶石」是一個錯誤的術語,但我仍處於初級階段,所以我向所有了解正確術語的人道歉。我希望這有助於!