我有一个 rake 任务,它在部署时运行以生成service_worker.js
文件。有一个ServiceWorkerController
目的:
应用程序/控制器/service_worker_controller.rb
class ServiceWorkerController < ActionController::Base
def service_worker
end
end
app/views/service_worker.js.erb(简化版)
'use strict';
const offlinePages = [
'<%= root_path %>'
]
lib/tasks/statics.rake(简化版)
namespace :statics do
desc "Generate static files."
task :create => :environment do
I18n.locale = :en
File.open(Rails.root.join('service_worker.js'), 'w') do |f|
f.write ServiceWorkerController.render(:service_worker)
end
end
end
在最新的 Rails 6.0 之前运行rails statics:create
正常,但是,在升级到最新的 Rails 6.1 后,root_path
视图中的 会导致以下异常:
ActionView::Template::Error: 参数数量错误(给定 4,预期 0..1)/home/rails/app/views/service_worker/service_worker.js.erb:4:in `_app_views_service_worker_service_worker_js_erb__1965251932277058399_91060'
从 Rails 6.0 到 6.1 的任何想法都可以解释这一点吗?
更新忘了提到ServiceWorkerController.render(:service_worker)
在 Rails 控制台中工作得很好,显然,尽管 .rake 任务的上下文中缺少一些东西task :create => :environment
。