我在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
然后,要在我的'test.rb'文件中使用我的set_style
方法,我必须这样做:
require 'custom_string'
puts "hello".set_style("*")
我没有使用Rails项目。有没有办法将我的文件默认包含在ruby中(来自ruby命令行),以便Ruby中的所有文件都可以使用它?
答案 0 :(得分:4)
如果你没有require 'custom_string'
但是发现它被自动包含在内,当你在另一个位置运行程序,不同的服务器,在github上共享代码时会发生什么。代码将不再执行预期。您在寻求帮助时发布的结果将不再与其他人匹配。在一个无法追踪的庄园中改变Ruby行为听起来是个坏主意。
如果您只是希望irb
出现此行为,则可以将要求添加到~/.irbrc
。
@Hauleth添加命令行的解决方案允许跟踪行为的变化。可以将别名添加到.bashrc
或其他shell rc以默认提供此行为。
答案 1 :(得分: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