ruby环境变量的文件读取形式

http://blog.csdn.net/normallife/article/details/5644941

加载文件时需要:

require ‘file’

但是加载这个文件前需要有个上下文环境,如:

$:.unshift(File.expand_path(File.join(File.dirname(__FILE__),’..’,’file’)))

require 如果返回true,说明成功读取了新的功能

加载路径,就是默认ruby启动的时候会在这些路径里去寻找可以加载的类库。ruby加载路径放在一个变量$LOAD_PATH($:)里。

函数解释:

File.dirname(__FILE__) 得到当前文件的路径

File.join(‘x’,’y’,’z’) 相当于x/y/z

File.expand_path('./x/y/z) 组成一个绝对路径

$:.unshift("file")加入到$:变量中

支持通配符各正则表达式:

Dir.glob(Dir.glob(File.join(File.dirname(__FILE__), '../*.rb')).each {|f| require f }

http://gypsyer.blog.51cto.com/734537/162545

Q:$LOAD_PATH.unshift  File.expand_path(File.join(File.dirname(__FILE__),’..’,’..’,'page’,'client_arithmetic’))是什么意思啊?

A:

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

2、__FILE__指的是当前rb文件所在目录的相对位置。

3、File.join是把自己的参数组成一个目录形式的方法,如上面就组成“xxx/../../page/client_arithmetic”(xxx代码rb文件的相对位置)

4、File.expand_path就是把其参数从相对路径转化为绝对路径的方法。

5、$LOAD_PATH.unshift  就是把上面得出的绝对路径加到现在已经存在所有环境变量之前。

相关推荐