【问题标题】:in 'require': no such file to load -- spec_helper在“要求”中:没有要加载的文件--spec_helper
【发布时间】:2011-03-01 03:53:28
【问题描述】:

在使用 jruby 1.6 在 Windows 平台上尝试使用 rspec 的 ruby​​ on rails 教程部分时遇到此错误:

c:\rails_projects\sample_app>bundle exec rspec spec/
org/jruby/RubyKernel.java:1038:in `require': no such file to load -- spec_helper
 (LoadError)
        from c:/rails_projects/sample_app/spec/controllers/pages_controller_spec    .rb:1:in `(root)'
        from org/jruby/RubyKernel.java:1063:in `load'
        from c:/rails_projects/sample_app/spec/controllers/pages_controller_spec
.rb:386:in `load_spec_files'
        from org/jruby/RubyArray.java:2458:in `collect'
        from c:/jruby-1.6.0.RC2/lib/ruby/gems/1.8/gems/rspec-core-2.5.1/lib/rspe
c/core/configuration.rb:386:in `load_spec_files'
        from c:/jruby-1.6.0.RC2/lib/ruby/gems/1.8/gems/rspec-core-2.5.1/lib/rspe
c/core/command_line.rb:18:in `run'
        from c:/jruby-1.6.0.RC2/lib/ruby/gems/1.8/gems/rspec-core-2.5.1/lib/rspe
c/core/runner.rb:55:in `run_in_process'
        from c:/jruby-1.6.0.RC2/lib/ruby/gems/1.8/gems/rspec-core-2.5.1/lib/rspe
c/core/runner.rb:46:in `run'
        from c:/jruby-1.6.0.RC2/lib/ruby/gems/1.8/gems/rspec-core-2.5.1/lib/rspe
c/core/runner.rb:10:in `autorun'
        from org/jruby/RubyProc.java:268:in `call'
        from org/jruby/RubyProc.java:232:in `call'

找到了教程中缺少的答案:

c:\rails_projects\sample_app>rails 生成 rspec:install

【问题讨论】:

  • 哪个 Ruby on Rails 教程?
  • @RyanBigg 可能是this
  • 教程中没有遗漏它。有问题的命令出现在第 3 章的介绍中。(相信我,我知道——我写的。:-)
  • 2 年后,刚做了第三章。我可以证明(使用 shell 内存对我自己)我确实输入了命令。尽管如此,直到我在阅读这篇文章后再次执行此操作后,该文件才存在。谢谢Michael Hartl,很棒的教程。

标签: ruby-on-rails windows rspec


【解决方案1】:

运行后

rails generate rspec:install

将您的*_spec.rb 文件放在(在您的示例中)c:\rails_projects\sample_app\spec\model 下。然后用require_relative指定相对路径

require_relative '../spec_helper'

【讨论】:

  • 不要使用require_relative - 这意味着当你移动测试时,你必须不断更新路径。只需使用require 'spec_helper'
  • 我来自 C# 阵营,所以我的 Ruby 风格充其量是有问题的。这是让事情顺利进行的一种快速方法。 YMMV
【解决方案2】:

运行以下命令

c:\rails_projects\sample_app>rails generate rspec:install

这会将spec_helper.rb 文件放入您的/spec 目录中

【讨论】:

    【解决方案3】:

    当你执行'rails generate rspec:install'时,如果你看到'Could not find generator rspec:install'的错误信息,在你的项目Gemfile:developnent内添加gem'rspec-rails':testGemfile如下所示。

    group :development, :test do
      gem 'rspec-rails'
    end
    

    在此之后,执行'bundle install' 并继续'rails generate rspec:install'

    【讨论】:

      【解决方案4】:

      这可能会有一些用处 - 如果rpsec 没有正确安装在 Win7 环境中。

      rails3 rspec issue

      【讨论】:

        【解决方案5】:

        我遇到了同样的问题,但原因不同:

        在我的spec_helper.rb 文件中的spork.prefork 块中,我有这一行

        Dir[Rails.root.join("spec/support/**/*.rb")].each {|f| require f}
        

        但在上面需要的文件之一 (spec/support/some_helper_file.rb) 中有一个 require 'spec_helper' 调用

        删除这个不需要的要求解决了这个问题

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2013-02-23
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-04-08
          • 2013-11-09
          相关资源
          最近更新 更多