Ruby中區(qū)分運(yùn)行來源的方法
當(dāng)我們在寫模塊的時候,或多或少需要直接運(yùn)行這個文件也可以執(zhí)行一些方法,但是這樣對于當(dāng)這個模塊被require或者include時,顯得不好,在ruby里,有沒有區(qū)分運(yùn)行來自當(dāng)前文件,還是被require的目標(biāo)文件調(diào)用呢?
Python可以
比如像Python這樣
if __name__ == '__main__':
print "from direct running"
Ruby當(dāng)然也可以
對于處處為程序員著想,擁有快樂編程理念的Ruby來說當(dāng)然是可以區(qū)別的。其原理就是判斷啟動文件是否為模塊的代碼文件。
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
直接運(yùn)行,結(jié)果,if條件成立,執(zhí)行了輸出
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()
運(yùn)行結(jié)果,引入模塊的條件不成立,沒有輸出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
相關(guān)文章
簡單介紹Ruby on Rails對PostgreSQL數(shù)組類型的支持
這篇文章主要介紹了簡單介紹Ruby on Rails對PostgreSQL數(shù)組類型的支持,Rails框架從4.0以后對PG的數(shù)組提供了支持,需要的朋友可以參考下2015-04-04Ubuntu上配置Ruby on Rails框架及RubyMine IDE開發(fā)環(huán)境
Ruby on Rails是Ruby世界中當(dāng)仁不讓的Web框架代表,甚至可以說Rails推動了Ruby的流行,這里我們就來看一下如何在Ubuntu上配置Ruby on Rails框架及RubyMine IDE開發(fā)環(huán)境2016-07-07Ruby中Hash哈希結(jié)構(gòu)的基本操作方法小結(jié)
Hash是一種鍵值對應(yīng)的數(shù)據(jù)結(jié)構(gòu),Ruby中直接帶有Hash類來對其提供支持,這里我們整理了Ruby中Hash哈希結(jié)構(gòu)的基本操作方法小結(jié),首先來回顧一下Hash的基本知識:2016-06-06Ruby中訪問SQL Server數(shù)據(jù)庫的配置實(shí)例
這篇文章主要介紹了Ruby中訪問SQL Server數(shù)據(jù)庫的配置實(shí)例,本文通過FreeTDS實(shí)現(xiàn),同時介紹了在ActiveRecord上使用Tiny_TDS的技巧,需要的朋友可以參考下2014-11-11Windows下Ruby+Watir自動化測試的環(huán)境搭建及數(shù)據(jù)讀取
這篇文章主要介紹了Windows下Ruby+Watir自動化測試的環(huán)境搭建及數(shù)據(jù)讀取,Watir是一個使用Ruby實(shí)現(xiàn)的開源Web自動化測試框架,需要的朋友可以參考下2016-03-03Ruby解析處理YAML和json格式數(shù)據(jù)
這篇文章主要介紹了Ruby對YAML和json格式的數(shù)據(jù)處理方法,json序列化、json反序列化,json解析等操作,需要的朋友可以參考下2022-04-04