2014-10-30 2 views
0

Пример генератора:Как сделать глубоко пространствами имен генераторы работают

module MyPlugin 
    module Generators 
    module SomeNamespace 
     class ThingsGenerator < Rails::Generators::Base 
     # stuff 
     end 
    end 
    end 
end 

Как и следовало ожидать rails g выходов этого:

MyPlugin: 
    my_plugin:some_namespace:things 

Так что должны работать, не так ли? Неправильно:

> rails g my_plugin:some_namespace:things 
Could not find generator my_plugin:some_namespace:things 

Итак, что происходит? Рельсы могут видеть генератор, это полностью проверяемо также через Rails::Generators::TestCase.

Любые мысли? Я всегда могу сделать my_plugin:some_namespace_things, но он выглядит просто уродливым.

ответ

0

Хорошо, так оно и было. По какой-то причине рельсы используют разные методы для перечисления и выполнения генераторов. Моя проблема была с именами файлов.

Так что, если ваш генератор выглядит следующим образом:

my_plugin:some_namespace:things

ваша файловая структура должна выглядеть следующим образом:

lib/generators/my_plugin/some_namespace/things_generator.rb

Супер простой.

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