だから私はコントローラー内からジェネレーターを実行しようとしています。Railsアプリケーション内からスキャフォールドを生成できるという考えです。
テスト目的で、iveは実際のコンテンツのないイニシャライザーを作成する小さなジェネレーターを作成しました。私はこれをシェル内から実行しました(railsは初期化子を生成します)
lib/generators/initializer_generator.rb
class InitializerGenerator < Rails::Generators::Base
def create_initializer_file
create_file "config/initializers/initializer.rb", "# Add initialization content here"
end
end
しかし、コントローラーからジェネレーターを実行しようとすると問題が発生します
class GeneratorController < ApplicationController
include Rails::Generators
include Rails::Generators::Actions
def index
generate(:initializer)
end
end
だからこれは応答をもたらす'未定義のメソッド`behavior'それから私はレールジェネレータがThorに基づいていることを知っていくつかの調査を行い、behaviorメソッドがThor::Actionsモジュール http://rubydoc.info/githubのthorメソッドであることを発見しました/ wycats / thor / master / Thor / Actions:behavior
そこで、そのモジュールを含めるようにコントローラーコードを変更しました。
class GeneratorController < ApplicationController
include Rails::Generators
include Rails::Generators::Actions
include Thor::Actions
def index
generate(:initializer)
end
end
ここで、エラーは「引数の数が間違っています(0の場合は3)」です。何がうまくいかないのか、今は非常に混乱しています。