-->

护RSpec的和Spring:命令'CMD:春天rspec`不运行卫队内的规格(Guard-

2019-10-19 13:42发布

护RSpec的提到了,人们可以通过指定cusom运行使用弹簧规格的自述cmd

guard :rspec, cmd: 'spring rspec' do
  # ...
end

这用来做工精细,直到我做了一个spring binstub --all这改变了我的bin/spring从...

#!/usr/bin/env ruby
#
# This file was generated by Bundler.
#
# The application 'spring' is installed as part of a gem, and
# this file is here to facilitate running it.
#

require 'pathname'
ENV['BUNDLE_GEMFILE'] ||= File.expand_path("../../Gemfile",
  Pathname.new(__FILE__).realpath)

require 'rubygems'
require 'bundler/setup'

load Gem.bin_path('spring', 'spring')

...至...

#!/usr/bin/env ruby

# This file loads spring without using Bundler, in order to be fast
# It gets overwritten when you run the `spring binstub` command

unless defined?(Spring)
  require "rubygems"
  require "bundler"

  if match = Bundler.default_lockfile.read.match(/^GEM$.*?^    spring \((.*?)\)$.*?^$/m)
    ENV["GEM_PATH"] = ([Bundler.bundle_path.to_s] + Gem.path).join(File::PATH_SEPARATOR)
    ENV["GEM_HOME"] = ""
    Gem.paths = ENV

    gem "spring", match[1]
    require "spring/binstub"
  end
end

现在运行时, guard和按下回车键,它只是告诉我:

[2] guard(main)>                     <<<<< pressing enter
14:35:35 - INFO - Run all
14:35:35 - INFO - Running all specs

而像一个通知 - 出现“RSpec的结果失败”。

当改变我的Guardfile和删除spring从RSpec的的cmd像这样...

guard :rspec, cmd: 'rspec' do

...规格再次运行,但显然不是用春天?

我也有提到,运行时, spring从OSX终端,好像没有什么改变:

$ spring
$ 

所以:我如何必须配置防护和RSpec使用Spring?

更新

目前,我已经恢复我的bin/spring可执行文件的版本“binstubbing”之前:

#!/usr/bin/env ruby
#
# This file was generated by Bundler.
#
# The application 'spring' is installed as part of a gem, and
# this file is here to facilitate running it.
#

require 'pathname'
ENV['BUNDLE_GEMFILE'] ||= File.expand_path("../../Gemfile",
  Pathname.new(__FILE__).realpath)

require 'rubygems'
require 'bundler/setup'

load Gem.bin_path('spring', 'spring')

而Guardfile看起来是这样的:

guard :rspec, cmd: 'spring rspec' do ... end

这工作,但我不认为这是比裸跑快rspec

所以,我现在绝对不能确定如何正确使用Spring运行RSpec的-用spring rspec或只是rspec

Answer 1:

我一直在寻找这个问题非常早。

Binstubs周围可执行包装脚本。 在Rails他们生活里面bin /中。 如果您运行春季binstub --all,您binstubs将使用Spring。

http://makandracards.com/makandra/26083-3-ways-to-run-spring-the-rails-app-preloader-and-how-to-disable-it

鉴于这一事实,你应该能够做这样的事情需要Rspec和春天

guard :rspec, cmd: "bin/rspec" do

一个小测试来验证。 请确保您有binstubbed rspec的了。

bundle binstubs 'rspec-core'

验证春天尚未在斌/ RSpec的自举。 以下块不应该出现。

[二进制/ rspec的]

begin
  load File.expand_path("../spring", __FILE__)
rescue LoadError
end

关闭春天。 运行斌/ RSpec的和验证春天是不会被触发。

spring stop
spring status
bin/rspec
spring status

如果春天没有被触发,你应该可以看到这个

Spring is not running.

现在,随着春天的引导你binstubs。 请确保你已经捆绑安装了必要的宝石。

[的Gemfile]

group :development, :test do
  gem "rspec-rails", "~> 3.0"
  gem 'spring-commands-rspec'
  ...
end

[终奌站]

bundle install

更新binstubs使用Spring

spring binstub --all

验证春天已经在斌/ RSpec的自举了。 以下块现在应该会出现。

[二进制/ rspec的]

begin
  load File.expand_path("../spring", __FILE__)
rescue LoadError
end

关闭春天。 运行斌/ RSpec的和验证春天被触发。

spring stop
spring status
bin/rspec
spring status

现在,请检查测试运行春天已经加载的测试环境后快。

spring stop
time bin/rspec

[输出]

real    0m4.981s
user    0m0.144s
sys 0m0.032s

春天应该现在运行。 让我们来看看它做的工作。

time bin/rspec

[输出]

real    0m0.831s
user    0m0.140s
sys 0m0.034s

是的。

底线,如果你binstubs已自举同春,调用binstubs将包括春天。 而且,当然,只有已注册使用Spring命令可以使用Spring,这就是为什么弹簧命令-rspec的被列入的Gemfile较早支持Rspec的。



文章来源: Guard-RSpec and Spring: command `cmd: spring rspec` doesn't run the specs within Guard