Ruby - 错误:nil:NilClass 的未定义方法 '[]'



所以,我是Ruby的新手,我正在尝试将这个照片库安装到我的Jekyll博客中。但是,当我尝试运行时

jekyll build

我收到此错误消息:

Liquid Exception: undefined method `[]' for nil:NilClass in photography/index.html 
jekyll 3.7.2 | Error:  undefined method `[]' for nil:NilClass

使用 --trace 它指向我:

/Users/hal9000/Desktop/Plommonstop/_plugins/jekyll-exiftag-mod.rb:18:in `render': undefined method `[]' for nil:NilClass (NoMethodError)

但是现在我不明白该如何进行。 Jekyll-exiftags-mod 看起来像这样:

require 'exifr/jpeg'
#Based on https://github.com/benib/jekyll-exiftag by Beni Buess (MIT License)
#Edited to work as a Liquid-Block instead of a Liquid-Tag, reads the filename from between the
#brackets. --T.Winter
module Jekyll
  class ExifTag < Liquid::Block
    def initialize(tag_name, params, token)
      super
      @args = self.split_params(params)
    end
    def render(context)
      #abort context.registers[:site].config['source'].inspect
      sources = Array.new(context.registers[:site].config['exiftag']['sources'])
      # first param is the exif tag
      tag = @args[0]
      # if a second parameter is passed, use it as a possible img source
      if @args.count > 1
        sources.unshift(@args[1])
      end
      # the image can be passed as the third parameter
      img = super
      # first check if the given img is already the path
      if File.exist?(img)
        file_name = img
      else
      # then start testing with the sources from _config.yml
        begin
          source = sources.shift
          file_name = File.join(context.registers[:site].config['source'], source, img)
        end until File.exist?(file_name) or sources.count == 0
      end
      # try it and return empty string on failure
      begin
        exif = EXIFR::JPEG::new(file_name)
        return tag.split('.').inject(exif){|o,m| o.send(m)}
      rescue
        "ERROR, EXIF-Tag RB"
      end
    end
    def split_params(params)
      params.split(",").map(&:strip)
    end
  end
end
Liquid::Template.register_tag('exiftag', Jekyll::ExifTag)

对于第 18 行:

sources = Array.new(context.registers[:site].config['exiftag']['sources'])

"nil:NilClass 的未定义方法 '[]' 是什么意思?究竟是什么使这个问题发生?

该错误可能仅表示您尚未在配置文件中设置['exiftag']['sources']

您的配置文件应该类似于以下内容(entry1 和 entry2 只是示例(:

exiftag:
  sources:
    - entry1
    - entry2

请注意,缩进在 YAML 中也很重要。

相关内容

  • 没有找到相关文章

最新更新