我正在尝试创建一个这样的自定义Liquid模板标签:
class ScriptLoader < Liquid::Tag
def initialize(tag_name, filename, tokens)
super
@file = filename
end
def render(context)
settings.cdn_url << 'script/' << @file
end
end
Liquid::Template.register_tag('script', ScriptLoader)
以上代码位于外部文件位置:(project_dir)/tags/scriptloader.rb
此文件包含在app.rb启动文件中。
问题是即使在使用set方法在app.rb文件中添加配置后,settings变量仍为空。
在我的模板中调用{%script'myfile'%}时的响应:
Liquid error: undefined method `cdn_url' for Sinatra::Application:Class
非常感谢任何想法或指导!
谢谢!
答案 0 :(得分:0)
好的,所以我设法解决了这个问题。
我在app.rb中创建了一个配置对象,它从文件中加载配置,迭代它们并为每个配置调用set()方法。这也将config key =&gt;值集存储在类常量哈希中。
我可以访问这样的值:
class ScriptLoader < Liquid::Tag
def initialize(tag_name, filename, tokens)
super
@file = filename
end
def render(context)
MyObject::CONFIG[:cdn_url] << 'script/' << @file
end
end