2012-03-02 4 views
0

Rails :: Engineでレールジェネレータを使用する場合、libディレクトリに配置されたテンプレートファイルは選択されません。今、私はRails 3ジェネレータカスタムテンプレートwith Engine

lib/templates/rails/scaffold_controller 

を持ってここに

http://guides.rubyonrails.org/generators.html#customizing-your-workflow-by-changing-generators-templates

指示されたとおり、私はまた

lib/my_engine/templates/rails/scaffold_controller 

を試してみました誰がこれをしようとしています。

答えて

2

アプリフィニッシャーだから、これがためにエンジンの設定で行われなければならないパス

module Rails 
class Application 
    module Finisher 
    include Initializable 

    initializer :add_generator_templates do 
     config.generators.templates.unshift(*paths["lib/templates"].existent) 
    end 

...... 

にこれを追加するの世話をする、これはRailsではエンジン

のためにサポートされていないようですこれはうまくいく。

module MyEngine 
    class Engine < ::Rails::Engine 
    config.generators.templates.unshift File.expand_path("lib/templates", root) 
    end 
end 

これはバグか目的の動作ですか?

0

上記の回答(stellard自身)は、Rails 3.2では私のケースを修正していませんが、How to override a rails generator template in a gem?が修正しました。私のような人を指摘するだけです。あなたのEngineクラスを汚染doesntのとはるかに発電機にローカライズされて

class MyGenerator < Rails::Generators::NamedBase 
    source_root File.expand_path('../templates', __FILE__) 
end 

:あなたはRailsの3.2エンジンのルートパスにrails g generator MyGeneratorを使用する場合は