gpt4 book ai didi

ruby-on-rails - 针/定义上下文.rb :36: warning: undefining `initialize' may cause serious problems

转载 作者:行者123 更新时间:2023-12-04 06:08:17 25 4
gpt4 key购买 nike

我在 rails 3.1 中安装了一个新的 gem needle。

它安装正确,但是当我使用命令 rails server --debugger 启动我的 rails

我收到以下警告:

.rvm/gems/ruby-1.9.2-p290/gems/needle-1.3.0/lib/needle/definition-context.rb:36: warning: undefining `initialize' may cause serious problems
.rvm/gems/ruby-1.9.2-p290/gems/needle-1.3.0/lib/needle/definition-context.rb:36: warning: undefining 'object_id' may cause serious problems
.rvm/gems/ruby-1.9.2-p290/gems/needle-1.3.0/lib/needle/definition-context.rb:36: warning: undefining '__send__' may cause serious problems

我怎样才能摆脱它?

最佳答案

问题出在针状 gem 本身。它这样做:

public_instance_methods -
[ "instance_eval", "object_id", "__id__", "__send__", "initialize",
"remove_const", "method_missing", "method", "class", "inspect", "to_s",
"instance_variables", "block_given?" ]

但在 Ruby 1.9 中,public_instance_methods 方法返回 Symbol 类型的对象,而不是 String。所以实际上发生的是这样的:

[:__send__, <and other methods>] - ["__send__", <and other methods>]
=> [:__send__, <and other methods>]

何时不应删除提供的 Array 中的那些方法。

这向我表明该库尚未针对 Ruby 1.9 进行更新(或至少未经过测试)。我建议找到这个库的代码所在的位置,将其 fork ,然后应用一个补丁,使用 map(&:to_sym) 之类的东西将数组转换为符号来解决这个问题。

但请注意:在其他情况下,1.8 和 1.9 之间可能存在这些差异。

关于ruby-on-rails - 针/定义上下文.rb :36: warning: undefining `initialize' may cause serious problems,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8890891/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com