Я пытаюсь сгенерировать несколько статических HTML-страниц с ошибками, используя мой макет.Мне удалось пройти большую часть пути, но я столкнулся с ошибкой: У меня нет доступа к ActionView::Helpers::AssetTagHelper
методам .
Это может быть из-за того, гдеЯ связываю эту задачу с граблями. Вот как все это работает.Я добавил HTML в качестве ресурса:
Rails.application.config.assets.paths << Rails.root.join('app', 'assets', 'html')
Rails.application.config.assets.precompile << '*.html'
Rails.application.config.assets.register_mime_type('text/html', '.html')
Затем создал задачу rake, которая связывается с assets:precompile
:
Rake::Task['assets:precompile'].enhance do
Rake::Task['my_app:create_non_digest_assets'].invoke
end
namespace(:my_app) do
logger = Logger.new($stderr)
task(create_non_digest_assets: :'assets:environment') do
manifest_file = File.new(Dir.glob(File.join(Rails.root, 'public/**/assets/.sprockets-manifest-*.json')).first)
asset_dir = File.dirname(manifest_file)
whitelisted_assets = []
whitelisted_assets.concat(Rails.config.non_digest_assets) rescue nil
JSON.load(manifest_file)['assets'].each do |asset, digested_asset|
if whitelisted_assets.any? { |pattern| File.fnmatch?(pattern, asset) }
logger.info("(My APP) creating #{asset} symlink for #{digested_asset}")
FileUtils.ln_s(
File.join(asset_dir, digested_asset),
File.join(asset_dir, asset),
{ force: true }
)
end
end
end
end
И добавил этот бит конфигурации, чтобы он знал, какие активычтобы создать непереваренные ссылки, а также препроцессор Sprocket для запуска ApplicationController.render
:
Rails.application.config.non_digest_assets = %w(*.html)
Sprockets.register_preprocessor 'text/html', -> (asset) do
asset[:data] = ::ApplicationController.render({
inline: asset[:data],
layout: 'layouts/application1'
})
end
Я предполагаю, что помощники тега актива могут не работать, потому что я пытаюсь их использоватьв препроцессоре как часть задачи assets:precompile
.Есть еще какие-нибудь мысли?