我正在使用 Ruby 1.9.3 RSS::Maker 模块为播客生成 RSS 2.0 提要。我想开始包含一个<content:encoded>
显示注释的元素。这是我生成 RSS 的代码。
s3_bucket = AWS::S3::Bucket.find(options[:bucket])
content = RSS::Maker.make(version) do |m|
m.channel.title = options[:title]
m.channel.link = options[:link]
m.channel.description = options[:desc]
m.channel.language = options[:language]
m.channel.itunes_image = options[:image]
m.items.do_sort = true
s3_bucket.select{|object| object.key =~ /[\s\w]+\.(m4b|mp3|m4a|ogg|aac)/}.each do |audio|
i = m.items.new_item
i.link = audio.url(:authenticated => false)
i.title = audio.key.split(".")[0]
i.author = options[:author]
i.pubDate = audio.last_modified
i.guid.content = audio.etag
i.enclosure.url = i.link
i.enclosure.length = audio.content_length
i.enclosure.type = audio.content_type
# Insert content:encoded code here
end
end
为了生成<content:encoded>
我尝试过的元素:
i.encoded :content audio.metadata[:content]
i.encoded :content, audio.metadata[:content]
i.content = audio.metadata[:content]
i.content.encoded = audio.metadata[:content]
i.encoded = audio.metadata[:content]
i.encoded.content = audio.metadata[:content]
这些都不起作用,并且大多数都抛出 NoSuchMethod 异常 - 根据 RSS::Maker 模块的文档,这并不奇怪。
有没有办法使用 RSS::Maker 添加带有命名空间的任意元素?