簡體   English   中英

為什么默認rake任務在Rails應用程序中運行規范?

[英]Why does default rake task run specs in Rails app?

我有一個應用程序只用rake運行規范,但不知道這個任務的定義在哪里或如何。 lib / tasks中沒有任務。

Gemfile的一部分:

group :test do
  gem 'capybara'
  gem 'guard-rspec'
  gem 'rspec-rails'
  gem 'database_cleaner'
  gem 'launchy'
  gem 'oauth2'
  gem 'rack_session_access'
  gem 'factory_girl'
  gem 'webmock'
  gem 'selenium-webdriver'
end

RSpec寶石:

guard-rspec (4.5.0)
rspec (3.1.0)
rspec-core (3.1.7)
rspec-expectations (3.1.2)
rspec-mocks (3.1.3)
rspec-rails (3.1.0)
rspec-support (3.1.2)

我正在使用Rake 10.4.2和Rails 4.1.6。

另外,當我添加:

task :default do
  puts 'No default task.'
end

到Rakefile,首先運行規范,然后輸出“No default task”。

編輯:添加Rakefile

# Add your own tasks in files placed in lib/tasks ending in .rake,
# for example lib/tasks/capistrano.rake, and they will automatically be available to Rake.

require File.expand_path('../config/application', __FILE__)

Rails.application.load_tasks

如果您的Gemfile中有rspec-rails ,那么當Rails加載gem時,將執行以下行:

https://github.com/rspec/rspec-rails/blob/v3.2.1/lib/rspec-rails.rb#L19

load "rspec/rails/tasks/rspec.rake"

而這又定義了默認的rake任務:

https://github.com/rspec/rspec-rails/blob/v3.2.1/lib/rspec/rails/tasks/rspec.rake#L6

task :default => :spec

這就是默認rake任務運行Rails應用程序中的規范的原因。

此外,當您添加此代碼時:

task :default do
  puts 'No default task.'
end

事實上,這並沒有重新定義默認任務:它會增加它。 Rake任務定義的工作方式,相同任務名稱的每個聲明都會添加到該任務中 它沒有重新定義它。 因此,您會看到“無默認任務” 運行規范的結果。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM