在调用具有多个参数的方法时,我遇到了 Shikashi 问题:
class MyTest
def self.think message
end
def self.say person,message
end
end
include Shikashi
privileges = Privileges.new
privileges.allow_const_read "MyTest"
privileges.object(MyTest).allow_all
privileges.instances_of(MyTest).allow_all
Sandbox.new.run(privileges, "MyTest.think('you')")
Sandbox.new.run(privileges, "MyTest.say('you', 'hi there')")
这个有效
Sandbox.new.run(privileges, "MyTest.think('you')")
在这里,我收到一个 ArgumentError:参数数量错误(1 对 2)
Sandbox.new.run(privileges, "MyTest.say('you', 'hi there')")
当我在沙箱之外调用它时,一切都很好。
怎么了?我正在使用 ruby-1.9.3-p194
最佳答案
更新:
该错误已在 evalhook 0.5.2 版中修复;升级到那个,一切都应该很好。
原始答案:
在所有版本的 evalhook(shikashi 用来评估代码的)中都有一个大于 0.3.1 的错误,其中方法只用第一个参数调用。例如:
Sandbox.new.run(privileges, "MyTest.think('you', 'hi there')")
工作得很好,忽略第二个参数。
不幸的是,依赖项的设置方式,您需要降级到 shikashi 0.3.1 才能使用 evalhook 0.3.1,但至少对我而言,shikashi 0.3.1 已损坏且无法安装。我认为你的选择是:
关于ruby - Shikashi : ArgumentError: wrong number of arguments with sandboxed code,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16228037/