我很困惑。
我使用的一个名为railsy_backbone
的gem提供了甜美的名称空间生成器。从命令行我可以调用它们,因此,
$ 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
gem:的部分树
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
我能看到的我的代码和他们的代码之间的唯一区别是,他们将生成器打包在了一个gem中。我的发电机位于我目前正在开发的rails应用程序中。现在我已经放弃了,我只想做一堆顶级生成器。最终,当我准备好使用它们时,我会将它们打包为gem并安装它。我希望这会奏效。然而,我真的很想知道如何在不让生成器存在于gem中的情况下命名生成器。有人有相关经验吗?
使用:
$ rails generate generator your_gem_name/generator_name
然后检查:
$ rails generate your_gem_name:generator_name --help