Spork无法加载该文件?

5

我有一个spork宝石的问题。每次运行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个回答

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和Ruby 1.9.3-p327时再次遇到了问题。不幸的是,这次并不是由于访问权限问题引起的,而是由于两个更新之间发生了演变的gem(shoulda,为了完全透明)。因此,如果您遇到此问题,则应检查缺少哪些文件(如果没有访问权限问题)并正确升级对应的gem。


尝试重新运行bundle install。 - Fabrice Carrega
1
为了修复我的系统,我像@Fabrice所说的那样反复更新文件权限,针对无法加载的每个文件都进行了操作。总共我在gem目录下更新了8个文件的权限。 - luther07
我必须执行 chmod -R a+r - duma
谢谢您!我必须在 spork-1.0.0rc3 和 spork-rails-3.2.0 的所有文件中执行此操作。 - Michael Natkin
在我的电脑上看起来没问题... $ ls -l vendor/bundle/ruby/2.1.0/gems/spork-1.0.0rc4/bin/ ==== -rwxr-xr-x 1 nthompson staff 460 9 Sep 15:27 spork - Nick

1

我曾经遇到过同样的问题,但是我能够进入spec_help.rb文件并保存它。一旦我这样做了,它就开始工作了。


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

1
看起来,您在“spec”文件夹中有一个“spec_helper.rb”文件,Spork试图加载该文件,并且在该文件的第57行内部有一个块,在该块内部有一个require_relative "../spec_helper"语句,该语句指向根项目文件夹中的“spec_helper.rb”文件,但是Ruby无法加载此类文件,因为它不存在。

0

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

实际上,为了让Spork正常工作,config.cache_classes需要被设置为false。


0

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

require 'spec_helper'

在spec_helper.rb文件本身中的行...假设以递归方式要求spec_helper.rb文件。只需消除该行,现在一切都运行正常。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接