Ruby BigDecimal健全性检查(浮动点newb)

我的理解是正确的,使用Ruby BigDecimal类型(即使具有不同的精度和比例长度)应该准确计算还是应该预测浮点诡计? 我在Rails应用程序中的所有值都是BigDecimal类型,我看到一些错误(它们有不同的小数长度),希望它只是我的方法而不是我的对象类型。

测试变量是否与if-elsif链长的几个字符串中的任何一个匹配,或者case-when

我假设在ruby中有一个很好的单行方式 if mystr == “abc” or “def ” or “ghi” or “xyz” 但在我通常咨询的在线参考文献中找不到如何做到这一点… 谢谢!

在Rails中的会话中存储对象

我一直被教导在会话中存储对象是一个坏主意。 而是应该存储ID,以便在需要时检索记录。 但是,我有一个应用程序,我想知道这个规则的例外。 我正在构建一个flashcard应用程序,被测试的单词位于数据库的表中,其架构不会更改。 我想在会话中存储当前正在进行测验的单词,因此用户可以在他们进入单独页面的情况下完成他们开始的位置。 在这种情况下,是否可以将这些单词作为对象存储在数据库中? 如果是这样,为什么? 我问的原因是因为测验旨在快速移动,而且我讨厌在检索永远不会改变的记录时浪费数据库调用。 但是,也许还有一些我不知道的大型会话的负面影响。 *为了记录,我尝试使用Rails 2.3中的内置memcache方法缓存它,但显然每个项目的最大大小为1MB。

无法在ruby中使用openssl

我在我的虚拟机ubuntu12.04lts中安装了openssl。 当我运行gem命令时,它会出错。 错误:执行gem时(Gem :: Exception) 无法要求openssl。 安装openSSL并重建ruby(首选)或使用非HTTPs源 我还测试了irb模式下的openssl。 它给出了错误。 Loaderror:无法加载此类文件–openssl 来自/usr/local/lib/ruby/site_ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55`requiret’ 我有openssl $openssl version OpenSSL 1.0.1 14 mar 2012 如何修复错误?

ruby运算符|| =智能吗?

我有一个关于ruby中的|| =语句的问题,这对我来说特别有意义,因为我正在使用它来写入memcache。 我想知道的是,|| =先检查接收器,看它是否在调用该setter之前设置,或者它实际上是x = x || y的别名 x = x || y 在普通变量的情况下,这并不重要,但使用如下: CACHE[:some_key] ||= “Some String” 可能会做一个比简单变量集更昂贵的memcache写入。 奇怪的是,我在ruby api中找不到关于|| =的任何内容,所以我自己无法回答这个问题。 我当然知道: CACHE[:some_key] = “Some String” if CACHE[:some_key].nil? 会实现这个,我只是在寻找最简洁的语法。

在Ruby中获取URL的重定向

根据Facebook图形API,我们可以使用此示例请求用户个人资料图片(示例): https://graph.facebook.com/1489686594/picture 但是上一个链接的真实图像URL是: http://sofzh.miximages.com/ruby-on-rails/41721_1489686594_527_q.jpg 如果您在浏览器上键入第一个链接,它会将您重定向到第二个链接。 有没有办法通过知道第一个URL来获取Ruby / Rails的完整URL(第二个链接)? (这是这个问题的重复,但对Ruby而言)

如何在安全的沙箱中运行不受信任的Ruby代码?

我希望能够运行不受信任的ruby代码。 我希望能够将变量传递给它可能使用的所述不受信任的代码。 我也希望代码将结果返回给我。 这是我正在思考的一个概念性例子 input = “sweet” output = nil Thread.start { $SAFE = 4 #… untrusted code goes here, it uses the input variable(s) #to calculate some result that it places in the output variable } #parse the output variable as a string. 只是为了澄清,我基本上使用不受信任的代码作为函数。 我想提供一些输入,然后允许它写入输出。 这就是我真正想要的,我不在乎它是如何完成的,我只是希望能够使用不受信任的Ruby代码作为一种function。 解决方案不必看起来像我上面写的代码,我只是用它来说明我想要的东西。 现在,我现在可以想到3种方法: 使用上面的$ SAFE级别构造。 whytheluckystiff有一个用于ruby的Sandbox插件 我可以使用某种os虚拟化软件(如vmware或Xen等)在自己的虚拟机中运行每个function。 我想知道是否有人有任何建议以function方式运行不受信任的ruby代码? 你会推荐什么选择? […]

保护Rails应用程序中的public / content内容

我正在维护一个Rails应用程序,其中包含公共/文件夹中的内容,现在需要通过登录进行保护。 我们正在考虑将这些文件夹移动到public / public之外的路径中,并编写Rails控制器来提供内容。 在我们开始写这篇文章之前,我很好奇是否还有其他人遇到过这类问题? 我找了一些可能已经这样做但没有找到任何东西的gem/插件。 有没有人为此创造了一个gem?

Ruby的sort_by {rand}是如何工作的?

我认为这是一个很棒的Ruby单行程序: someArray.sort_by {rand} 它简洁,可读,而且有效 – 但我不太明白。 这就是我所知道的: rand计算结果为0到1之间的数字(如0.783468632804653) rand在上面的代码中被重复评估,因为将它分配给x首先会破坏随机排序 sort_by {0.783468632804653}或我尝试的任何其他数字对数组没有影响 在这种情况下, ruby-doc.org对我没什么帮助。 有人可以一步一步地解释这个吗? 更新 我现在一直在使用Ruby,我看到我在这里错过了一两个概念。 关键是: rand是一种方法(在Kernel上定义); 它会生成一个随机数 {rand}是一个块, sort_by保持, 每次想要比较集合中的两个项目时调用它。 如果集合是一堆代表国家的对象,它需要能够抓住其中的两个并确定哪个是第一个。 你把名字最长的那个放在首位吗? 土地面积最大的那个? 该块应该通过返回一个值“回答一个问题”来回答这个问题:“你问过西class牙对喀麦隆,我说喀麦隆是第一个。” (你可以用{|country| country.name.length}做到这一点 sort_by的其余部分在文档中进行了解释。 我仍然不太确定为什么返回一个随机数可以工作 – 大概是sort_by它sort_by到-1,0或1,哪个最接近? 但无论如何,每次调用块时获取不同的随机数与每次获取相同的数字完全不同。 当sort_by说“这两个国家中的哪一个首先出现?”时, {rand}戴上眼罩,转过10次,然后说“那个!” 🙂

测试散列是否具有多个键中的任何一个

我想知道是否有更好的方法来测试散列是否有来自数组的任何键。 我想用它这样的东西: keys = %w[k1 k2 k5 k6] none = true if hash.key?(keys) 或者我将不得不循环这个?