加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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一起使用.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读