0

特定のジェネレーターを継承し、メソッドを編集して、_form の仕様を作成しました。解決策があります:

# lib/generators/rspec_modded/scaffold/scaffold_generator.rb
require 'generators/rspec/scaffold/scaffold_generator.rb'
module RspecModded
  module Generators
    class ScaffoldGenerator < Rspec::Generators::ScaffoldGenerator
      def generate_view_specs
        super
        copy_view :_form
      end
    end
  end
end

rspec_modded:scaffoldを実行するrails gと、リストにあり、手動で呼び出すと実際に機能します ( rails g rspec_modded:scaffold test)。

# config/application.rb
# ...
config.generators do |g|
  g.test_framework :rspec_modded, :fixture => false, fixture_replacement: nil
  g.fallbacks[:rspec_modded] = :rspec
end

私が知っている限りでは、すべてのhook_for :test_framework人が rspec_modded ジェネレーターを呼び出す必要があり、rspec は私が持っていないもの (モデルなど) を管理する必要があります。しかし、うまくいきません: 何らかの理由で unit_test ジェネレーターが作動します! どうした?私は本当に理解していません...

PS:レール3.2.6を使用しています

4

1 に答える 1

0

掘り下げて試行錯誤した結果、factory_girl_railsgem がこの奇妙な動作の原因であることがわかりました。問題は filelib/factory_girl_rails/railtie.rbにあり、rspec が test_framework であるかどうかをチェックする初期化子があり、そうでない場合は unit_test へのブルートフォース -_-

そして、彼らがそれを修正したことを私は知っています...

しかし、この構成がユーザー定義の構成を上書きするのはなぜですか? これは最優先すべきだと思います...誰かがそれを明確にすることができますか?


もう少し掘り下げた後、ジェネレーターのコードをイニシャライザーに入れるとユーザーのコードが上書きされるようですが、そのコードがRailtieクラス定義の本体にある場合、すべてうまくいきます...

于 2013-02-19T01:48:54.947 に答える