在IRB红宝石上加载文件

时间:2011-06-20 08:25:49

标签: irb

我正在尝试将文件加载到IRB中。我将文件保存在桌面上标题为“Ruby.rb”的文件中 如何将文件加载到IRB?

我尝试过使用两者,'加载'Ruby.rb“','加载'Ruby”'和'require“Ruby.rb”。这些文件在我的桌面上,是否需要路径目录?

文档的路径是C:\ Users \ Jamal \ desktop,我打算将它包含在加载“Ruby.rb”命令中吗? 感谢

1 个答案:

答案 0 :(得分:9)

这取决于您使用的Ruby版本(1.8.x或1.9.x)。 loadrequire在Ruby的加载路径上都有效。您可以通过评估IRB中的$:来查看它。在Ruby 1.9.x中,当前目录不是加载路径的一部分,因此您必须使用文件的绝对路径。根据您使用的操作系统(Windows 7),这可能如下所示:

c:\Users\mliebelt\Desktop>irb
irb(main):001:0> $:
=> ["C:/apps/ruby/ruby192/lib/ruby/site_ruby/1.9.1", "C:/apps/ruby/ruby192/lib/ruby/site_ruby/1.9.1/i386-msvcrt", "C:/apps/ruby/ruby192/lib/ruby/site_ruby", "C:/apps/ruby/ruby192/lib/ruby/vendor_ruby/1.9.1", "C:/apps/ruby/ruby192/lib/ruby/vendor_ruby/1.9.1/i386-msvcrt", "C:/apps/ruby/ruby192/lib/ruby/vendor_ruby", "C:/apps/ruby/ruby192/lib/ruby/1.9.1", "C:/apps/ruby/ruby192/lib/ruby/1.9.1/i386-mingw32"]
irb(main):002:0> require 'c:/Users/mliebelt/Desktop/ruby'
File c:/Users/mliebelt/Desktop/ruby.rb loaded.
=> true
irb(main):003:0> load 'c:/Users/mliebelt/Desktop/ruby.rb'
File c:/Users/mliebelt/Desktop/ruby.rb loaded.
=> true

顺便说一下,文件ruby.rb的内容是:

puts "File #{__FILE__} loaded."

与Ruby 1.8.x上的IRB相同的会话可能看起来像这样:

c:\Users\mliebelt\Desktop>irb
irb(main):001:0> $:
=> ["C:/Users/mliebelt/.pik/rubies/Ruby-187-p334/lib/ruby/site_ruby/1.8", "C:/Users/mliebelt/.pik/rubies/Ruby-187-p334/lib/ruby/site_ruby/1.8/i386-msvcrt", "C:/Users/mliebelt/.pik/rubies/Ruby-187-p334/lib/ruby/site_ruby", "C:/Users/mliebelt/.pik/rubies/Ruby-187-p334/lib/ruby/vendor_ruby/1.8", "C:/Users/mliebelt/.pik/rubies/Ruby-187-p334/lib/ruby/vendor_ruby/1.8/i386-msvcrt", "C:/Users/mliebelt/.pik/rubies/Ruby-187-p334/lib/ruby/vendor_ruby", "C:/Users/mliebelt/.pik/rubies/Ruby-187-p334/lib/ruby/1.8", "C:/Users/mliebelt/.pik/rubies/Ruby-187-p334/lib/ruby/1.8/i386-mingw32", "."]
irb(main):002:0> require 'ruby'
File ./ruby.rb loaded.
=> true
irb(main):003:0> load 'ruby.rb'
File ./ruby.rb loaded.
=> true

requireload之间的差异是:

  • require不需要文件的后缀(.rb)
    • require 'ruby'require 'ruby.rb'相同
  • require将文件读入内存一次,因此通常应使用require而不是load,每次调用文件中的函数时,都会将文件读入内存。

因此要加载文件(使用requireload),请执行以下操作:   - 按当前目录扩展加载路径(如有必要)。见Adding a directory to loadpath   - (使用Ruby 1.8.x时)在要加载或需要文件的目录中启动程序(或IRB)。