Tag: ruby

在Ruby中,如何跳过.each循环中的循环,类似于“continue”

在Ruby中,如何跳过.each循环中的循环,类似于在其他语言中continue ?

gemeventmachine致命错误:找不到“openssl / ssl.h”文件

刚安装了El Capitan,不能安装gemeventmachine 1.0.7 。 openssl在1.0.2a-1 。 试图使用–with-ssl-dir但似乎被忽略。 也报告给他们的github回购 。 任何build议真的很感激。 谢谢。 $ ls /usr/local/Cellar/openssl/1.0.2a-1/include/openssl/ssl.h /usr/local/Cellar/openssl/1.0.2a-1/include/openssl/ssl.h $ gem install eventmachine -v '1.0.7' — –with-ssl-dir=/usr/local/Cellar/openssl/1.0.2a-1/include /Users/pain/.rbenv/versions/2.1.2/bin/ruby -r ./siteconf20150612-56154-1hsjz2n.rb extconf.rb –with-ssl-dir=/usr/local/Cellar/openssl/1.0.2a-1/include checking for rb_trap_immediate in ruby.h,rubysig.h… no checking for rb_thread_blocking_region()… yes checking for ruby/thread.h… yes checking for rb_thread_call_without_gvl() in ruby/thread.h… yes checking for inotify_init() in sys/inotify.h… no checking […]

在Ruby中读取二进制文件作为string

我需要一个简单的方法来获取一个tar文件并将其转换为一个string(反之亦然)。 有没有办法在Ruby中做到这一点? 我最好的尝试是这样的: file = File.open("path-to-file.tar.gz") contents = "" file.each {|line| contents << line } 我认为这足以将其转换为string,但是当我尝试将其写回像这样… newFile = File.open("test.tar.gz", "w") newFile.write(contents) 这不是同一个文件。 做ls -l显示文件大小不一,尽pipe它们非常接近(打开文件显示大部分内容完好无损)。 我正在做一个小错误还是一个完全不同(但可行)的方法来完成这个?

SSL_connect返回= 1 errno = 0状态= SSLv3读取服务器证书B:证书validation失败

我正在使用Authlogic-Connect进行第三方login。 运行适当的迁移后,Twitter /谷歌/雅虎login似乎工作正常,但Facebooklogin引发exception: SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed 开发日志显示 OpenSSL::SSL::SSLError (SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed): app/controllers/users_controller.rb:37:in `update' 请build议..

在Ruby中枚举

在Ruby中实现枚举习惯的最佳方式是什么? 我正在寻找一些我可以使用(几乎)像Java / C#枚举的东西。

Ruby有什么不Python的,反之亦然?

Python和Ruby之间有很多讨论,我都觉得它们完全没有帮助,因为它们都回避了为什么特性X在语言Y中很糟糕,或者声明语言Y没有X,尽pipe事实上它确实如此。 我也知道为什么我更喜欢Python,但这也是主观的,并不会帮助任何人select,因为他们可能没有像我一样的开发口味。 客观地列出这些差异是很有趣的。 所以没有“Python的lambda吮吸”。 相反,请解释一下Ruby的lambdaexpression式可以做到Python不能做的事情。 没有主观性。 示例代码很好! 请不要在一个答案中有几处不同。 并且把你知道的那些正确的投下来,然后把那些你知道的不正确的(或者是主观的)投下来。 而且,语法上的差异也不是很有趣。 我们知道Python会使用括号括起来的缩进,并且在Python中@被称为self。 更新:现在这是一个社区维基,所以我们可以在这里添加大的差异。 Ruby在类体中有一个类引用 在Ruby中,您已经在类体中引用了类(self)。 在Python中,只有在类构造完成之后,才能引用该类。 一个例子: class Kaka puts self end 在这种情况下,自己是class级,这个代码会打印出“卡卡”。 没有办法打印出类名或以其他方式从Python中的类定义主体(外部方法定义)访问类。 所有的类在Ruby中都是可变的 这使您可以开发核心类的扩展。 这是一个轨道扩展的例子: class String def starts_with?(other) head = self[0, other.length] head == other end end Python(想象没有''.startswith方法): def starts_with(s, prefix): return s[:len(prefix)] == prefix 你可以在任何序列上使用它(不只是string)。 为了使用它,你应该明确地导入它,例如, from some_module import starts_with 。 Ruby具有像Perl一样的脚本function […]

ruby是否有真正的multithreading?

我知道使用绿色线程的ruby的“合作” 线程 。 如何在我的应用程序中创build真正的“OS级”线​​程,以便利用多个CPU核心进行处理?

在Ruby中parsingJSONstring

我有一个string,我想在Ruby中parsing: string = '{"desc":{"someKey":"someValue","anotherKey":"value"},"main_item":{"stats":{"a":8,"b":12,"c":10}}}' 有没有简单的方法来提取数据?

什么是在Ruby中通过数组迭代的“正确”方式?

PHP,所有的疣,在这个数字是相当不错的。 数组和哈希之间没有区别(也许我很天真,但这似乎显然是正确的),并通过迭代你只是做 foreach (array/hash as $key => $value) 在Ruby中有很多方法来做这样的事情: array.length.times do |i| end array.each array.each_index for i in array 散列更有意义,因为我总是使用它 hash.each do |key, value| 为什么我不能这样做的数组? 如果我想记住只有一个方法,我想我可以使用each_index (因为它使索引和值都可用),但它是令人讨厌的,必须做array[index]而不是value 。 哦,对,我忘了array.each_with_index 。 但是,这个吸引因为它的|value, key| 和hash.each去|key, value| ! 这不是疯了吗?

Ruby中的string连接

我正在寻找一种在Ruby中连接string的更优雅的方式。 我有以下行: source = "#{ROOT_DIR}/" << project << "/App.config" 有没有更好的方法呢? 就此而言, <<和+什么区别呢?