当前位置: 首页 > 编程笔记 >

Ruby中区分运行来源的方法

缑修齐
2023-03-14
本文向大家介绍Ruby中区分运行来源的方法,包括了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

 类似资料:
  • 问题内容: 如何为现有数据集创建一个新列,该数据集是一个现有列的运行总数-由某些标识符分区? 我曾经在SQL(Oracle)中使用简单的SUM()OVER()语句来完成此操作,但是显然PROC SQL不支持该语法。 如果可能的话,我想在PROC SQL中完成此工作(我对SQL的经验比对SAS编码的经验要多得多)。 谢谢! 麦克风。 问题答案: 乔-您的答案出于任何原因都没有用,但是却使我处于正确的

  • 本文向大家介绍Ruby实现命令行中查看函数源码的方法,包括了Ruby实现命令行中查看函数源码的方法的使用技巧和注意事项,需要的朋友参考一下 如果要查看 ActiveRecord 的 update_attribute 函数的源代码,一个比较常见的方法是直接在 Rails 源码中搜索 def update_attribute。博客 The Pragmatic Studio 介绍了一个更方便的技巧,在

  • 在各方有志之士的努力下,Ruby已经被移植到多种平台。下面,就从OS或开发环境等方面对Ruby的运行环境做一个简要介绍。 关于安装和编译问题,请参考Ruby 安装指南。 Unix Windows(Win32) Win32 native版 mswin32 MinGW (mingw, mingw32) bccwin32 Cygwin (cygwin) Mac Mac OS X BeOS MS-DOS

  • 网站访客的来源渠道众多,网站分析系统,根据自身处理逻辑,对网站访客来源进行分割、匹配,访客来源主要可分为广告活动,搜索引擎,社交媒体,其他来源,直接访问等; 4.2.1 互斥来源分类 4.2.1.1 什么是互斥来源分类? 互斥来源分类,即根据不同渠道权重不同的原则,将同时具有2个来源渠道的流量,归结到单一优先渠道来源。 4.2.1.2 互斥来源分类场景示例 当我们分析网站访客的来源时,会发现存在一

  • 本文向大家介绍Ruby的安装与运行,包括了Ruby的安装与运行的使用技巧和注意事项,需要的朋友参考一下 Ruby的安装 注意点 OSX或linux较好 不同版本的实现:c++、C、java 本次C Ruby 安装方法 linux或OSX都有预装 包管理器(apt、yum、brew),并非最新 版本控制系统:rvm(rvm.io)、rbenv rvm 查看ruby版本 安装 帮助 rbenv OSX

  • 我是Ruby的新手,正在尝试我在Ruby中的前几个程序来理解这些概念。现在,在类方法概念中,在尝试基础知识时,我遇到了以下问题。 我有一个类方法“Servers.valid_requestor”。 这应该检查提供的用户名是否有效,它基于我正在使用的预定义用户名,如果是,它应该在main中执行某些代码。 现在这里的问题是,每当我尝试使用myI获取用户名nput.user_name它返回my_inpu