Questions tagged «ruby»

Ruby是由松本行弘(Matz)于1995年创建的一种多平台开放源代码,动态的,面向对象的解释性语言。[ruby]标记用于与Ruby语言有关的问题,包括其语法和库。Ruby on Rails问题应标记为[ruby-on-rails]。


6
如何将JSON转换为Ruby哈希
我有一个持有以下值的JSON对象: @value = {"val":"test","val1":"test1","val2":"test2"} 我想在Ruby中循环遍历以获得键/值对。当我使用时@each,它不会遍历该对象,因为它不是Ruby哈希形式: @value = {"val"=>"test","val1"=>"test1","val2"=>"test2"} 如何将上述JSON对象转换为Ruby哈希?
137 ruby  json  hashmap 

13
如何将String对象转换为Hash对象?
我有一个看起来像哈希的字符串: "{ :key_a => { :key_1a => 'value_1a', :key_2a => 'value_2a' }, :key_b => { :key_1b => 'value_1b' } }" 如何获得哈希值?喜欢: { :key_a => { :key_1a => 'value_1a', :key_2a => 'value_2a' }, :key_b => { :key_1b => 'value_1b' } } 字符串可以具有任何嵌套深度。它具有在Ruby中键入有效哈希的所有属性。
136 ruby 


16
在Ruby中对受保护的私有方法进行单元测试的最佳方法是什么?
使用标准Ruby Test::Unit框架对Ruby中受保护的方法和私有方法进行单元测试的最佳方法是什么? 我确定有人会提出并断然断言“您应该仅对公共方法进行单元测试;如果需要进行单元测试,则不应将其作为受保护的方法或私有方法”,但是我对此并不感兴趣。我有几个方法被保护的或私有的良好和有效的原因,这些私人/受保护的方法是相对复杂的,并且在类的公共方法依赖于这些保护/私有方法正常工作,所以我需要一种方法来测试受保护/私有方法。 还有一件事...我通常将给定类的所有方法放在一个文件中,并将对该类的单元测试放在另一个文件中。理想情况下,我希望所有魔术都能将这种“受保护和私有方法的单元测试”功能实现到单元测试文件(而不是主源文件)中,以使主源文件尽可能简单明了。

3
使用Rails序列化将哈希保存到数据库
我尝试将哈希映射ID保存到Rails应用程序中的许多尝试中。我迁移到数据库以容纳此新列: class AddMultiWrongToUser < ActiveRecord::Migration def self.up add_column :users, :multi_wrong, :string end def self.down remove_column :users, :multi_wrong end end 在我的模型中,我有: class User < ActiveRecord::Base serialize :multi_wrong, Hash end 但是,当我使用Rails控制台通过以下操作进行测试时: user = User.create() user.multi_wrong = {"test"=>"123"} user.save 输出为假。这是怎么了


8
如何在Ruby中对字符串进行URL编码
我如何URI::encode像这样的字符串: \x12\x34\x56\x78\x9a\xbc\xde\xf1\x23\x45\x67\x89\xab\xcd\xef\x12\x34\x56\x78\x9a 以如下格式获取它: %124Vx%9A%BC%DE%F1%23Eg%89%AB%CD%EF%124Vx%9A 根据RFC 1738? 这是我尝试过的: irb(main):123:0> URI::encode "\x12\x34\x56\x78\x9a\xbc\xde\xf1\x23\x45\x67\x89\xab\xcd\xef\x12\x34\x56\x78\x9a" ArgumentError: invalid byte sequence in UTF-8 from /usr/local/lib/ruby/1.9.1/uri/common.rb:219:in `gsub' from /usr/local/lib/ruby/1.9.1/uri/common.rb:219:in `escape' from /usr/local/lib/ruby/1.9.1/uri/common.rb:505:in `escape' from (irb):123 from /usr/local/bin/irb:12:in `<main>' 也: irb(main):126:0> CGI::escape "\x12\x34\x56\x78\x9a\xbc\xde\xf1\x23\x45\x67\x89\xab\xcd\xef\x12\x34\x56\x78\x9a" ArgumentError: invalid byte sequence in UTF-8 from /usr/local/lib/ruby/1.9.1/cgi/util.rb:7:in `gsub' from /usr/local/lib/ruby/1.9.1/cgi/util.rb:7:in `escape' from (irb):126 from /usr/local/bin/irb:12:in …

4
Ruby Array find_first对象?
我在数组文档中缺少什么吗?我有一个数组,其中包含最多一个满足特定条件的对象。我想有效地找到那个对象。我从文档中得到的最好的主意是: candidates = my_array.select { |e| e.satisfies_condition? } found_it = candidates.first if !candidates.empty? 但是我不满意有两个原因: select即使我可以在第一次命中后保释,这也使我遍历了整个数组。 我需要一行代码(有条件)来压平候选人。 事先知道存在0或1个令人满意的对象,这两个操作都是浪费的。 我想要的是这样的: array.find_first(block) 它返回nil或该块对其求值为真的第一个对象,从而在该对象处结束遍历。 我必须自己写这个吗?Array中所有其他出色的方法都使我认为它在那里,而我只是没有看到它。
135 ruby  arrays  performance  find 

5
Ruby类类型和case语句
之间有什么区别 case item.class when MyClass # do something here when Array # do something different here when String # do a third thing end 和 case item.class when MyClass.class # do something here when Array.class # do something different here when String.class # do a third thing end 出于某种原因,其中的第一个有时起作用而第二个则不起作用,而在另一些时候,第二个起作用而第一个不起作用。为什么?哪种方法是“正确”的方法?



8
在Ruby中每个自动计数器?
我想使用for-for和counter: i=0 for blah in blahs puts i.to_s + " " + blah i+=1 end 有更好的方法吗? 注意:我不知道blahs是数组还是散列,但是必须这样做blahs[i]不会使其变得更性感。我也想知道如何i++用Ruby 编写。 从技术上讲,Matt和Squeegy的回答排在第一位,但是我给paradoja最好的答案,所以在SO上的要点分散了一些。他的答案也有关于版本的注释,该注释仍然有用(只要我的Ubuntu 8.04使用的是Ruby 1.8.6)。 应该使用puts "#{i} #{blah}"更简洁的方法。
134 ruby  syntax 


15
在Ubuntu上安装rmagick
我正在尝试在Ubuntu 10.04上安装RMagick。看着这里,但没有喜悦。我什至从源代码编译并安装了ImageMagick,但是当我尝试使用RubyGems安装RMagick时,这里的说明仍然没有帮助。我收到此错误: carcher@carcher-laptop:~/Code/temp/RMagick-2.13.1$ sudo gem install rmagick Building native extensions. This could take a while... ERROR: Error installing rmagick: ERROR: Failed to build gem native extension. /usr/bin/ruby1.8 extconf.rb extconf.rb:1:in `require': no such file to load -- mkmf (LoadError) from extconf.rb:1 Gem files will remain installed in /usr/lib/ruby/gems/1.8/gems/rmagick-2.13.1 for inspection. Results …

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.