Как создать генераторы пространства имен, которые не живут в Gem

Я не совсем понимаю.

Драгоценный камень, который я использовал, называется railsy_backbone, предоставляет сладкие генераторы пространства имен. Из командной строки я могу вызвать их таким образом,

$ rails g backbone:model widget

Теперь мне пора создавать сладкие генераторы, но у меня проблемы с пространством имен. Я сделал свое исследование, я прочитал это, и это, и даже это. Структура, с которой я закончил, такова:

lib/generators/
└── marionette
    └── model
        ├── model_generator.rb
        ├── templates
        └── USAGE

Содержание model_generator.rb являются,

module Marionette
  module Generators
    class ModelGenerator < Rails::Generators::NamedBase
      source_root File.expand_path('../templates', __FILE__)
    end
  end
end

Который отражает все примеры, которые я прочитал. Для сравнения вот lib/generators частичное дерево railsy_backbone перл:

generators/
└── backbone
    ├── bob
    │   ├── bob_generator.rb
    │   └── templates
    │       └── model.coffee
    ├── helpers.rb
    ├── model
    │   ├── model_generator.rb
    │   └── templates
    │       └── model.coffee

Я на самом деле добавил backbone:bob себя, который впоследствии появляется в списке генераторов под магистралью пространства имен при запуске rails g без аргументов. Здесь также находится содержание model_generator.rb,

require 'generators/backbone/helpers'

module Backbone
  module Generators
    class ModelGenerator < Rails::Generators::NamedBase
      include Backbone::Generators::Helpers

      source_root File.expand_path("../templates", __FILE__)

      // the implementation

    end
  end
end

Единственное различие, которое я вижу между моим кодом и их кодом, состоит в том, что они упаковали свои генераторы в драгоценный камень. Мои генераторы живут в приложении rails, над которым я сейчас работаю. Пока я сдался и собираюсь сделать кучу генераторов высшего уровня. В конце концов, когда я буду готов их использовать, я упакую их как драгоценный камень и установлю его. Я ожидаю, что это сработает. Тем не менее, мне бы очень хотелось узнать, как создавать генераторы пространства имен, чтобы они не жили в жемчужине. У кого-нибудь есть соответствующий опыт?

1 ответ

Использование:

$ rails generate generator your_gem_name/generator_name

Затем проверьте:

$ rails generate your_gem_name:generator_name --help

Другие вопросы по тегам