问题标签 [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.
ruby - 如何在 Ruby 2.7 中对哈希数组进行模式匹配?
我正在通过对JSON 文档的模式匹配来试验Ruby 2.7 中的新模式匹配功能。我想用它来匹配具有某些特征的数组元素。在我的例子中,有一个区域数据数组存储为哈希值,每个哈希值都有一个 id。我只需要使用如下所示的与哈希匹配:id
10
我希望它打印“我们找到了 10 区!” 但事实并非如此。
是否可以使用 Ruby 模式匹配来做到这一点?
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:
ruby-on-rails-6 - 使用捆绑器安装了丢失的 gem,但仍然显示 gem 丢失?
使用 Rails 红宝石 2.7.2p137
我已经安装了缺少的 gem rake 13.03,但它仍然显示缺少 gem。
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
值得记录,但仅当它存在时。
ruby - **args 作为 Ruby 中的函数参数
我知道这**args
被解释为包含传递给函数的所有键值对的哈希,但我不明白为什么它比典型参数更受欢迎。例如,我有以下两个功能。
调用test("test string", a: 1, b: 2)
或test_two("test string", a: 1, b: 2)
产生完全相同的结果。**
用作参数值有什么好处?
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 相关的更新)。
关于如何消除或解决此错误的任何想法?我有很多宝石需要更新,我相信这不会是我最后一次看到这个错误。任何帮助将不胜感激。如果需要更多信息,请告诉我。
ruby - 我应该使用什么来正确替换已弃用的 URI.escape
我需要帮助了解什么是替换已弃用的正确方法URI.escape
当前的实现是这样的:
所以,只是使用DEFAULT_PARSER
似乎工作:
但也明确说明解析器似乎也可以工作:
我正在寻找的是关于 Ruby 更改的上下文,因此可以做出明智的决定。
- 为什么被弃用
- 为什么将其移至 RFC2396_Parser?我们应该期待新的 URI 解析器吗?
- 是否有计划切换 URI::DEFAULT_PARSER?
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
文件在下面
谢谢你。
ruby-on-rails - 构建失败(Ubuntu 20.04 使用 ruby-build 20210119)
我正在使用 rbenv 并且在 Ec2 实例中我试图安装一个不同的 ruby 版本但是当我执行时
发生以下错误。
同时,我的系统正在使用默认的 ruby 版本
我不确认这是空间问题还是其他问题,空间信息在下面列出。
ruby - Ruby:从类方法中更改实例
我有两个要交换的类的实例。两个实例都是数组。我想使用类方法交换它们。如何从类方法中更改/访问实例self.collide
?
我已经尝试了下面的代码,但不起作用,但应该说明我正在尝试做什么。
测试结果是...