2013-04-29 83 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

这使得 “常规” 宝石我们默认的宝石(相对于我们的定制哈特教程宝石)。我很确定“常规宝石”是一个错误的术语,但我仍处于初级阶段,所以我向所有了解正确术语的人道歉。我希望这有助于!