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
このファイルをどこに置くのですか?ありがとうございました。
編集:
わかりました、問題はほぼ解決したと思います。モンキー パッチの代わりに、特定のジェネレーターを継承し、メソッドを編集しました。解決策があります:
# 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
rspec_modded:scaffoldを実行するrails g
と、リストにあり、手動で呼び出すと実際に機能します ( 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 ジェネレーターが作動します! どうした?私は本当に理解していません...