您的位置:首页 > 编程语言 > Ruby

$:.unshift File.dirname(__FILE__).sub('controller','lib') 解析

2012-03-13 16:23 190 查看
使用 require 加载文件时,使用:
 require ‘file’

 加载这个文件file前,需要有加载路径的上下文环境,如:

$:.unshift File.dirname(__FILE__).sub('controller','lib')

 加载路径,是默认ruby启动的时候会在这些路径里去寻找可以加载的类库。ruby加载路径放在一个变量$LOAD_PATH里,和$:指的都是同一个环境变量。

 

函数解释:

 1、$:($LOAD_PATH)是Ruby读取外部文件的一个环境变量,和windows的环境变量是一个概念。Ruby会在这个环境变量的路径中读取需要require的文件,如果在环境变量中找不到自己想要的文件,就会报LoadError错误。

 2、__FILE__是PHP的魔术常量之一,指文件的完整路径和文件名,即当前'controller'文件所在目录的相对位置。
3、dirname(),返回路径中的目录部分,得到的结果是该文件(目前访问的文件'controller')基于服务器的绝对路径。

 4、str.sub('controller','lib') ,在str副本上将找到的第一个匹配字符(串)用lib替换,并返回。

       还有一种用法是:str.sub(pattern) {|match| block } => new_str
       puts "abcde789".sub(/d/){|c| 'a'},找到的字符d用|c|表示,可以替换成a字符 

       gsub方法
       和sub的区别在于所有匹配的地方都会被替换,而不只是第一个。
5、$:.unshift($LOAD_PATH.unshift  )是把上面得出的绝对路径加到现在已经存在所有环境变量之前。

 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息