Чтобы имитировать поведение рендеринга контроллера Sinatra в каком-либо другом классе (не в контроллере), вы можете создать такой модуль:
module ErbRender
include Sinatra::Templates
include Sinatra::Helpers
include Sinatra::ContentFor
def settings
@settings ||= begin
settings = Sinatra::Application.settings
settings.root = "#{ROOT}/app"
settings
end
end
def template_cache
@template_cache ||= Tilt::Cache.new
end
end
Здесь вам может понадобиться настроить settings.root
Пример использования:
class ArticleIndexingPostBody
include ErbRender
def get_body
erb :'amp/articles/show', layout: :'amp/layout'
end
end
Это будет правильно отображать шаблоны с макетами, включая content_for