как переопределить шаблон генератора драгоценных камней в приложении Rails

Я знаю, как переопределить шаблон Rails в геме, но как я могу переопределить шаблон генератора гема в приложении Rails

например: https://github.com/elabs/pundit/blob/master/lib/generators/pundit/policy/templates/policy.rb

or

https://github.com/drapergem/draper/blob/master/lib/generators/rails/templates/decorator.rb

чтобы rails g decorator Foo генерировал мой шаблон, а не нативный gem

Спасибо

См. также:  Как перейти на более раннюю версию или установить более старую версию Cocoapods
Понравилась статья? Поделиться с друзьями:
IT Шеф
Комментарии: 3
  1. equivalent8

    Из руководства Rails по генераторам:

    В Rails 3.0 и выше генераторы не просто ищут шаблоны в корневом каталоге исходного кода, они также ищут шаблоны в других путях. И один из них — lib/templates.

    Таким образом, если вы имитируете иерархию каталогов gem/tamplate, которые вы пытаетесь переопределить, то rails выберет ваш шаблон вместо тех, что находятся в источнике gem.

    Обновление:

    Теперь вопрос в том, как правильно имитировать эту иерархию, чтобы рельсы подхватили ваш шаблон?

    Ну оказалось есть какое-то правило | шаблон для этого, например, если вы хотите переопределить шаблон по этому пути: lib/generators/pundit/policy/templates/policy.rb

    Вы должны поместить свой шаблон в lib/templates/pundit/policy/policy.rb

    Чтобы переопределить lib/generators/rails/templates/decorator.rb

    Вы должны поместить свой шаблон в lib/templates/rails/decorator/decorator.rb

    Обновление 2

    Кажется, что узор течет: lib/templates/gem_name/generator_name/template_file_name.rb

    В случае драгоценного камня Draper, драгоценный камень заставляет себя действовать как родной генератор Rails:

    /draper/lib/generators/rails/templates /decorator.rb

    … поэтому нам нужно было использовать:

    lib/templates/rails/generator_name/template_file_name.rb.

    Чтобы переопределить генератор шаблонов RSpec драгоценного камня Draper: lib/templates/rspec/generator_name/template_file_name.rb

    …и так далее

    эй, чувак, спасибо за помощь. Дело в том, что я перепробовал все возможные комбинации lib/generators/pundit/policy/templates/policy.rb , lib/templates/policy.rb, lib/templates/haml/pundit/policy.html.haml… но дело в том, что гем указывает путь к шаблону следующим образом: github.com/elabs/pundit/blob/master/lib/generators/pundit/ person equivalent8; 12.02.2014

    @equivalent8 Это очень дикая догадка, но попробуйте lib/templates/pundit/policy/policy.rb person equivalent8; 12.02.2014

    и для переопределения шаблона генератора драгоценных камней Draper мне пришлось создать: lib/templates/rails/decorator/decorator.rb person equivalent8; 13.02.2014

    @equivalent8 рад, что это сработало :) я обновил свой ответ, чтобы охватить то, что мы узнали person equivalent8; 13.02.2014

    Мне кажется, что шаблон течет lib/templates/gem_name/generator_name/template_file_name.rb В случае с Draper gem, gem заставляет себя действовать как собственный генератор Rails: draper/lib/generators/rails/templates/decorator.rb поэтому нам нужно было использовать lib/templates/rails/generator_name/template_file_name.rb person equivalent8; 13.02.2014

    имеет для меня очень хороший смысл, и я думаю, вам следует отредактировать ответ и поместить свой шаблон для людей, которые застрянут на этом в будущем. person equivalent8; 13.02.2014

    Совет по обнаружению имен генераторов: запустите генератор скаффолдов и отметьте, какие другие генераторы он вызывает. то есть для драпировщика генератор фактически называется «декоратор». invoke decorator create app/decorators/foo_decorator.rb invoke rspec create spec/decorators/foo_decorator_spec.rb person equivalent8; 04.06.2014

  2. equivalent8

    Чтобы настроить шаблоны для генератора представлений twitter-bootswatch-rails gem, скопируйте все содержимое < href=»https://github.com/scottvrosenthal/twitter-bootswatch-rails/tree/master/lib/generators/bootswatch/themed/templates» rel=»nofollow»>папку своего шаблона в

    lib/templates/bootswatch/themed
    

    И беги rails g bootswatch:themed YourModels

  3. equivalent8

    Чтобы скопировать генераторы Pundit по умолчанию в ваш проект Rails, вы можете использовать эту команду:

    mkdir -p lib/templates/pundit/policy && \
    cp $(bundle show pundit)/lib/generators/pundit/policy/templates/* lib/templates/pundit/policy
    
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: