将 deep_merge 更改为 Utils.deep_merge_hashes

Change deep_merge to Utils.deep_merge_hashes

我正在使用 Octopress 生成静态 html 页面。我尝试使用 this 指令更改日期的语言(它是德语,但我们只需要代码)。当我将 date.rb 从这个德国网站复制到我的 octopress/plugins 时,出现以下错误:Liquid Exception: undefined method `deep_merge' for # in blog/path/to/post/index.html.

如果我在date.rb中注释掉这部分,我就可以生成站点:

def to_liquid
  date_format = self.site.config['date_format']
  self.data.deep_merge({
    "title"             => self.data['title'] || self.slug.split('-').select {|w| w.capitalize! || w }.join(' '),
    "url"               => self.url,
    "date"              => self.date,
    # Monkey patch
    "date_formatted"    => format_date(self.date, date_format),
    "updated_formatted" => self.data.has_key?('updated') ? format_date(self.data['updated'], date_format) : nil,
    "id"                => self.id,
    "categories"        => self.categories,
    "next"              => self.next,
    "previous"          => self.previous,
    "tags"              => self.tags,
    "content"           => self.content })
end

然后 blog/archives 中的日期会更改语言,但不会更改帖子中的日期。我发现了一个类似的problem,已经通过更改deep_merge→Utils.deep_merge_hashes解决了。所以我明白我需要在上面介绍的那段代码中做完全相同的事情。我想这应该很容易,但由于我不知道Ruby,所以我还没有成功。你能告诉我在这种情况下我应该如何使用 Utils.deep_merge_hashes 而不是 deep_merge 吗?

这有效(ruby 2.1.1 - Jekyll 2.5.3)

def to_liquid(attrs = nil)
  date_format = self.site.config['date_format']
  new_datas = {
    "title"             => self.data['title'] || self.slug.split('-').select {|w| w.capitalize! || w }.join(' '),
    "url"               => self.url,
    "date"              => self.date,
    # Monkey patch
    "date_formatted"    => format_date(self.date, date_format),
    "updated_formatted" => self.data.has_key?('updated') ? format_date(self.data['updated'], date_format) : nil,
    "id"                => self.id,
    "categories"        => self.categories,
    "next"              => self.next,
    "previous"          => self.previous,
    "tags"              => self.tags,
    "content"           => self.content }

  Utils.deep_merge_hashes(self.data, new_datas)
end