问题标签 [ruby-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 回答
163 浏览

ruby - ruby 中最小的未占用椅子解决方案的数量

我正在学习 ruby​​ 并开始从 leetcode 练习问题,昨天我有一个问题,从昨天开始我就无法解决。

我在 ruby​​ 中努力做到这一点,但还不能做到。

我试过这个

但对于某些测试用例它失败了。

我无法为它创建算法。

问题 = https://leetcode.com/problems/the-number-of-the-smallest-unoccupied-chair

我的做法:

  1. 首先,我根据到达时间对时间数组进行排序。

  2. 然后我遍历每个数组元素

  3. 现在,如果到达时间大于之前的所有离开时间(我正在创建密钥、离开时间的值对和给定的椅子),那么我在 leave_time_chair(这是哈希)中添加一个新的 key=> 值对,其中 key 是当前数组的离开时间和值是给它的椅子。

  4. 然后我增加椅子(椅子+=1)

  5. 否则我得到所有那些等于或小于当前到达时间的离开时间(all_keys = leave_time_chair.keys.select { |k| k <= i[0] }

  6. 然后我得到了那个时代的所有椅子

  7. 现在我有所有这样的椅子 => [0, 0, 1, 2] 所以我写了一个函数 [ give_chair(a) ] 它给了我那些不重复的元素。像这样 => [1, 2] 然后我将最短的数字(椅子)分配给当前数组的离开时间。等等...

  8. 然后,如果我当前的数组等于朋友,我就返回它的椅子。通过从哈希 (leave_time_chair) 中提取它返回 leave_time_chair[i[1]]

0 投票
0 回答
43 浏览

ruby-on-rails - 将 rails 4.2.7 升级到 rails 6.0.4.1,postgres jsonb 列数据返回为空哈希 {},尽管列中有数据

发现 jsonb 列数据有问题

Rails 4.2 和 ruby​​ 2.10,我们能够获取名为数据的 jsonb 列,但在最新的 Rails 6.0.4.1 和 ruby​​-3.0.2 中,它返回空哈希,尽管列中有数据

任何机构都可以帮助我了解导致问题的原因吗

导轨 c

加载开发环境(Rails 4.2.7.1)

2.2.10 :001 > pp TestTable.find(1234)

$ rvm 列表

=* ruby​​-2.2.10 [x86_64]

ruby-2.3.0 [x86_64]

ruby-3.0.0 [x86_64]

ruby-3.0.2 [x86_64]

$

$ rvm 使用 ruby​​-3.0.2

使用 /Users/user2/.rvm/gems/ruby-3.0.2

$导轨c

解决依赖关系...加载开发环境(Rails 6.0.4.1)

3.0.2:001 > pp TestTable.find(329470)

=>

迁移文件

最初创建的表没有 jsonb 数据列

后来,我们使用下面的迁移添加了 jsonb 列

如果我切换回 rails 4.2 并检查,我可以看到并能够获取数据

型号:test_table.rb

active_support_json_proxy.rb

0 投票
2 回答
85 浏览

ruby - 从 TCPSocket 读取整个消息而不挂起

我在 Ruby 3.0.2 中组装了一个 TCPServer,我发现我似乎无法在不阻塞的情况下读取整个数据包(直到套接字关闭)。

编辑:我试图做的事情有些混乱 - 我的错 - 所以只是为了帮助澄清:我想阅读到目前为止通过 TCP 连接发送的所有内容。(结束编辑)

我的第一次尝试是:

但这会挂起,直到客户端关闭连接。好的,所以我看一下connection.methods, 和 ruby​​ 文档,并尝试了一堆看起来很有希望的选项。基本上,有两种类型的读取方法:阻塞和非阻塞。

我尝试的阻塞方法是.read, .gets, .readlines, .readline, .recv, 和.recvmsg. 现在.read, .readlines, 和.gets所有挂起(直到套接字关闭) - 所以这没有帮助。其他的(例如.readlinerecv方法)不会阅读整个消息。现在,我可以读取每一行,直到看到一个空行并从那里解析 HTTP 标头。但是必须有更好的方法;我不想担心收到损坏的消息并挂起,因为我没有在标题末尾读取空行。

所以我去看了非阻塞选项。具体.recv_nonblock.recvmsg_nonblock。这两个抛出错误(资源暂时不可用 - recvfrom(2) 将阻塞资源暂时不可用 - recvmsg(2)分别)。

关于可能发生的事情的任何想法?我认为使用 Ruby 3 与我有关,因为在 Ruby 2.5 上尝试代码client.gets会返回一行(不会挂起),尽管.readlines会挂起 - 所以不确定发生了什么。

理想情况下,我可以调用类似的东西client.get_message,我会得到已发送的整个消息,但我也可以在 TCP 级别工作并获取数据包大小,读取该大小并重建消息从那里。

0 投票
0 回答
100 浏览

ruby-on-rails - Rails 文件上传“TypeError:无法转储文件”

我们正在努力将 ruby​​ 版本从 2.3.1 更新到 3.0.2 和相关更改。我们在上传文件时遇到问题。我刚刚设置了文件上传的形式并设置了上传事件,没有任何模型连接进行测试。事件模型尚未创建或附加任何文件,在提交按钮上,系统引发 TypeError。

作为更新 ruby​​ 和 rails "config.cache_store = :mem_cached_store" 的一部分,我已将 dalli 缓存存储更改为 mem_cache_store

我检查了 cache.rb 并在压缩中发出了 raise!“序列化 = Marshal.dump(@value)”时的方法

还设置 param[:image] = nil rescue nil,所以在重定向之前很清楚,但仍在会话中我找到了图像文件上传条目。这个错误是由于 Marshal.dump 尝试序列化文件上传对象造成的吗?

有没有办法解决这个错误?

错误:

样本测试文件:

0 投票
1 回答
121 浏览

ruby - 如何配置 Steep 以查找标准库之外的 gem 的 RBS 文件?

红宝石文件

.rbs 文件

结果

我用steep宝石。似乎需要一些文件。但

不起作用。

我错了什么?谢谢。

0 投票
0 回答
82 浏览

ruby - 无法在 Ruby 3.0.2 上安装 rmagick

我正在尝试将我们的 Ruby 版本从 2.7.4 更新到 3.0.2。如果我bundle在本地机器上,我会收到此错误:

如果使用 Docker,我会设法使用 构建映像ruby:3.0.2-alpine3.12,但是如果我尝试将项目加载到容器中,则会出现此错误:

我不知道出了什么问题以及如何继续,所以任何帮助将不胜感激!

0 投票
2 回答
72 浏览

ruby - 从循环哈希中删除最后一个字符

你能帮我用这段代码解决这个问题吗?

我得到的结果

但我想要的只是删除最后一个逗号

感谢你们对我的帮助

0 投票
1 回答
105 浏览

ruby - 我可以在 Ruby 3 中使用 Ruby 2.4 代码而不会出现任何错误吗?

我想知道是否可以在 ruby​​ 3 中使用基于 ruby​​ 2.4 的代码(如在程序、方法、语法和函数名称中)。我想慢慢迁移到 Ruby 3,但我想知道一切是否稳定。

我需要下载一些软件包以使其稳定吗?Ruby 3 是否向后兼容(我听说它们不如快速创新者那么多,比方说,与 Python 相比,python 向后兼容所有 3.x 版本,但不是那么大的创新者)?

我应该仔细阅读我编写的所有内容以使其兼容吗?

有点切题,但我是否有必要迁移到 Ruby 3?我认为 Ruby 2.4 现在已经有足够的特性和更新让我继续使用它,如果我不升级一个版本,我总是可以使用 Ruby 2.7。

谢谢!

0 投票
0 回答
54 浏览

ruby-on-rails - 由于 Bundler 错误,Heroku 拒绝使用 Ruby 3.0 进行部署

5 天后我没有收到 Heroku 支持的任何回复,所以看看 Stackoverflow 上的“非官方支持”是否更好

我在 9 月 24 日成功地使用 Ruby 2.7 将 Build 部署到 Heroku

特别是日志文件将捆绑列为

但是,当我现在尝试使用 Ruby 3.0.2 部署相同的应用程序时,我遇到了构建失败。

特别是该错误似乎与捆绑器有关

通过将成功日志与此失败日志进行比较,这些行在失败的部署中对我来说很突出:

然后随后

为什么 Heroku buildpack 会删除它随后抱怨不存在的捆绑程序版本?

我不知道如何解决这个问题,因为我相信 Heroku Ruby buildpack 被锁定到 Bundler 2.2.21。

如果有人对为什么会出现 Bundler 问题有任何想法,我很想知道。谢谢。

0 投票
1 回答
1377 浏览

ruby-on-rails - MacOs (M1 Arm64) 无法加载 Nokogiri - 使用系统默认的 Ruby

我可以在这里使用一些帮助。我正在设置新的 2020 Macbook Pro M1。

我已经完成了在 Mac 上安装 ruby​​/rails 的所有常规步骤,但是我无法完成rails new. 在点击安装的以下部分时,我收到此错误:

随后出现此错误:

我正在使用 Rbenv,它有正确的路径并且从医生脚本中得到了一个好的。

如果我在终端执行以下操作,我会得到: ruby​​ -v ruby 3.0.0p0 (2020-12-25 revision 95aff21468) [arm64-darwin20] rails -v Rails 6.1.4.1 which rails/usr/local/bin/rails

Mac 附带了一个默认的 ruby​​ 版本,它似乎试图在rails new. 我想不通。