$:.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 )是把上面得出的绝对路径加到现在已经存在所有环境变量之前。
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 )是把上面得出的绝对路径加到现在已经存在所有环境变量之前。
相关文章推荐
- 解析错误报告 'libxml/tree.h' file not found
- 2011-11-24 13:51 [错误]File "/usr/lib/python2.7/subprocess.py"
- Controller中servletFileUpload.parseRequest(request)解析为空
- $:.unshift(File.expand_path(File.join(File.dirname(__FILE__),’..’,’file’)))
- dirname(__FILE__).DIRECTORY_SEPARATOR解析
- 解析php dirname()与__FILE__常量的应用
- 解析php dirname()与__FILE__常量的应用
- libxml/HTMLparser.h file not found
- can not open `/var/lib/mlocate/mlocate.db’: No such file or directory
- alsa-lib如何解析asound.conf
- 卸载驱动出现:rmmod: can't change directory to '/lib/modules': No such file or directory
- Starting MySQL... ERROR! The server quit without updating PID file (/var/lib/mysql/obcit-test.pid).
- Java解析APK信息,使用ApkFile
- libxml/HTMLparser.h file not found
- c++开发python扩展模块:cannot open file ‘python25_d.lib’解决办法
- VC6.0 USB接口开发#include hidsdi.h,编译通过后,连接出错:LINK : fatal error LNK1104: cannot open file "hidsdi.lib"
- java 输入输出流和File简单解析(附android中文乱码问题解决)
- error while loading shared libraries: libXXX.so.x: cannot open shared object file: No such file or
- GCC 源码编译 mpc mprf gmp 不用make(否则会有lib/libgmp.so: could not read symbols: File in wrong format等错误)
- PHP:dirname(__FILE__)的意思