Ruby—使用YAML解析哈希的字符串—如果哈希输入raw并强制为字符串而不是作为字符串输入,则出错
我创建了一个gem,它将Git包装为键:值存储(dictionary/hash)。消息来源是 其在参考流程中的工作方式如下: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
set
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>'