2009-01-28 112 views
14

我剛剛在Python中對Python感到滿意很多年後學習了Ruby的基礎知識(我仍在使用Python進行一些操作),但是我想知道是否有一個成語或黑客來解決這個特定的問題。從命令行運行Ruby庫

我有一個Ruby腳本,我希望能夠執行require script_name,但我也希望能夠從終端運行ruby script_name.rb並讓它作爲命令行腳本運行。在Python中,這可以通過在腳本底部具有以下結構來完成:

if __name__ == '__main__': 
    # do something here 

但是,我似乎無法在Ruby中找到等價物。有沒有辦法檢測當前腳本是否從命令行運行?也許一些Kernel::方法什麼的?理想情況下,我想在腳本底部是這樣的:

if from_command_line? 
    # do something here 
end 
+0

您應該回顧以後的問題,因爲它們還包含複製python類測試習慣用法的代碼。 – QueueHammer 2009-08-27 16:17:52

回答

7

你可以在ruby中找到類似的功能。

__FILE__當前源文件名。

$ 0包含正在執行的腳本的名稱。可以分配。

來源:Ruby Quick Ref

22

你想使用:

if __FILE__ == $0 
    # do stuff 
end 

__FILE__是源文件名和$0是當前正在執行的腳本的名稱。

5

雖然

if __FILE__ == $0 
    Foo.run 
end 

是常見的做法,我目前使用

if File.identical?(__FILE__, $0) 
    Foo.run 
end 

因爲像紅寶石教授can make $0 not equal__FILE__程序即使您使用--replace-progname