Есть ли какая-либо команда для генерации всех отсутствующих файлов спецификаций для существующих моделей/контроллеров? У меня есть проект, в котором есть несколько моделей, которые были созданы без файлов спецификаций.
Создание отсутствующих файлов спецификаций для RSpec
Ответ 1
Вы можете просто запустить генератор и проигнорировать модели/миграции/светильники.
ruby script/generate rspec_model User --skip-migration --skip-fixture --skip
Я занимаюсь написанием чего-то для этого, но у других нет интереса.
Ответ 2
В rspec-rails-2, который предназначен для Rails 3, все генераторы rspec были удалены.
Вы можете решить эту проблему, запустив генератор модели рельсов. Вы можете добавить -s для пропуска любых существующих файлов и -migration = false, чтобы пропустить создание файла миграции.
Так же:
rails generate model example -s --migration=false
Ответ 3
Если количество отсутствующих спецификаций довольно невелико, вы можете просто запустить команды rails generate
для каждого компонента с отсутствующими спецификациями.
Когда возникает конфликт, просто выберите, чтобы не перезаписывать исходный файл. Генератор будет игнорировать существующие файлы и генерировать недостающие.
Ответ 4
https://gist.github.com/omenking/7774140
require 'fileutils'
namespace :spec do
def progress name, x, y
print "\r #{name}: #{x}/#{y} %6.2f%%" % [x.to_f/y * 100]
end
def generate_files name
kind = name.to_s.singularize
collection = Dir.glob Rails.root.join('app',name.to_s,'**','*').to_s
root = Rails.root.join('app',name.to_s).to_s<<'/'
ext = case name
when :controllers then '_controller.rb'
when :models then '.rb'
end
count = collection.count
collection.each_with_index do |i,index|
`rails g #{kind} #{$1} -s` if i =~ /#{root}(.+)#{ext}/
progress name, index, count
end
end
task generate_missing: :environment do
generate_files :controllers
generate_files :models
end
end
# if you dont want certian things generated than
# configure your generators in your application.rb eg.
#
# config.generators do |g|
# g.orm :active_record
# g.template_engine :haml
# g.stylesheets false
# g.javascripts false
# g.test_framework :rspec,
# fixture: false,
# fixture_replacement: nil
# end
#