2013-02-17 3 views
0

Я хочу, чтобы monkey-patch генератор rspec-rails генерировал шаблон _form.html_spec.rb. Я знаю, как это сделать, но не там, где я должен поместить этот патч!rails3 monkey-patch generator

Что я сделал:

# 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 

Где я положил этот файл? Спасибо.

EDIT:

Хорошо, я думаю, что проблема почти решена. Вместо 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! В чем дело? Я действительно не понимаю ...

ответ

0

Вы можете поместить свой паз обезьяны в любом месте, пока он загружается. С рельсами вы обычно помещаете его в папку/lib.

+0

В этом проблема. Какие файлы загружаются при запуске эшафота? – Iazel

+0

Я думаю, что он загружает основную среду (скрипт/рельсы). Но вы должны знать,/lib не загружается по умолчанию, и если вы установите его для автоматической загрузки, он никогда не будет загружен, вероятно. Таким образом, вам нужно указать где-то явно – Speed

+0

Я сделал некоторый прогресс ... – Iazel

Смежные вопросы