4

明確にするために、これは私がやろうとしていることではありません:

  • カスタム ジェネレーターにデフォルトの Rails ジェネレーターを呼び出させる
  • デフォルトの Rails ジェネレーターを自分のものに置き換える

私がしたいことは、呼び出し時にジェネレーターが自動的に呼び出されるようにすることです。

rails generate scaffold User name age:integer

私はテストの置き換えなどを書いているのではなく、完全にカスタムです。そこにあるジェネレーターについて見つけたすべての情報は、最初の 2 つのケースのいずれかを含みますが、私がやりたいことではありません。すぐにhook_forそれがまさに私が必要としていたものだとすぐに思いましたが、逆のことをしているように見えます-カスタムジェネレーターの内部から別のRailsジェネレーターを呼び出します(カスタムジェネレーター用に作成されたテストファイルが必要な場合は、呼び出しますhook_for :test_frameworkそして、TestUnit::MyCustomGeneratorどこかにクラスを定義します)。

デフォルトの scaffold ジェネレーターにモンキー パッチを適用して、私のものを呼び出すことができると思いますが、それは汚いと感じます。https://github.com/Skalar/i18n-yaml-generatorのように似たようなことをするいくつかの宝石を調べましたが、それを初期化子を使用するように変換しようとしていて、うまくいきlib/generatorsません。scaffold_generator は実行されますが、私のものは呼び出されません。

4

1 に答える 1

0

私にとっては lib/generators/ から動作します

$ rails g generator scaffold
      create  lib/generators/scaffold
      create  lib/generators/scaffold/scaffold_generator.rb
      create  lib/generators/scaffold/USAGE
      create  lib/generators/scaffold/templates
$ rails g scaffold
Usage:
  rails generate scaffold NAME [options]
....
        what/will/it/create

http://guides.rubyonrails.org/generators.html#generators-lookup

別の方法かもしれません:)

  • フォーク レールティーズ ジェム
  • Rails::Generators::ScaffoldGenerator クラスを好みに合わせてオーバーライドします
  • ローカルにインストールするか、Gemfile でソース パスを指定します

また、「完全にカスタム」の場合は、別の名前と呼ぶのが公平ですよね?

于 2012-06-01T21:08:41.013 に答える