为什么我的Rubypath上不是当前目录?
有什么理由为什么我目前的工作目录不在我的Rubypath?
考虑:
~:499$ irb ruby-1.9.2-p136 :002 > puts $: /Users/mrberryman/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/site_ruby/1.9.1 /Users/mrberryman/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/site_ruby/1.9.1/x86_64-darwin10.6.0 /Users/mrberryman/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/site_ruby /Users/mrberryman/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/vendor_ruby/1.9.1 /Users/mrberryman/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/vendor_ruby/1.9.1/x86_64-darwin10.6.0 /Users/mrberryman/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/vendor_ruby /Users/mrberryman/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/1.9.1 /Users/mrberryman/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/1.9.1/x86_64-darwin10.6.0 => nil 这真的很困扰我,因为需求不像我想的那样工作(尽pipe我是一个rubynuby):
 require 'some_file_that_I_know_darn_well_is_in_pwd.rb' 
 如果我追加'.' 到最后,那么需求就像我所期望的那样工作。 
我错过了什么?
更新:
精氨酸! 现在我遇到了一个新问题。 考虑:
 ruby-1.9.2-p136 :010 > `ls` => "start.rb\n" ruby-1.9.2-p136 :011 > require_relative 'start' LoadError: cannot infer basepath from (irb):11:in `require_relative' from (irb):11 from /Users/mrberryman/.rvm/rubies/ruby-1.9.2-p136/bin/irb:16:in `<main>' 
现在怎么了?
 在Ruby 1.9.2中,引入了一个明确的更改,以便工作目录不再位于Rubypath中。 我认为这是启示录和一个可怕的事情,直到我了解了require_relative 。 我的应用程序往往看起来像这样: 
 require 'some_gem' require 'another_gem' require_relative 'lib/init' 
 然后lib/init.rb可以有: 
 require_relative 'lib1' # this is lib/lib1.rb require_relative 'lib2' # this is lib/lib2.rb 
这是蜜蜂的膝盖,并解决了我以前需要从不同的工作目录相同的文件的各种问题。
  编辑 :不幸的是(原因我不知道,也没有看过) require_relative不具体在irb工作。 为此,您可以: 
-  做你最初描述的: $: << '.'或$:.unshift '.', 要么
- 
你可以使用 load 'myfile.rb'或者require './myfile'来代替:irb(main):001:0> Dir['*.rb'] => ["a.rb", "bar.rb", "foo.rb", "prime.rb", "tmp.rb"] irb(main):002:0> require 'a' LoadError: no such file to load -- a from <internal:lib/rubygems/custom_require>:29:in `require' from <internal:lib/rubygems/custom_require>:29:in `require' from (irb):2 from /usr/local/bin/irb:12:in `<main>' irb(main):003:0> require_relative 'a' LoadError: cannot infer basepath from (irb):3:in `require_relative' from (irb):3 from /usr/local/bin/irb:12:in `<main>' irb(main):004:0> load 'a.rb' a => true irb(main):005:0> require './a' a => true
你可以使用require_relative,假设它做你需要的。
确保环境variables“RUBYLIB”设置为所有目录path,您将在其中find自定义* .rb代码。 它也使我疯狂。