diff --git a/lib/jekyll-feed/meta-tag.rb b/lib/jekyll-feed/meta-tag.rb
index 6a47a095..54759297 100644
--- a/lib/jekyll-feed/meta-tag.rb
+++ b/lib/jekyll-feed/meta-tag.rb
@@ -7,8 +7,11 @@ class MetaTag < Liquid::Tag
def render(context)
@context = context
- attrs = attributes.map { |k, v| %(#{k}=#{v.encode(:xml => :attr)}) }.join(" ")
- ""
+ attrs = attributes.map do |k, v|
+ v = v.to_s unless v.respond_to?(:encode)
+ %(#{k}=#{v.encode(:xml => :attr)})
+ end
+ ""
end
private
diff --git a/spec/jekyll-feed_spec.rb b/spec/jekyll-feed_spec.rb
index e284dc30..af95ea67 100644
--- a/spec/jekyll-feed_spec.rb
+++ b/spec/jekyll-feed_spec.rb
@@ -189,6 +189,21 @@
end
end
+ context "with site.title set as a non-string value" do
+ class MySiteTitle
+ def to_s
+ "My Dynamic Site Title <&>"
+ end
+ alias_method :to_liquid, :to_s
+ end
+ let(:site_title) { MySiteTitle.new }
+ let(:overrides) { { "title" => site_title } }
+
+ it "ensures the site.title is the string representation of the object" do
+ expect(feed.title.content).to eql(site_title.to_s.encode(xml: :text))
+ end
+ end
+
context "with site.name set" do
let(:site_name) { "My Site Name" }
let(:overrides) { { "name" => site_name } }