以下是怎麼做的,爲什麼它在頁面的頂部?
$:.unshift File.dirname(__FILE__)
https://github.com/mojombo/jekyll/blob/master/lib/jekyll.rb
以下是怎麼做的,爲什麼它在頁面的頂部?
$:.unshift File.dirname(__FILE__)
https://github.com/mojombo/jekyll/blob/master/lib/jekyll.rb
它添加當前文件的目錄負載路徑。 $:
表示加載路徑(它是一個數組),並且unshift
預先存儲到數組的開頭。
它在那裏(和頂部)的原因是,所有這些需要不必擔心路徑。
從技術上講,它將文件的路徑添加爲ruby用來查找文件的加載路徑的第一個條目。 $:是一個魔術變量,更清楚地被$ LOAD_PATH引用。
ruby-1.9.2-p136 > $LOAD_PATH
=> ["/Users/wesbailey/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/site_ruby/1.9.1", "/Users/wesbailey/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/site_ruby/1.9.1/x86_64-darwin10.6.0", "/Users/wesbailey/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/site_ruby", "/Users/wesbailey/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/vendor_ruby/1.9.1", "/Users/wesbailey/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/vendor_ruby/1.9.1/x86_64-darwin10.6.0", "/Users/wesbailey/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/vendor_ruby", "/Users/wesbailey/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/1.9.1", "/Users/wesbailey/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/1.9.1/x86_64-darwin10.6.0"]
ruby-1.9.2-p136 > $:
=> ["/Users/wesbailey/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/site_ruby/1.9.1", "/Users/wesbailey/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/site_ruby/1.9.1/x86_64-darwin10.6.0", "/Users/wesbailey/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/site_ruby", "/Users/wesbailey/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/vendor_ruby/1.9.1", "/Users/wesbailey/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/vendor_ruby/1.9.1/x86_64-darwin10.6.0", "/Users/wesbailey/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/vendor_ruby", "/Users/wesbailey/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/1.9.1", "/Users/wesbailey/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/1.9.1/x86_64-darwin10.6.0"]
ruby-1.9.2-p136 > $:.unshift '.'
=> [".", "/Users/wesbailey/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/site_ruby/1.9.1", "/Users/wesbailey/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/site_ruby/1.9.1/x86_64-darwin10.6.0", "/Users/wesbailey/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/site_ruby", "/Users/wesbailey/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/vendor_ruby/1.9.1", "/Users/wesbailey/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/vendor_ruby/1.9.1/x86_64-darwin10.6.0", "/Users/wesbailey/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/vendor_ruby", "/Users/wesbailey/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/1.9.1", "/Users/wesbailey/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/1.9.1/x86_64-darwin10.6.0"]
它當前的工作目錄路徑添加到所有需要在項目中使用,添加該頂部後,我們不必操心,我們需要的文件路徑,但所有我們的文件要求必須在我們的主程序需要其他文件的同一目錄中。
$:是保留關鍵字來加載路徑。
+1同情遇到Ruby最醜陋的部分之一。相關問題:http://stackoverflow.com/questions/1395688/unshift-file-join-in-ruby – 2011-03-01 22:21:39