ruby - 迁移到鲁比尼乌斯

标签 ruby rubinius

我正在尝试将我的项目从 mri 迁移到 rubinius 以获得并发优势。

我启动了服务器并打开第一页,然后出现错误:

Puma caught this error: undefined method `=~' for Pathname (NameError)
kernel/common/module.rb:212:in `instance_method'
kernel/common/module.rb:354:in `undef_method'
kernel/bootstrap/array.rb:66:in `each'
kernel/common/module.rb:352:in `undef_method'
...

我的 gem 文件

source 'https://rubygems.org'

ruby '2.1.0', :engine => "rbx", engine_version: '2.2.1'

gem "rubysl" # Ruby Standard Library meta-gem for rubinius

# Server requirements

gem 'puma'

...

这里可能存在什么问题?

更新:full stack trace

最佳答案

我检查了你的堆栈跟踪并查看了 Rubinius 源代码。有问题的行是:

 class Pathname
   undef =~ # THIS IS IT
 end

#=~Object 上的实例方法,因此通常 undef =~ 应该适用于任何类...除非它已经在对象路径名undef

我想知道发生这种情况是否是因为您的 Gemfile 中有 rubysl gem。我不认识Rubinius,但从我看来,它似乎不需要你特别包括这个 gem 。或者也许在过去的版本中是这样,但现在不是。如果标准库被加载两次,那就可以解释为什么 undef =~ 第二次失败。

如果这没有帮助,我建议您尝试暂时删除尽可能多的 gem ,看看问题是否消失。如果是这样,请将它们一一添加回去,直到找到导致问题的原因。

关于ruby - 迁移到鲁比尼乌斯,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20248350/

相关文章:

ruby - Rubinius + Puma 不会同时处理请求

ruby - 如何在 Ruby 中重新定义 Fixnum 的 + (plus) 方法并保留原始 + 功能?

ruby - rbx 测试失败,返回 "Requested binary installation but no rubies are available to download"

ruby-on-rails - 未设置正则表达式全局变量

Ruby 从 block 中返回的对象获取数组

ruby - MRI Ruby 和 jRuby 的性能差异

ruby - RUBY_ENGINE 的哪些值对应于哪些 Ruby 实现?

ruby - 替换非单词字符,除非给定的序列匹配

ruby - 在 Ruby Regex 中使用超过 9 个未命名的捕获

ruby - 设置数据映射器 :order parameters from querystring params