よくわかりません。
私が使用した と呼ばれる 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
これは、私が読んだすべての例を反映しています。比較のために、 gemlib/generators
の部分ツリーを次に示します。railsy_backbone
generators/
└── backbone
├── bob
│ ├── bob_generator.rb
│ └── templates
│ └── model.coffee
├── helpers.rb
├── model
│ ├── model_generator.rb
│ └── templates
│ └── model.coffee
私は実際に自分自身を追加しました。その後、 sans 引数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 としてパッケージ化してインストールします。私はそれがうまくいくことを期待しています。ただし、ジェネレーターを宝石に入れずに名前空間を作成する方法を知りたいです。関連する経験はありますか?