Rails 4.0 Spork/ActiveRecord异常

ore*_*nyk 23 ruby-on-rails spork railstutorial.org

我一直在使用Michael Hartl的Rails Tutorial来获取Ruby on Rails,并且最近一直在使用本教程的新Rails 4.0版本.我遇到了Spork的问题; 我知道我们正在使用Spork for Rails 4.0兼容性的自定义分支,这可能只是一个不同的不兼容性,但我想发布我的问题,看看我是做错了什么或者是否有任何想法.每当我在Spork运行时调用RSpec我得到一个ActiveRecord异常,而如果我自己调用RSpec我的测试成功运行 - 下面是一个示例终端转储:

oren@VM:~/ruby_projects/test_app$ rspec
Exception encountered: #<ActiveRecord::ConnectionNotEstablished: ActiveRecord::ConnectionNotEstablished>
backtrace:
/home/oren/.rvm/gems/ruby-2.0.0-p195@rails_4_0/gems/activerecord-4.0.0/lib/active_record/connection_adapters/abstract/connection_pool.rb:546:in `retrieve_connection'
/home/oren/.rvm/gems/ruby-2.0.0-p195@rails_4_0/gems/activerecord-4.0.0/lib/active_record/connection_handling.rb:79:in `retrieve_connection'
/home/oren/.rvm/gems/ruby-2.0.0-p195@rails_4_0/gems/activerecord-4.0.0/lib/active_record/connection_handling.rb:53:in `connection'
/home/oren/.rvm/gems/ruby-2.0.0-p195@rails_4_0/gems/activerecord-4.0.0/lib/active_record/migration.rb:792:in `current_version'
/home/oren/.rvm/gems/ruby-2.0.0-p195@rails_4_0/gems/activerecord-4.0.0/lib/active_record/migration.rb:800:in `needs_migration?'
/home/oren/.rvm/gems/ruby-2.0.0-p195@rails_4_0/gems/activerecord-4.0.0/lib/active_record/migration.rb:379:in `check_pending!'
/home/oren/ruby_projects/test_app/spec/spec_helper.rb:105:in `<top (required)>'
/home/oren/.rvm/gems/ruby-2.0.0-p195@rails_4_0/gems/activesupport-4.0.0/lib/active_support/dependencies.rb:222:in `load'
/home/oren/.rvm/gems/ruby-2.0.0-p195@rails_4_0/gems/activesupport-4.0.0/lib/active_support/dependencies.rb:222:in `block in load'
/home/oren/.rvm/gems/ruby-2.0.0-p195@rails_4_0/gems/activesupport-4.0.0/lib/active_support/dependencies.rb:213:in `load_dependency'
/home/oren/.rvm/gems/ruby-2.0.0-p195@rails_4_0/gems/activesupport-4.0.0/lib/active_support/dependencies.rb:222:in `load'
/home/oren/.rvm/gems/ruby-2.0.0-p195@rails_4_0/gems/spork-1.0.0rc3/lib/spork/run_strategy/forking.rb:11:in `block in run'
/home/oren/.rvm/gems/ruby-2.0.0-p195@rails_4_0/gems/spork-1.0.0rc3/lib/spork/forker.rb:21:in `block in initialize'
/home/oren/.rvm/gems/ruby-2.0.0-p195@rails_4_0/gems/spork-1.0.0rc3/lib/spork/forker.rb:18:in `fork'
/home/oren/.rvm/gems/ruby-2.0.0-p195@rails_4_0/gems/spork-1.0.0rc3/lib/spork/forker.rb:18:in `initialize'
/home/oren/.rvm/gems/ruby-2.0.0-p195@rails_4_0/gems/spork-1.0.0rc3/lib/spork/run_strategy/forking.rb:9:in `new'
/home/oren/.rvm/gems/ruby-2.0.0-p195@rails_4_0/gems/spork-1.0.0rc3/lib/spork/run_strategy/forking.rb:9:in `run'
/home/oren/.rvm/gems/ruby-2.0.0-p195@rails_4_0/gems/spork-1.0.0rc3/lib/spork/server.rb:48:in `run'
/home/oren/.rvm/rubies/ruby-2.0.0-p195/lib/ruby/2.0.0/drb/drb.rb:1588:in `perform_without_block'
/home/oren/.rvm/rubies/ruby-2.0.0-p195/lib/ruby/2.0.0/drb/drb.rb:1548:in `perform'
/home/oren/.rvm/rubies/ruby-2.0.0-p195/lib/ruby/2.0.0/drb/drb.rb:1626:in `block (2 levels) in main_loop'
/home/oren/.rvm/rubies/ruby-2.0.0-p195/lib/ruby/2.0.0/drb/drb.rb:1622:in `loop'
/home/oren/.rvm/rubies/ruby-2.0.0-p195/lib/ruby/2.0.0/drb/drb.rb:1622:in `block in main_loop'
Run Code Online (Sandbox Code Playgroud)

我可以根据要求提供我的应用程序中的任何文件,我只是不确定什么是最有用的.我基本上遵循了本教程第3章的前几个步骤(设置新应用程序,添加StaticPages控制器,设置RSpec,添加第一个规范)以及设置Guard和Spork的说明(第3.6.2和3.6节) 0.3).

谢谢你的帮助!

zgo*_*ohr 58

spec/spec_helper.rb可能有问题.用https://github.com/railstutorial/sample_app_rails_4/blob/master/spec/spec_helper.rb替换你所拥有的内容,看看是否能解决这个问题.

  • 就是这样.我没有意识到我必须将现有的环境代码移动到`Spork.prefork`块中,所以我刚刚复制了清单[3.37]中的代码(http://ruby.railstutorial.org/chapters/static -pages?version = 4.0#code-spork_spec_helper)进入该块.这留下了块下面的第二个副本,我猜这是整个事情搞乱了.谢谢! (7认同)
  • 我有同样的问题,更新spec/spec_helper.rb但不起作用......但是...这是我的错,我必须重新启动spork服务器. (2认同)