Ruby on rails 3 rails3猴子补丁生成器
我想对rspec rails生成器进行修补,以生成一个_form.html_spec.rb模板。我知道怎么做,但我不知道该把这个补丁放在哪里 我所做的:Ruby on rails 3 rails3猴子补丁生成器,ruby-on-rails-3,generator,monkeypatching,Ruby On Rails 3,Generator,Monkeypatching,我想对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
# 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
据我所知,test框架的每个钩子都应该调用rspec modded生成器,rspec应该管理其余部分(回退)。但它不起作用:出于某种原因,单元测试生成器启动了!怎么了?我真的不明白…你可以把你的猴子补丁放在任何地方,只要它能加载。对于rails,您通常会将其放在/lib文件夹中。这就是问题所在。脚手架生成器运行时加载了哪些文件?我认为它加载了基本环境(脚本/rails)。但您必须知道,/lib在默认情况下不会加载,如果将其设置为自动加载,则可能永远不会加载它。所以你需要明确地把require放在某个地方
# 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
# config/application.rb
# ...
config.generators do |g|
g.test_framework :rspec_modded, :fixture => false, fixture_replacement: nil
g.fallbacks[:rspec_modded] = :rspec
end