Я хочу исправить генератор rspec-rails для создания шаблона _form.html_spec.rb. Я знаю, как это сделать, но я не знаю, куда я должен поставить этот патч!
Что я наделал:
# rspec_generator_patch.rb
module Rspec
module Generators
class ScaffoldGenerator < Base
def generate_views_specs_with_form *args, &block
generate_views_specs_without_form
copy_view :_form
end
alias_method_chain :generate_views_specs, :form
end
end
end
Куда я положил этот файл? Спасибо.
РЕДАКТИРОВАТЬ:
Ок, думаю проблема почти решена. Вместо monkey-patch я унаследовал определенные генераторы и отредактировал метод. Есть решение:
# lib/generators/rspec_modded/scaffold/scaffold_generator.rb
require 'generators/rspec/scaffold/scaffold_generator.rb'
module RspecModded
module Generators
class ScaffoldGenerator < Rspec::Generators::ScaffoldGenerator
def generate_view_specs
super
copy_view :_form
end
end
end
end
Если я сделаю rails g
rspec_modded: скаффолд появится в списке и действительно сработает, если вызвать его вручную (rails g rspec_modded:scaffold test
).
# config/application.rb
# ...
config.generators do |g|
g.test_framework :rspec_modded, :fixture => false, fixture_replacement: nil
g.fallbacks[:rspec_modded] = :rspec
end
Насколько я знаю, каждый hook_for :test_framework
должен вызывать генератор rspec_modded, а rspec должен управлять остальными (резервными вариантами). Но это не работает: почему-то срабатывает генератор unit_test! В чем дело? Я действительно не понимаю...