5

我有一个 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 Tutorial 书中看到的结果显示:

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

6 回答 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。

于 2012-06-13T19:39:23.940 回答
1

从外观上看,您在 spork 尝试加载的“spec”文件夹中有“spec_helper.rb”文件,并且在第 57 行的该文件中,您有一个块,其中有一个require_relative "../spec_helper"指向“spec_helper.rb”文件的语句在根项目文件夹中,ruby '无法加载此类文件',因为它丢失了。

于 2012-06-12T13:47:22.723 回答
1

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

于 2012-06-14T00:06:25.457 回答
1

我使用 Rails 3.2.12 和 ruby​​-1.9.3-p392。就我而言,添加require 'spork'到我的 Gemfile 并运行bundle install就可以了。

于 2013-04-26T11:35:39.313 回答
0

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

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

于 2012-10-24T22:37:55.957 回答
0

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

require 'spec_helper'

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

于 2014-10-05T18:12:21.647 回答