我想修补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:scaffold就在列表中,如果手动调用(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生成器启动了!出什么事了?我真的不明白。
发布于 2013-02-18 06:27:27
你可以把你的猴子补丁放在任何地方,只要它是加载的。对于rails,您通常会将其放在/lib文件夹中。
https://stackoverflow.com/questions/14926814
复制相似问题