Два из предыдущих ответов здесь должны были быть объединены, прежде чем у нас было полное решение.
Следующая линия работает в разработке:
# config/initializers/haml_assets.rb
Rails.application.assets.register_engine '.haml', Tilt::HamlTemplate
Но тогда происходит сбой при любой прекомпиляции.
Чтобы хамл, обслуживаемый активами, работал после прекомпиляции, нам также понадобились следующие строки в application.rb:
require 'haml'
config.assets.paths << Rails.root.join("app", "assets", "templates")
class HamlTemplate < Tilt::HamlTemplate
def prepare
@options = @options.merge :format => :html5
super
end
end
config.before_initialize do |app|
require 'sprockets'
Sprockets::Engines #force autoloading
Sprockets.register_engine '.haml', HamlTemplate
end