如何在没有明确提及的情况下默认需要文件

时间:2012-11-09 11:13:55

标签: ruby

我在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中的所有文件都可以使用它?

2 个答案:

答案 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