ああ、それで私はそれを理解しました!これらのコメントで概説されています:-https: //github.com/nesquena/rabl/issues/37#issuecomment-6474467-https
: //github.com/rspec/rspec-rails/issues/565#issuecomment-6474362
def self.call(template)
source = if template.source.empty?
File.read(template.identifier)
else # use source
template.source
end
%{ ::Rabl::Engine.new(#{source.inspect}).
render(self, assigns.merge(local_assigns)) }
end # call
rspec-railsはテンプレートをスタブして空白のソースを作成し(レンダリングプロセス全体をスタブしてrailsがformats / mime-typesなどを適切に処理するのではなく)、rablハンドラーは空白のソースを確認してファイルシステムを読み取ることを決定します。したがって、これを機能させるには、rablまたはrspec-railsのいずれかを少し調整する必要があります。今のところ、私はrspec-railsにモンキーパッチを適用しました。
class EmptyTemplatePathSetDecorator < ::ActionView::Resolver
attr_reader :original_path_set
def initialize(original_path_set)
@original_path_set = original_path_set
end
# @api private
def find_all(*args)
original_path_set.find_all(*args).collect do |template|
::ActionView::Template.new(
" ", # <======================== this is not "empty"
template.identifier,
template.handler,
{
:virtual_path => template.virtual_path,
:format => template.formats
}
)
end
end
end