Spork无法加载这样的文件?

时间:2012-06-12 00:40:56

标签: rspec-rails spork

我有一个spork gem问题。每次我运行spork命令时都会遇到这个长错误:

evan@TheBeast-Computer:~/rails_projects/sample_app$ spork
Using RSpec
Preloading Rails environment
Loading Spork.prefork block...
cannot load such file -- /home/evan/rails_projects/sample_app/spec_helper (LoadError)
/home/evan/rails_projects/sample_app/spec/spec_helper.rb:57:in `require_relative'
/home/evan/rails_projects/sample_app/spec/spec_helper.rb:57:in `block in <top (required)>'
/home/evan/.rvm/gems/ruby-1.9.3-p194/gems/spork-0.9.2/lib/spork.rb:24:in `prefork'
/home/evan/rails_projects/sample_app/spec/spec_helper.rb:6:in `<top (required)>'
/home/evan/.rvm/gems/ruby-1.9.3-p194/gems/activesupport-3.2.5/lib/active_support/dependencies.rb:245:in `load'
/home/evan/.rvm/gems/ruby-1.9.3-p194/gems/activesupport-3.2.5/lib/active_support/dependencies.rb:245:in `block in load'
/home/evan/.rvm/gems/ruby-1.9.3-p194/gems/activesupport-3.2.5/lib/active_support/dependencies.rb:236:in `load_dependency'
/home/evan/.rvm/gems/ruby-1.9.3-p194/gems/activesupport-3.2.5/lib/active_support/dependencies.rb:245:in `load'
/home/evan/.rvm/gems/ruby-1.9.3-p194/gems/spork-0.9.2/lib/spork/test_framework.rb:138:in `block (2 levels) in preload'
/home/evan/.rvm/gems/ruby-1.9.3-p194/gems/spork-0.9.2/lib/spork/app_framework/rails.rb:8:in `preload'
/home/evan/.rvm/gems/ruby-1.9.3-p194/gems/spork-0.9.2/lib/spork/test_framework.rb:134:in `block in preload'
/home/evan/.rvm/gems/ruby-1.9.3-p194/gems/spork-0.9.2/lib/spork.rb:62:in `exec_prefork'
/home/evan/.rvm/gems/ruby-1.9.3-p194/gems/spork-0.9.2/lib/spork/test_framework.rb:120:in `preload'
/home/evan/.rvm/gems/ruby-1.9.3-p194/gems/spork-0.9.2/lib/spork/run_strategy/forking.rb:25:in `preload'
/home/evan/.rvm/gems/ruby-1.9.3-p194/gems/spork-0.9.2/lib/spork/runner.rb:74:in `run'
/home/evan/.rvm/gems/ruby-1.9.3-p194/gems/spork-0.9.2/lib/spork/runner.rb:10:in `run'
/home/evan/.rvm/gems/ruby-1.9.3-p194/gems/spork-0.9.2/bin/spork:10:in `<top (required)>'
/home/evan/.rvm/gems/ruby-1.9.3-p194/bin/spork:23:in `load'
/home/evan/.rvm/gems/ruby-1.9.3-p194/bin/spork:23:in `<main>'

这是我的Gemfile:

source 'https://rubygems.org'

gem 'rails', '3.2.5'

gem 'sqlite3'

group :assets do
  gem 'sass-rails',   '~> 3.2.3'
  gem 'coffee-rails', '~> 3.2.1'

  gem 'uglifier', '>= 1.0.3'
end

gem 'jquery-rails'

group :development, :test do
  gem 'rspec-rails',    ">= 2.0.1"
end

group :test do
  gem 'rspec-rails', '>= 2.0.1'
  gem 'spork', '>= 0.8.4'
end

我不知道该做什么或如何描述我的情况。但是我在Ruby on Rails 3教程书中看到的结果显示:

$ spork
Using RSpec
Loading Spork.prefork block...
Spork is ready and listening on 8989!

6 个答案:

答案 0 :(得分:10)

系统更新后遇到同样的问题。这是由于文件上缺少读取权限。

一个简单的chmod + r为我工作:

sudo chmod +r /home/evan/.rvm/gems/ruby-1.9.3-p194/gems/spork-0.9.2/bin/spork

修改

更新到Rails 3.2.9&amp; Ruby 1.9.3-p327。不幸的是,这次并非来自访问权问题,而是来自两个更新之间发展的宝石(应该是完全透明的)。因此,如果您遇到此问题,如果您没有访问权限权限问题,则还应检查哪个文件丢失,并正确升级相应的gem。

答案 1 :(得分:1)

看起来,你在'spec'文件夹中有'spec_helper.rb'文件,其中spork试图加载并在第57行的文件中你有一个块,你有一个require_relative "../spec_helper"语句指向根项目文件夹中的'spec_helper.rb'文件,并且ruby'无法加载此类文件',因为它已丢失。

答案 2 :(得分:1)

有同样的问题,但能够进入spec_help.rb文件并保存它。一旦我这样做,它开始工作。

答案 3 :(得分:1)

我使用Rails 3.2.12和ruby-1.9.3-p392。在我的情况下,将require 'spork'添加到我的Gemfile中并运行bundle install就可以了。

答案 4 :(得分:0)

我实际上遇到了同样的问题。 在我的environment / test.rb文件中,我将config.cache_classes设置为true。

实际上,需要将config.cache_classes设置为false才能使Spork正常工作。

答案 5 :(得分:0)

我有同样的问题。我有一个

require 'spec_helper'

在spec_helper.rb文件本身中的行...让我们说以递归方式要求spec_helper.rb文件。只需消除那条线,现在一切正常。