Rails 5 - 找不到生成器 'rspec:install'

9

在我的Rails 5.0.0应用程序中,我已经在Gemfile中添加了以下内容:

group :development, :test do
  gem 'byebug', platform: :mri
  gem 'rspec-rails', '~> 3.5', '>= 3.5.2'
end

我运行了 bundle install 命令,然后 gem 安装成功。

接着我运行了以下命令:

rails generate rspec:install

但是我收到了一个错误,提示如下:
Running via Spring preloader in process 8893
Could not find generator 'rspec:install'. Maybe you meant 'css:assets', 'assets' or 'scaffold'
Run `rails generate --help` for more options.

有很多其他关于这个错误的问题(无法找到生成器 'rspec:install')发布在网上, 但是它们都对我没有用,看起来我遇到了不同的问题。

如果需要的话,这是我的bundle show输出:

Gems included by the bundle:
  * actioncable (5.0.0.1)
  * actionmailer (5.0.0.1)
  * actionpack (5.0.0.1)
  * actionview (5.0.0.1)
  * activejob (5.0.0.1)
  * activemodel (5.0.0.1)
  * activerecord (5.0.0.1)
  * activesupport (5.0.0.1)
  * arel (7.1.2)
  * builder (3.2.2)
  * bundler (1.12.5)
  * byebug (9.0.5)
  * coffee-rails (4.2.1)
  * coffee-script (2.4.1)
  * coffee-script-source (1.10.0)
  * concurrent-ruby (1.0.2)
  * debug_inspector (0.0.2)
  * diff-lcs (1.2.5)
  * erubis (2.7.0)
  * execjs (2.7.0)
  * ffi (1.9.14)
  * globalid (0.3.7)
  * i18n (0.7.0)
  * jbuilder (2.6.0)
  * jquery-rails (4.2.1)
  * listen (3.0.8)
  * loofah (2.0.3)
  * mail (2.6.4)
  * method_source (0.8.2)
  * mime-types (3.1)
  * mime-types-data (3.2016.0521)
  * mini_portile2 (2.1.0)
  * minitest (5.9.0)
  * multi_json (1.12.1)
  * nio4r (1.2.1)
  * nokogiri (1.6.8)
  * pkg-config (1.1.7)
  * puma (3.6.0)
  * rack (2.0.1)
  * rack-test (0.6.3)
  * rails (5.0.0.1)
  * rails-dom-testing (2.0.1)
  * rails-html-sanitizer (1.0.3)
  * railties (5.0.0.1)
  * rake (11.2.2)
  * rb-fsevent (0.9.7)
  * rb-inotify (0.9.7)
  * rspec-core (3.5.3)
  * rspec-expectations (3.5.0)
  * rspec-mocks (3.5.0)
  * rspec-rails (3.5.2)
  * rspec-support (3.5.0)
  * sass (3.4.22)
  * sass-rails (5.0.6)
  * spring (1.7.2)
  * spring-watcher-listen (2.0.0)
  * sprockets (3.7.0)
  * sprockets-rails (3.2.0)
  * sqlite3 (1.3.11)
  * thor (0.19.1)
  * thread_safe (0.3.5)
  * tilt (2.0.5)
  * turbolinks (5.0.1)
  * turbolinks-source (5.0.0)
  * tzinfo (1.2.2)
  * uglifier (3.0.2)
  * web-console (3.3.1)
  * websocket-driver (0.6.4)
  * websocket-extensions (0.1.2)
5个回答

32

结果是我这个情况下出现了与spring gem有关的问题。重启spring解决了这个问题。

首先运行bin/spring status命令。如果spring正在运行,你将得到类似以下的输出:

Spring is running:

    8774 spring server | chessboard | started 14 mins ago   
    8808 spring app    | chessboard 6.52.08 PM | started 12 mins ago | development mode

那意味着你必须通过运行来停止Spring:

bin/spring stop

然后再重新开始:

bin/spring server

接着运行 rails generate rspec:install,然后它应该就可以工作了。

你可能需要运行 bundle update


2
太棒了!这个答案终于让我明白,Spring服务器的运行会阻止生成器(不仅是Rspec)在“rails generate”命令中变为可用状态。 - Glutexo
1
我曾经遇到过这个问题,但是仅仅停止/重启Spring是不够的,需要在停止Spring后运行bundle update。然后生成器就可以工作了。 - Sujimichi
1
@Sujimichi 根据您的评论更新了答案。 - dhrubo_moy
我需要添加 -d 以在后台运行 Spring。bin/spring server -d - Marlin Pierce

4
今天我碰到了同样的问题,后来发现我忘记在Gemfile中添加rspec gem了。
在Gemfile中添加以下行解决了这个问题。

gem "rspec-rails"

需要为foundation做同样的事情(rails g foundation:install Y)。

gem 'foundation-rails'

添加完毕后运行bundle以更新依赖项。
无需重新启动spring。

谢谢,虽然这是最后的解决方案,但它起作用了,耶耶,Patel先生!! - arshpreet
很高兴能帮助 :) - Mayank Patel

2

根据@dhrubo_moy的回答,这里补充一下:

  1. bin/spring stop 停止spring进程。
  2. bundle update 更新依赖包。
  3. rails generate rspec:install 生成rspec配置文件。

在执行rspec:install前先重启spring进程并不起作用。

“Original Answer”翻译成中文是“最初的回答”。


1

以上答案都对我没有用。

我发现只有将rspec gem替换为下面的才是唯一的解决方法。

gem "rspec-core", :github => "rspec/rspec-core"
gem "rspec-expectations", :github => "rspec/rspec-expectations"
gem "rspec-mocks", :github => "rspec/rspec-mocks"
gem "rspec-support", :github => "rspec/rspec-support"
gem "rspec-rails", :github => "rspec/rspec-rails"

我正在使用 Ruby 2.5.1 和 gem 'rails',版本为 '~> 5.0.7',大于或等于 5.0.7.2


0
在我的情况下,我使用的是Rails 6.1.4.1、Ruby 2.7.4和VSCode IDE。我将gem依赖项添加到Gemfile中:
gem "rspec-rails"

问题已通过在 RSpec 文档中提到的版本进行指定而被消除:
gem "rspec-rails", '~> 4.0.2'

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