【发布时间】:2011-07-06 13:46:22
【问题描述】:
下面是做什么的,为什么会出现在页面顶部?
$:.unshift File.dirname(__FILE__)
【问题讨论】:
-
+1 表示对遇到 Ruby 最丑陋的部分之一表示同情。相关问题:stackoverflow.com/questions/1395688/unshift-file-join-in-ruby
标签: ruby-on-rails ruby
下面是做什么的,为什么会出现在页面顶部?
$:.unshift File.dirname(__FILE__)
【问题讨论】:
标签: ruby-on-rails ruby
它将当前工作目录路径添加到项目中使用的所有require中,在顶部添加后我们不需要关心我们需要的文件路径,但是我们需要的所有文件都必须在我们的主程序需要其他文件的同一目录。
$: 是加载路径的保留关键字。
【讨论】:
从技术上讲,它是将文件的路径添加为 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"]
【讨论】:
它将当前文件的目录添加到加载路径。 $: 表示加载路径(它是一个数组),unshift 位于数组的开头。
它在那里(并且在顶部)的原因是所有需要的人都不必担心路径。
【讨论】:
require 来访问一个 ruby 文件,对吧?