2012-11-09 76 views
1

我在String類中定義了一個自定義實例方法,我想在其他ruby文件中使用它。我可以通過require這個文件(我定義了我的自定義方法)來完成,但我想自然使用它(不需要require)。默認情況下需要文件而不明確提及

例如:我在「custom_string.rb」文件中定義的:

class String 
    def set_style(style) 
    puts "\n#{self}" 
    self.size.times do 
    print style 
    end 
    end 
end 

然後,用我set_style方法在我的「test.rb」文件,我必須這樣做:

require 'custom_string' 
puts "hello".set_style("*") 

我沒有使用Rails項目。有沒有一種方法可以將我的文件默認包含到ruby中(從ruby命令行),以便它可用於Ruby中的所有文件?

回答

1

Ruby 1.9的幫助:

$ ruby --help 
Usage: ruby [switches] [--] [programfile] [arguments] 
    -0[octal]  specify record separator (\0, if no argument) 
    -a    autosplit mode with -n or -p (splits $_ into $F) 
    -c    check syntax only 
    -Cdirectory  cd to directory, before executing your script 
    -d    set debugging flags (set $DEBUG to true) 
    -e 'command' one line of script. Several -e's allowed. Omit [programfile] 
    -Eex[:in]  specify the default external and internal character encodings 
    -Fpattern  split() pattern for autosplit (-a) 
    -i[extension] edit ARGV files in place (make backup if extension supplied) 
    -Idirectory  specify $LOAD_PATH directory (may be used more than once) 
    -l    enable line ending processing 
    -n    assume 'while gets(); ... end' loop around your script 
    -p    assume loop like -n but print line also like sed 
    -rlibrary  require the library, before executing your script 
    -s    enable some switch parsing for switches after script name 
    -S    look for the script using PATH environment variable 
    -T[level=1]  turn on tainting checks 
    -v    print version number, then turn on verbose mode 
    -w    turn warnings on for your script 
    -W[level=2]  set warning level; 0=silence, 1=medium, 2=verbose 
    -x[directory] strip off text before #!ruby line and perhaps cd to directory 
    --copyright  print the copyright 
    --version  print the version 

採取一看:

-rlibrary  require the library, before executing your script 
+0

我不認爲這是OP想要的。如果OP不介意每次輸入'-rlibrary ...',那麼OP就不會問這樣的問題。 – sawa

+0

這個答案本身並不是問題的完整答案,但如果你建議定義一個終端命令來調用它,那麼這可能是一個完整的答案。 – sawa

+0

非常感謝您的回答以及您的所有意見和討論。 盡我所能,我認爲這是實現我想要的最安全的方式。它可以在命令行中正常工作(我不介意每次輸入一個標誌),甚至在IDE中(例如RubyMine),我可以選擇通過將標誌添加到'Ruby Arguments'中來配置控制檯,領域。所以從整體角度來看,我非常喜歡這個答案,並且非常感謝Hauleth。 – Mahab

4

如果你不這樣做require 'custom_string'卻發現離開這個被自動包含,當你運行你的程序發生了什麼另一個位置,不同的服務器,在github上共享代碼等。代碼將不再按預期執行。您尋求幫助時發佈的結果將不再與其他人相匹配。這聽起來像是一個壞主意,在一個難以追蹤的莊園中改變Ruby的行爲。

如果你只是想irb有這種行爲,那麼你可以將需求添加到您的~/.irbrc

@Hauleth添加命令行的解決方案允許跟蹤行爲的變化。一個別名可以被添加到.bashrc或其他shell rc默認情況下給這種行爲。

+0

我認爲對於OP是否被追蹤至關重要。 OP似乎只想保存輸入。 – sawa

+1

這會不會導致以後難以找到問題? – Morgan

+0

@Munkymorgy偉大的一點!非常感謝您的建議和答覆。非常感謝。 – Mahab