Tag: yaml

管理工具中删除文件所有内容的方法

我创建了一个用户工具,允许论坛管理员在桌面上添加,编辑和删除用户,然后让他们能够将文件上传到他们的数据库中。 我知道这应该直接进入数据库,但我正在制作它的人不希望我有权访问。 这是源代码: #!/usr/bin/env ruby require ‘yaml’ require ‘open-uri’ def menu print “Welcome to User Menu. Would you like to [A]dd users, [D]elete users, [E]dit users, [V]iew all users, or [Q]uit the system?\n” input = gets.chomp! case input when /a/i add_user when /d/i delete_user when /e/i edit_user when /v/i view_all else puts “Exiting system..” exit […]

如何在Yaml中解析这个?

假设我有这个例子: Example: number: cuarenta cuarenta y uno cuarenta y dos cuarenta y tres cuarenta y cuatro cuarenta y cinco cuarenta y seis cuarenta y siete cuarenta y ocho cuarenta y nueve 我想解析这个问题,以便将每个数字组合在一起,就像“cuaranta y nueve”一样。 我无法想象如何做到这一点,因为在YAML中,你变成了与“名词”相关联的字符串。 我的yaml解析器看起来像这样: File.open(Rails.root + ‘lib/words/yamlicious.yml’, ‘r’) do |file| YAML::load(file).each do |topic, word_types| temp_topic = Topic.create! name: topic temp_words = word_types.map{|type, words| […]

我可以操作yaml文件并再次写出来

我有一个值映射,键是文件名,值是数组字符串。 我有相应的文件 我将如何加载文件并创建一个固定的yaml值,该值包含数组的值,无论该值是否已存在 例如 YAML(file.yaml) trg::azimuth: -extra -intra -lateral 要么 trg::azimuth: [extra,intra,lateral] 从 ruby {“file.yaml” => [“extra”,”intra”,”lateral”]}

在使用Ruby的YAML哈希中使用浮点数是否安全?

如果我有一个像YAML文件 — 2.1: my product version 没有任何引号,Ruby会将2.1视为Float(至少在Syck下 – 我不确定Psych)。 使用Float作为哈希密钥是否有任何风险,只要密钥的所有其他出现都来自YAML文件或来自Ruby的文字?

在Rails中加载YAML配置文件时出错

我正在使用MongoDB配置Rails,并在配对config/mongo.yml文件时发现一个奇怪的问题。 config/mongo.yml是通过执行script/rails generate mongo_mapper:config ,如下所示: defaults: &defaults host: 127.0.0.1 port: 27017 development: <<: *defaults database: tc_web_development test: <<: *defaults database: tc_web_test 从配置文件中我们可以看到对象development和test都应该有一个database字段。 但是当它在config/initializers/mongo.db解析并加载时, config = YAML::load(File.read(Rails.root.join(‘config/mongo.yml’))) puts config.inspect MongoMapper.setup(config, Rails.env) 奇怪的是: puts config.inspect的输出是 {“defaults”=>{“host”=>”127.0.0.1”, “port”=>27017}, “development”=>{“host”=>”127.0.0.1”, “port”=>27017}, “test”=>{“host”=>”127.0.0.1”, “port”=>27017}} 它不包含database属性。 但是当我在普通的ruby控制台中执行相同的语句时,不是使用rails console , mongo.yml以正确的方式解析mongo.yml 。 {“defaults”=>{“host”=>”127.0.0.1”, “port”=>27017}, “development”=>{“host”=>”127.0.0.1”, “port”=>27017, “database”=>”tc_web_development”}, “test”=>{“host”=>”127.0.0.1”, “port”=>27017, “database”=>”tc_web_test”}} 我想知道这个问题可能是什么原因。 有任何想法吗? […]

心理医生说«在中级正在建立一个AST ……»但是,到底是怎么回事?

我使用Sych做了这个旧代码: yaml_as “tag:yaml.org,2002:#{self}” def to_yaml(opts = {}) YAML::quick_emit(self, opts) do |out| out.map(taguri, to_yaml_style) do |map| map.add(‘name’, name) map.add(‘address’, full_address.upcase) if full_address? end end end 输出类似的东西: — !Contact name: SMOKE OIL address: |- SMOKE OIL 1 RUE DE LA PAIX 75002 PARIS FRANCE 现在,我正在升级旧代码,转到Psych所以,我阅读了doc并做了: yaml_as “tag:yaml.org,2002:#{self}” def encode_with(coder) coder[‘name’] = name coder[‘address’] = full_address.upcase if full_address? […]

无法解救YAML.loadexception

我正在尝试处理在Ruby中加载无效的YAML数据,但似乎无法挽救心理引发的exception。 这是一些示例代码,用于演示我遇到的问题: require ‘yaml’ begin YAML.load(‘&*%^*’) rescue puts “Rescued” end 例外: # ruby test.rb /usr/lib64/ruby/1.9.1/psych.rb:203:in `parse’: (): did not find expected alphabetic or numeric character while scanning an anchor at line 1 column 1 (Psych::SyntaxError) from /usr/lib64/ruby/1.9.1/psych.rb:203:in `parse_stream’ from /usr/lib64/ruby/1.9.1/psych.rb:151:in `parse’ from /usr/lib64/ruby/1.9.1/psych.rb:127:in `load’ from test.rb:3:in `’

在Ruby 1.8.7中将具有二进制数据的YAML响应转换为UTF-8

我正在从API中获取响应并接收: response: job: unit_count: “1” slug: Answers lc_tgt: ja body_tgt: !binary | 5Zue562U lc_src: en body_src: Answers job_id: “1948888” opstat: ok body_tgt值应该是几个日文字符(回答),但它们正在转换为安全运送。 我在1.8.7,所以我不能强制编码。 有没有办法解包()他们?

如何在Psych中反序列化类?

如何在Psych中反序列化以返回现有对象,例如类对象? 要做类的序列化,我可以做 require “psych” class Class yaml_tag ‘class’ def encode_with coder coder.represent_scalar ‘class’, name end end yaml_string = Psych.dump(String) # => “— ! String\n…\n” 但如果我尝试使用Psych.load ,我会得到一个匿名类,而不是String类。 正常的反序列化方法是Object#init_with(coder) ,但这只会改变现有匿名类的状态,而我想要String类。 Psych::Visitors::ToRuby#visit_Psych_Nodes_Scalar(o)有一些情况,而不是用init_with修改现有对象,它们确保首先创建正确的对象(例如,调用Complex(o.value)来反序列化一个复合体数字),但我不认为我应该monkeypatching该方法。 我注定要使用低水平或中等水平的发射,或者我错过了什么? 背景 我将描述该项目,它为什么需要类,以及它为什么需要(反)序列化。 项目 Small Eigen Collider旨在为Ruby创建随机任务。 最初的目的是看看Ruby的不同实现(例如,Rubinius和JRuby)在给定相同的随机任务时是否返回相同的结果,但我发现它对检测Rubinius和YARV的段错误也很有用。 每项任务由以下内容组成: receiver.send(method_name, *parameters, &block) 其中receiver是随机选择的对象, method_name是随机选择的方法的名称, *parameters是随机选择的对象的数组。 &block不是很随机 – 它基本上等同于{|o| o.inspect} {|o| o.inspect} 。 例如,如果接收器是“a”,method_name是:casecmp,参数是[“b”],那么你将调用 “a”.send(:casecmp, “b”) {|x| […]

可以使用Ruby的YAML模块嵌入注释吗?

to_yaml方法产生了很好的YAML输出,但我想在某些元素之前包含注释行。 有办法吗? 例如,我想生产: # hostname or IP address of client client: host4.example.com # hostname or IP address of server server: 192.168.222.222 从类似的东西: { :client => ‘host4.example.com’, :server => ‘192.168.222.222’, }.to_yaml …但我不确定YAML模块是否有办法完成。 更新:我最终没有使用使用正则表达式插入注释的解决方案,因为它需要从注释中分离数据。 对我来说最简单,最容易理解的解决方案是: require ‘yaml’ source = <<SOURCE # hostname or IP address of client client: host4.example.com # hostname or IP address of server server: […]