有简单的 rake 任务(通过 GIST)从 VIEW_PATH 加载所有文件,用应用程序布局包装它并将其存储在公共的相同路径下。使用 Rails 4。
https://gist.github.com/potapuff/090b2da4a4156c1272430241cb70edc0
namespace :static do
desc 'Render all resources'
task :publicate => :environment do
resources(VIEW_PATH).each do |src, dest|
html= controller.render_to_string(file:src, layout:'application')
dirname = File.dirname(dest)
unless File.directory?(dirname)
FileUtils.mkdir_p(dirname)
end
File.write(dest, html)
end
end
def resources search_path
...
end
def controller
ApplicationController.new.tap do |controller|
...
end
end
end
其他可能性是使用 gem render_anywhere 。
在 Rails 5 中,我们有了使用外部控制器渲染的新能力
https://medium.com/evil-martians/the-rails-5-post-9c76dbac8fc#1b36