ruby – Shikashi:ArgumentError:带有沙盒代码的参数数量错误
发布时间:2020-12-17 02:38:31 所属栏目:百科 来源:网络整理
导读:当调用带有多个参数的方法时,我遇到了Shikashi的问题: class MyTest def self.think message end def self.say person,message endendinclude Shikashiprivileges = Privileges.new privileges.allow_const_read "MyTest"privileges.object(MyTest).allow_a
当调用带有多个参数的方法时,我遇到了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,'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已被破坏且无法安装.我认为你的选择是: >不要使用shikashi,>不要在沙箱中使用带有多个参数的方法,>追踪并修复evalhook中的错误,>让开发人员修复bug,或者>看看你是否可以说服较新版本的shikashi与evalhook 0.3.1一起使用. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |