问题标签 [ruby-2.7]

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 投票
2 回答
175 浏览

ruby - 如何在 Ruby 2.7 中对哈希数组进行模式匹配?

我正在通过对JSON 文档的模式匹配来试验Ruby 2.7 中的新模式匹配功能。我想用它来匹配具有某些特征的数组元素。在我的例子中,有一个区域数据数组存储为哈希值,每个哈希值都有一个 id。我只需要使用如下所示的与哈希匹配:id10

我希望它打印“我们找到了 10 区!” 但事实并非如此。

是否可以使用 Ruby 模式匹配来做到这一点?

0 投票
0 回答
83 浏览

ruby-on-rails - Ruby on Rails daylight-saving detection does not work in recent `ruby:2.7.1-alpine` container

Ruby on rails with recent ruby:2.7.1-alpine container, breaks timezone daylight-saving support:

2020-12-27 should actually be CET because of daylight saving. On local ruby installation and previous container builds it used to work and would returns:

The Dockerfile looks as follows:

Does anybody knows more about the internals? Is this a rails or ruby or alpine package problem. Any help would be great!

UPDATE

I could reproduce the behavior with a clean docker like:

I have the same issue on this clean install

After adding gem 'tzinfo-data' to the Gemfile, everything worked as expected:

0 投票
1 回答
192 浏览

ruby-on-rails-6 - 使用捆绑器安装了丢失的 gem,但仍然显示 gem 丢失?

使用 Rails 红宝石 2.7.2p137

我已经安装了缺少的 gem rake 13.03,但它仍然显示缺少 gem。

0 投票
2 回答
349 浏览

ruby - ruby:嵌套字符串插值的解决方法

在字符串
"#{x ? (x.to_s + ' is ') : ''}ok"中,Rubocop 的 Style/StringConcatenation 建议避免使用+.
但这需要一个嵌套的字符串插值
"#{x ? '#{x.to_s} is ' : ''}ok)"
至少在 Ruby 2.7 中它没有被扩展: #{x.to_s}被视为任何其他文字。

版本是否可以,+因为它处于样式指南可以涵盖的边缘,还是必须引入一个临时变量?


上下文:字符串被发送到日志文件。 ok实际上是一长串细节。 x值得记录,但仅当它存在时。

0 投票
2 回答
92 浏览

ruby - **args 作为 Ruby 中的函数参数

我知道这**args被解释为包含传递给函数的所有键值对的哈希,但我不明白为什么它比典型参数更受欢迎。例如,我有以下两个功能。

调用test("test string", a: 1, b: 2)test_two("test string", a: 1, b: 2)产生完全相同的结果。**用作参数值有什么好处?

0 投票
1 回答
347 浏览

ruby - 从 Ruby 2.7 升级到 3.0 时出现 ArgumentError - 与位置参数和关键字参数的分离有关?

我正在尝试将 gem 从 ruby​​ 2.7.0 升级到 3.0.0。我已经尝试阅读并提前计划我会遇到哪些障碍,例如Separation of positional and keyword arguments

我已经顺利更新了两个 gem,但是我已经开始升级第三个,并且在使用 RSpec 测试 3.0 更新时遇到了以下错误:

我正在尝试通过工厂实例化一个类。堆栈跟踪指向此函数的参数:

虽然我认为这并不重要,但我已经包含了 rubocop 禁用/启用行,以防万一它们很重要。

工厂以这种方式调用类:

现在,当我窥探 data 和 Long::Class::Name.new(data) 之间的代码并实例化我自己的 Long::Class::Name 时,如下所示:

它会在没有 ArgumentError 的情况下成功创建。

我心想,“很酷,我只需将 Factory 的 Class 调用更新为这种新格式并重新运行测试即可。” 这样做之后,我仍然得到与上面相同的 ArgumentError。

相信这是我上面链接的位置/关键字参数的问题,但我无法看到如何纠正这个问题。除了上面的链接,我还研究了Ruby 3 Keyword Arguments以及Hash and Keyword Coercion 和 Ruby 3 Changes。我相信我正面临最后一个链接的“不可预见的后果”部分。

从 Ruby 2.7 更新到 Ruby 3.0 后,我还查看了有关 ArgumentError 的 Stack Overflow 问题,并试图了解如何使用第一个答案的第一部分来帮助我解决问题(忽略与 PR 相关的更新)。

关于如何消除或解决此错误的任何想法?我有很多宝石需要更新,我相信这不会是我最后一次看到这个错误。任何帮助将不胜感激。如果需要更多信息,请告诉我。

0 投票
0 回答
78 浏览

ruby - 我应该使用什么来正确替换已弃用的 URI.escape

我需要帮助了解什么是替换已弃用的正确方法URI.escape

当前的实现是这样的:

所以,只是使用DEFAULT_PARSER似乎工作:

但也明确说明解析器似乎也可以工作:

我正在寻找的是关于 Ruby 更改的上下文,因此可以做出明智的决定。

  • 为什么被弃用
  • 为什么将其移至 RFC2396_Parser?我们应该期待新的 URI 解析器吗?
  • 是否有计划切换 URI::DEFAULT_PARSER?
0 投票
1 回答
270 浏览

ruby-on-rails-3.2 - minitest/capybara 错误 - NameError: undefined local variable or method 'page'

我正在更新 Rails 3.2 LTS 项目的托管,将它们从 ruby​​ 2.3.3 升级到 2.7.2。

作为其中的一部分,我更新了一些宝石,特别是更新

  • 从 5.11.3 到 5.14.3 的最小测试
  • 水豚从 1.1.2 到 2.18.0
  • 应该匹配器从 1.0.0 到 2.1.0
  • shoulda-context 从 1.0.0 到 1.2.2

我提到所有这些,因为我现在有两个失败的测试,它们在更改之前通过了。

它们都指向同一个文件中的两个测试,看起来像这样

如前所述,这个测试之前通过了,所以我猜其中一个宝石发生了一些变化,但我不知道是什么,或者如何修复它。

我的test_helper.rb文件在下面

谢谢你。

0 投票
1 回答
1348 浏览

ruby-on-rails - 构建失败(Ubuntu 20.04 使用 ruby​​-build 20210119)

我正在使用 rbenv 并且在 Ec2 实例中我试图安装一个不同的 ruby​​ 版本但是当我执行时

发生以下错误。

同时,我的系统正在使用默认的 ruby​​ 版本

我不确认这是空间问题还是其他问题,空间信息在下面列出。

0 投票
3 回答
72 浏览

ruby - Ruby:从类方法中更改实例

我有两个要交换的类的实例。两个实例都是数组。我想使用类方法交换它们。如何从类方法中更改/访问实例self.collide

我已经尝试了下面的代码,但不起作用,但应该说明我正在尝试做什么。

测试结果是...