小编mik*_*ike的帖子

我可以让ruby打印动态方法的源代码吗?

我已经调查了获取方法的源代码,如果它作为文件存在,但没有这个文件引用,是否可以动态打印方法的源代码?我似乎可以使用self.methods和每个方法访问类中的方法签名.arity.我相信ri_for gem指的是原始的源文件.

构建这个问题的更好方法是:如果一个类在运行时被扩展,它的源是否可以安全地被调查?或者是调查的能力仅限于方法签名和实例变量的名称,也许是类变量?

编辑:我使用的解决方案:http://seattlerb.rubyforge.org/svn/ruby2ruby/1.2.1/lib/ruby2ruby.rb

class Ruby2Ruby < SexpProcessor  
  def self.translate(klass_or_str, method = nil)  
    sexp = ParseTree.translate(klass_or_str, method)  
    unifier = Unifier.new  
    unifier.processors.each do |p|  
      p.unsupported.delete :cfunc  
    end  
    sexp = unifier.process(sexp)  
    self.new.process(sexp)  
  end   
end  

class Module  
  def to_ruby  
    Ruby2Ruby.translate(self)  
  end  
end  
Run Code Online (Sandbox Code Playgroud)

将其粘贴到某个地方,您可以从运行时定义的类中获取源代码.

ruby methods dynamic

6
推荐指数
2
解决办法
2605
查看次数

在centos7中,如何为localhost添加区域,然后永久添加接受端口?

新的firewall-cmd命令似乎使公共接口自动成为"公共"区域的成员.localhost接口实际上不是公共区域概念的成员,并且lo不是此默认区域的成员似乎是合适的.

我想确保在localhost上可以使用memcached.我们有一些客户热心地将他们的默认策略设置为DROP,如果我的服务在防火墙中注册了一个端口,他们就可以了.但我必须在安装过程中注册它.

必须有某种方法可以将localhost添加为其自己区域的接口,或者更可能的是,我不了解这个基于区域的新防火墙系统的关键概念.谢谢.

firewall localhost

0
推荐指数
1
解决办法
7852
查看次数

标签 统计

dynamic ×1

firewall ×1

localhost ×1

methods ×1

ruby ×1