我很困惑。
我使用的一个名为railsy_backbone
的gem提供了甜蜜的命名空间生成器。从命令行我可以调用它们,
$ rails g backbone:model widget
现在,是时候制作甜蜜的发电机了,但我在使用命名空间时遇到了麻烦。我完成了我的研究,我读过this和this,甚至this。我最终得到的结构是:
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
宝石的部分树:{/ p>
generators/
└── backbone
├── bob
│ ├── bob_generator.rb
│ └── templates
│ └── model.coffee
├── helpers.rb
├── model
│ ├── model_generator.rb
│ └── templates
│ └── model.coffee
我实际上自己添加了backbone:bob
,当我运行rails g
sans参数时,它随后显示在命名空间主干下的生成器列表中。这里也是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
我能在代码和他们的代码之间看到的唯一区别是,他们已经将他们的生成器打包在一个gem中。我的发电机住在我正在研究的导轨应用程序中。现在我已经放弃了,我只是要制作一堆顶级发电机。最终,当我准备好使用它们时,我会将它们打包为宝石并安装它。我希望这会奏效。但是,我真的很想知道如何命名生成器而不让它们存在于gem中。任何人都有相关经历吗?
答案 0 :(得分:2)
使用:
$ rails generate generator your_gem_name/generator_name
然后检查:
$ rails generate your_gem_name:generator_name --help