问题标签 [ruby-2.3]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
44 浏览

ruby-on-rails - 检查是否有特定字符长度的唯一标记

我有一个带有属性的 Post 模型token

SecureRandom.urlsafe_base64(length_of_token)用来创建令牌。

令牌不需要不可猜测,但必须是唯一的。

我从 1 个字符长的标记开始,当它们全部用完(所有 64 种组合)时,我应该继续使用 2 个字符长的标记。

我应该如何检查 3 个字符长的标记是否有任何标记变体?

0 投票
1 回答
7258 浏览

ruby - IRB 历史记录不适用于 Ruby 2.3.0

我在 OS X 10.11.4 上通过 rbenv 安装了 Ruby 2.3.0p0。在 IRB 会话中,历史记录工作正常。但是,我无法跨会话访问 IRB 历史记录。

我尝试了我的系统 Ruby,2.0.0p648,跨 IRB 会话的历史记录工作正常。我尝试通过 rbenv 安装相同版本的 Ruby,它也有工作历史。

我已经比较了IRB.conf工作会话和非工作会话之间的值,并且没有什么不合适的(尽管奇怪的是,irb/ext/save-history.rb在这两种情况下都是一个空白文件)。

查看我的 .irb_history 文件,它似乎被最新会话中的命令替换而不是附加。我可以加载 2.0.0 IRB 会话并很好地滚动浏览这些命令。

我已经尝试了rbenv irb history 中列出的答案,如果没有成功就不会保存。

我还尝试了irb history not working中选择的答案。我必须更改所选答案以替换 #nitems 方法。这表明正在从历史文件中读取行,并将其推送到Readline::HISTORY. 然而,检查Readline::HISTORY在那里什么也没有。

我可以通过将 .irb_history 中的前几行添加到 Readline 历史记录中Readline.readline,并指定 add_hist=true 来破解历史记录。但是,将前面的命令添加到 Readline 绝对不是正确的方法。

我知道我可以切换到像 pry 这样的东西,但我想弄清楚这一点。关于为什么没有将命令添加到 Readline 以及如何更改它的任何建议?

0 投票
1 回答
107 浏览

ruby - Ruby 2.3.0:将 nil 赋值为 Hash 不会引发 NoMethodError

我刚刚注意到 Ruby 2.2.4 和 Ruby 2.3.0 之间的行为发生了一个非常令人费解的变化:尝试[]在赋值中使用 nil 不会再引发 a NoMethodError

红宝石 2.2.4:

与 Ruby 2.3.0 相比:

这种行为是预期的,还是某种回归?

当我们在 2.3 中发现这样一个似乎吞没异常的赋值时,我们最初注意到了这一点:

而 Ruby 2.2 将首先执行右手边,并按TypeError预期提出 a 。

0 投票
1 回答
780 浏览

arrays - Ruby 数组删除 if 并获取已删除的对象

所以我有这种情况,我需要有条件地从数组中删除一些东西,这意味着我想遍历数组中的项目并进行测试并删除通过测试的项目,然后我想获取那个已删除的项目背部。如果我排除了它的条件方面,那么Array#delete基本上我想要做的 - 返回已删除的项目,但不能有条件地删除。另一方面,delete_if 有条件地删除项目,但将剩余项目返回到数组中。

出于本问题的目的,假设以下类别:

我可以通过执行以下操作轻松重现此行为:

但我希望能找到类似的东西:

我对必须多次遍历数组来完成这项工作并不感到兴奋:/首先找到目标的索引,第二次获取目标,第三次删除目标。伊克。

有什么想法或建议吗?

0 投票
1 回答
453 浏览

ruby - 升级到 Ruby 2.3.1p112 后无法使用 Capistrano 3.5.0 部署(2016-04-26 修订版 54768)

使用 Ruby 2.1。仅当一次部署到多个服务器时才会发生这种情况。服务器是 Ubuntu 14.04。导轨 4.2.6。Cap 3.2 和 master 的行为相同。

它在日志文件夹内而不是在主应用程序文件夹内创建日志符号链接。同样适用于 log/log、public/system/system、tmp/sockets/sockets、tmp/pids/pids、tmp/cache/cache、vendor/bundle/bundle

有没有人经历过这个?任何意见,将不胜感激。

我的宝石文件

详细错误

capistrano.log

0 投票
1 回答
2316 浏览

ruby-on-rails - How can I change this super call to pass the arguments explicitly?

I'm running a legacy Rails 2.3 (yes, I know) application on a new VM. It's running Ruby v2.3.1. I've made all of the recommended changes to get this old app running on this version. Everything runs great, and much faster, except for this code. This code is from the old Advanced Recipes for Rails book and is error_handling_form_builder.rb.

First, here's the form declaration:

This code works fine if I remove the builder param. Here's the code from ErrorHandlingFormBuilder:

The call to super above fails with following error:

Looking at the code, I'm not sure how to change it.

I know I have to call super with the explicit arguments, but I tried this:

and I get:

I also tried:

but I get:

It seems like it's looking for the collection attribute 2nd in the list of *args. But it's first. If i pass field as the first argument though, I get a Stack Level Too Deep.

0 投票
1 回答
579 浏览

ruby - Net::HTTP – 刷新或关闭

我为支付 API 编写了一个消费者。我的代码只是发出一个 POST 请求并从 API 获得响应。我已经用 Net::HTTP 实现了它,下面是相关的代码行:

这工作了多年,但是,最近当 API 处于压力之下时,一些请求已经超时。API 维护者提出了以下解释:

在刷新 HTTP 响应后,我们将数据同步传递给 RabbitMQ。显然,一些 HTTP 库在程序继续在消费者端之前等待连接关闭,我们认为这发生在这里。请重新配置您的消费者不要等待关闭,而是在刷新响应后立即继续。

我不确定 Net::HTTP 是如何实现的,以及它是否真的在刷新响应时等待关闭。文档没有说任何关于它的信息,也没有设置来控制任何这些。更糟糕的是,我真的不知道如何模拟这个。

任何想法都非常受欢迎!

0 投票
1 回答
36 浏览

arrays - sort_by 哈希数组在 ruby​​ 中没有给出预期的结果

我有以下数组

我期望排序的结果应该与我的源数组相同,因为键对于所有散列具有相同的值

但我得到以下结果

第一个和最后一个哈希被交换。

这是一个有效的结果吗?这种行为的原因是什么?

0 投票
1 回答
435 浏览

ruby-on-rails-5 - Rails 5 中未初始化的常量 ActiveMerchant::Billing::Integrations::Helper (NameError)

我正在尝试整合 allpay 支付。

但我得到:

未初始化的常量 ActiveMerchant::Billing::Integrations::Helper (NameError)

0 投票
1 回答
796 浏览

sqlite - Rails 5:无法加载“active_record/connection_adapter/sqlite3_adapter”

我在 Windows 7 上使用 Ruby 2.3.1。基于http://guides.rubyonrails.org/getting_started.html我尝试重新创建 Rails 5 应用程序,但由于 gem sqlite3-1.3.11 而没有成功。

“rails start”之后的第一个错误是“无法加载此类文件——sqlite3/sqlite3_native (LoadError)”。在 Windows 上启动 Rails 服务器时,该问题已由Error 解决。没关系。

但我无法修复第二个错误(浏览器中的 LoadError):“无法加载 'active_record/connection_adapters/sqlite3_adapter'。”

谁能帮忙?