3

よくわかりません。

私が使用した と呼ばれる 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 としてパッケージ化してインストールします。私はそれがうまくいくことを期待しています。ただし、ジェネレーターを宝石に入れずに名前空間を作成する方法を知りたいです。関連する経験はありますか?

4

1 に答える 1