2

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

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

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'
...

我的宝石文件

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'

...

这里可能有什么问题?

更新:完整的堆栈跟踪

4

1 回答 1

2

我检查了您的堆栈跟踪并查看了 Rubinius 源代码。违规行是:

 class Pathname
   undef =~ # THIS IS IT
 end

#=~是一个实例方法,Object所以通常undef =~应该在任何类上工作......除非它已经被undef“打开”Object或“打开” Pathname

我想知道这是否正在发生,因为您rubysl的 Gemfile 中有 gem。我不认识 Rubinius,但据我所知,它似乎不需要你专门包含这个 gem。或者也许它在过去的版本中确实如此,但现在没有。如果标准库被加载两次,那就可以解释为什么undef =~第二次失败了。

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

于 2013-11-27T17:05:10.867 回答