1

String我在要在其他 ruby​​ 文件中使用的类中定义了一个自定义实例方法。我可以通过require-ing 文件(我在其中定义了我的自定义方法)来做到这一点,但我想自然地使用它(不必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 中的所有文件?

4

2 回答 2

4

如果您不这样做,require 'custom_string'但发现它会自动包含在内,那么当您在另一个位置、不同的服务器上运行程序、在 github 上共享代码等时会发生什么。代码将不再按预期执行。您在寻求帮助时发布的结果将不再与其他人匹配。在无法追踪的庄园中改变 Ruby 行为听起来是个坏主意。

如果您只想irb拥有这种行为,那么您可以将 require 添加到您的~/.irbrc.

将其添加到命令行的@Hauleth 解决方案允许跟踪行为的变化。默认情况下,可以将别名添加到.bashrc其他 shell rc 以提供此行为。

于 2012-11-09T11:25:59.523 回答
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
于 2012-11-09T11:25:21.383 回答