问题标签 [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.
ruby - ruby 中最小的未占用椅子解决方案的数量
我正在学习 ruby 并开始从 leetcode 练习问题,昨天我有一个问题,从昨天开始我就无法解决。
我在 ruby 中努力做到这一点,但还不能做到。
我试过这个
但对于某些测试用例它失败了。
我无法为它创建算法。
问题 = https://leetcode.com/problems/the-number-of-the-smallest-unoccupied-chair
我的做法:
首先,我根据到达时间对时间数组进行排序。
然后我遍历每个数组元素
现在,如果到达时间大于之前的所有离开时间(我正在创建密钥、离开时间的值对和给定的椅子),那么我在 leave_time_chair(这是哈希)中添加一个新的 key=> 值对,其中 key 是当前数组的离开时间和值是给它的椅子。
然后我增加椅子(椅子+=1)
否则我得到所有那些等于或小于当前到达时间的离开时间(
all_keys = leave_time_chair.keys.select { |k| k <= i[0] }
)然后我得到了那个时代的所有椅子
现在我有所有这样的椅子 => [0, 0, 1, 2] 所以我写了一个函数 [ give_chair(a) ] 它给了我那些不重复的元素。像这样 => [1, 2] 然后我将最短的数字(椅子)分配给当前数组的离开时间。等等...
然后,如果我当前的数组等于朋友,我就返回它的椅子。通过从哈希 (leave_time_chair) 中提取它返回 leave_time_chair[i[1]]
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
ruby - 从 TCPSocket 读取整个消息而不挂起
我在 Ruby 3.0.2 中组装了一个 TCPServer,我发现我似乎无法在不阻塞的情况下读取整个数据包(直到套接字关闭)。
编辑:我试图做的事情有些混乱 - 我的错 - 所以只是为了帮助澄清:我想阅读到目前为止通过 TCP 连接发送的所有内容。(结束编辑)
我的第一次尝试是:
但这会挂起,直到客户端关闭连接。好的,所以我看一下connection.methods
, 和 ruby 文档,并尝试了一堆看起来很有希望的选项。基本上,有两种类型的读取方法:阻塞和非阻塞。
我尝试的阻塞方法是.read
, .gets
, .readlines
, .readline
, .recv
, 和.recvmsg
. 现在.read
, .readlines
, 和.gets
所有挂起(直到套接字关闭) - 所以这没有帮助。其他的(例如.readline
,recv
方法)不会阅读整个消息。现在,我可以读取每一行,直到看到一个空行并从那里解析 HTTP 标头。但是必须有更好的方法;我不想担心收到损坏的消息并挂起,因为我没有在标题末尾读取空行。
所以我去看了非阻塞选项。具体.recv_nonblock
和.recvmsg_nonblock
。这两个抛出错误(资源暂时不可用 - recvfrom(2) 将阻塞和资源暂时不可用 - recvmsg(2)分别)。
关于可能发生的事情的任何想法?我认为使用 Ruby 3 与我有关,因为在 Ruby 2.5 上尝试代码client.gets
会返回一行(不会挂起),尽管.readlines
会挂起 - 所以不确定发生了什么。
理想情况下,我可以调用类似的东西client.get_message
,我会得到已发送的整个消息,但我也可以在 TCP 级别工作并获取数据包大小,读取该大小并重建消息从那里。
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 尝试序列化文件上传对象造成的吗?
有没有办法解决这个错误?
错误:
样本测试文件:
ruby - 如何配置 Steep 以查找标准库之外的 gem 的 RBS 文件?
红宝石文件
.rbs 文件
跑
结果
我用steep
宝石。似乎需要一些文件。但
不起作用。
我错了什么?谢谢。
ruby - 无法在 Ruby 3.0.2 上安装 rmagick
我正在尝试将我们的 Ruby 版本从 2.7.4 更新到 3.0.2。如果我bundle
在本地机器上,我会收到此错误:
如果使用 Docker,我会设法使用 构建映像ruby:3.0.2-alpine3.12
,但是如果我尝试将项目加载到容器中,则会出现此错误:
我不知道出了什么问题以及如何继续,所以任何帮助将不胜感激!
ruby - 从循环哈希中删除最后一个字符
你能帮我用这段代码解决这个问题吗?
我得到的结果
但我想要的只是删除最后一个逗号
感谢你们对我的帮助
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。
谢谢!
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 问题有任何想法,我很想知道。谢谢。
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
. 我想不通。