我同时使用 sinatra 和 sidekiq。我正在尝试从 sidekiq 工作程序中渲染 erb 模板,但我得到了一个未定义的方法“erb”。在我看来,事情应该有效,因为 sidekiq 是作为我的 sinatra 应用程序的实例加载的,所以它应该有 erb 方法。我在这里缺少什么?
class SomeWorker
include Sidekiq::Worker
def perform(id)
erb(:emailTemplate)
end
end
(我现在意识到 SomeWorker 类与 sinatra 无关,所以它当然没有 erb 方法。也许我可以调用辅助模块?代替 erb 方法调用?)
所以我想出了1个解决方案:
require 'erb'
require 'tilt'
class ForgotEmailWorker
include Sidekiq::Worker
def perform
template = tilt.new(__path_to_erb_file).render
end
end
因此,您可以尝试以下解决方法:
class MyWorker
include Sidekiq::Worker
def perform
template_path = 'path/to/template.erb'
template_content = File.read(template_path
erb_template = ERB.new(template_content)
result = erb_template.result(binding)
puts result
end
end