脚本之家,脚本语言编程技术及教程分享平台!
分类导航

Python|VBS|Ruby|Lua|Golang|

服务器之家 - 脚本之家 - Ruby - Ruby中区分运行来源的方法

Ruby中区分运行来源的方法

2020-04-22 10:14脚本之家 Ruby

这篇文章主要介绍了Ruby中区分运行来源的方法,本文讲解的是类似Python中的if __name__ == '__main__':效果,其实Ruby中也有类似语法,需要的朋友可以参考下

当我们在写模块的时候,或多或少需要直接运行这个文件也可以执行一些方法,但是这样对于当这个模块被require或者include时,显得不好,在ruby里,有没有区分运行来自当前文件,还是被require的目标文件调用呢?

Python可以

比如像Python这样

 

复制代码 代码如下:

if __name__ == '__main__':
    print "from direct running"

 

Ruby当然也可以

对于处处为程序员着想,拥有快乐编程理念的Ruby来说当然是可以区别的。其原理就是判断启动文件是否为模块的代码文件。

复制代码 代码如下:

if __FILE__ == $0
    puts 'called from direct running'
end

 

举个例子

工具类模块utils.rb

 

复制代码 代码如下:


module Utils
    class StringUtils
        def self.test
            puts "test method myfile=" + __FILE__ + ';load from ' +  $0
        end
    end
end

 

if __FILE__ == $0
    puts 'called from direct running'
    Utils::StringUtils.test()
end

 

直接运行,结果,if条件成立,执行了输出

 

复制代码 代码如下:

20:04:37-androidyue~/rubydir/test$ ruby utils.rb
called from direct running
test method myfile=utils.rb;load from utils.rb

 

引用Utils的类test.rb

 

复制代码 代码如下:

require './utils'
Utils::StringUtils.test()

 

运行结果,引入模块的条件不成立,没有输出called from direct running

 

复制代码 代码如下:

20:08:07-androidyue~/rubydir/test$ ruby test.rb
test method myfile=/home/androidyue/rubydir/test/utils.rb;load from test.rb

延伸 · 阅读

精彩推荐
  • RubyJava版的Ruby解释器 JRuby简介

    Java版的Ruby解释器 JRuby简介

    JRuby是面向Ruby、基于Java虚拟机(JVM)的一种解释程序,它结合了Ruby语言的简易性和功能强大的JVM的执行机制,包括与Java库 全面集成。 ...

    hebedich1882020-04-15
  • RubyRuby中的变量学习总结

    Ruby中的变量学习总结

    这篇文章主要介绍了Ruby中的变量学习总结,本文详细讲解了Ruby中的局部变量、实例变量、类变量、全局变量等4种变量类型,并对它们的作用范围做了总结,需...

    脚本之家4972020-04-19
  • RubyRuby简洁学习笔记(二):类继承、属性、类变量

    Ruby简洁学习笔记(二):类继承、属性、类变量

    这篇文章主要介绍了Ruby简洁学习笔记(二):类继承、属性、类变量,本文是个人学习总结第二篇,需要的朋友可以参考下 ...

    脚本之家4522020-04-20
  • RubyRuby 中关于日文转UTF-8及半角全角转换的技巧

    Ruby 中关于日文转UTF-8及半角全角转换的技巧

    Ruby 中关于日文转UTF-8及半角全角转换的技巧,实现代码。 ...

    脚本之家2002020-04-12
  • RubyRuby On Rails中如何避免N+1问题

    Ruby On Rails中如何避免N+1问题

    select语句的数目太多,需要频繁的访问数据库,会影响检索性能。如果需要查询n个Customer对象,那么必须执行n+1次select查询语句。这就是经典的n+1次select查...

    hebedich2512020-04-16
  • RubyRuby面向对象编程详解

    Ruby面向对象编程详解

    这篇文章主要介绍了Ruby面向对象编程详解,本文讲解了类的定义、定义对象、initialize方法、实例变量、类变量、类常量、类的继承等内容,需要的朋友可以参...

    脚本之家1952020-04-18
  • RubyRuby中Hash的11个问题解答

    Ruby中Hash的11个问题解答

    这篇文章主要介绍了Ruby中Hash的11个问题解答,本文讲解了如何创建Hash、Hash的键是哪些类型、 如何给Hash赋默认的值等内容,需要的朋友可以参考下 ...

    脚本之家3322020-04-20
  • RubyCentOS中配置Ruby on Rails环境

    CentOS中配置Ruby on Rails环境

    经过一个上午的折腾,终于把ROR环境在CentOS中搞定,绕了很多弯路,把文章写下来总结一下 ...

    可乐加糖4062020-04-12