Как создать генераторы пространства имен, которые не живут в 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