Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby—使用YAML解析哈希的字符串—如果哈希输入raw并强制为字符串而不是作为字符串输入,则出错_Ruby_Git_Hash_Yaml - Fatal编程技术网

Ruby—使用YAML解析哈希的字符串—如果哈希输入raw并强制为字符串而不是作为字符串输入,则出错

Ruby—使用YAML解析哈希的字符串—如果哈希输入raw并强制为字符串而不是作为字符串输入,则出错,ruby,git,hash,yaml,Ruby,Git,Hash,Yaml,我创建了一个gem,它将Git包装为键:值存储(dictionary/hash)。消息来源是 其在参考流程中的工作方式如下: 运行包含键和值参数的函数set 用git散列这些,关键点在散列 如果此操作成功,并将其添加到全局字典中,则返回密钥 现在,如果我打电话给 db.set('key', {some: 'value'}) # => 'key' 然后试着找回这个 db.get('key') Psych::SyntaxError: (<unknown>): did not fi

我创建了一个gem,它将Git包装为键:值存储(dictionary/hash)。消息来源是

其在参考流程中的工作方式如下:

  • 运行包含键和值参数的函数
    set
  • 用git散列这些,关键点在散列
  • 如果此操作成功,并将其添加到全局字典中,则返回密钥
  • 现在,如果我打电话给

    db.set('key', {some: 'value'})
    # => 'key'
    
    然后试着找回这个

    db.get('key')
    Psych::SyntaxError: (<unknown>): did not find expected node content while parsing a flow node at line 1 column 2
    from /home/bobby/.rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/psych.rb:370:in `parse'
    from /home/bobby/.rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/psych.rb:370:in `parse_stream'
    from /home/bobby/.rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/psych.rb:318:in `parse'
    from /home/bobby/.rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/psych.rb:245:in `load'
    from /home/bobby/.rvm/gems/ruby-2.2.1/gems/gkv-0.2.1/lib/gkv/database.rb:21:in `get'
    from (irb):6
    from /home/bobby/.rvm/rubies/ruby-2.2.1/bin/irb:11:in `<main>'
    
    执行git操作并将其包装到kv存储源的操作是:

    。。。
    def get(钥匙)
    如果$ITEMS.key.include?钥匙
    load(Gkv::GitFunctions.cat_文件($ITEMS[key].last))
    其他的
    上升键错误
    结束
    结束
    def设置(键、值)
    更新项目(键、值到)
    钥匙
    结束
    ...
    
    此处引用的
    get_items
    函数的来源是:

    。。。
    def更新_项(键、值)
    如果$ITEMS.key.include?钥匙
    历史记录=$ITEMS[关键字]
    
    历史在
    get
    方法中调用
    YAML.load
    ,但在set方法中使用
    。这意味着YAML解析器试图读取任意字符串,就像它是YAML一样。对于对称性
    YAML.dump
    应改为在
    set
    方法中使用

    我已经创建了一个包含更改的拉取请求

    db.set('key', "{some: 'value'}")
    # => 'key'
    db.get('key')
    # => {"key"=>"value"} 
    db.get('key').class
    => Hash
    
    db.set('a', {:key => 'value'})
    => "a" 
    db.get('a')
    # => Psych::SyntaxError: (<unknown>): did not find expected node content while parsing a flow node at line 1 column 2
    from /home/bobby/.rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/psych.rb:370:in `parse'
    from /home/bobby/.rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/psych.rb:370:in `parse_stream'
    from /home/bobby/.rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/psych.rb:318:in `parse'
    from /home/bobby/.rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/psych.rb:245:in `load'
    from /home/bobby/.rvm/gems/ruby-2.2.1/gems/gkv-0.2.1/lib/gkv/database.rb:21:in `get'
    from (irb):6
    from /home/bobby/.rvm/rubies/ruby-2.2.1/bin/irb:11:in `<main>'