require 负责引用一个外部文件,可以省略".rb"字样。

如:

require 'foo.bar'

等价于

require 'foo'

在Ruby中,同一目录下的文件, 如 /home/andy/ruby/foo.rb与 /home/andy/ruby/bar.rb两个文件.

如果直接在foo.rb中写

require 'bar'

执行时会报找不到bar.rb错误。这是因为ruby不会再当前目录进行查找。

此处列举几种引用单个文件的方法:

 require File.join(__FILE__, '../bar.rb')
require File.dirname(__FILE__) + '/bar.rb'
require File.expand_path('../bar.rb', __FILE__)

1. __FILE__是常量,表示当前文件的绝对路径,如/home/andy/ruby/foo.rb

2. File.dirname(__FILE__)表示当前文件相对路径,参见如下代码:

1 代码:puts 'File.dirname(__FILE__) is : ' + File.dirname(__FILE__)
2 输出:File.dirname(__FILE__) is : .

3. File.expand_path表示当前文件的绝对路径,参见如下代码:

 代码:
puts 'File.expand_path(__FILE__) : ' + File.expand_path(__FILE__)
puts 'File.expand_path("..",__FILE__) : ' + File.expand_path('..',__FILE__) 输出:
File.expand_path(__FILE__) : /home/andy/foo.rb
File.expand_path("..",__FILE__) : /home/andy

或者使用

 $LOAD_PATH.unshift(File.dirname(__FILE__))
require 'bar' $LOAD_PATH.unshift(File.expand_path('..', __FILE__))
require 'bar'

这种做法是先把目录加入$LOAD_PATH变量中,然后可以直接饮用文件名。

Ruby require 路径问题的更多相关文章

  1. NodeJS require路径

    项目需要用nodejs,感觉nodejs是前端装逼神器了,是通向全栈工程师的必经之路哇,接下来开始踏上学习nodejs的征程.下面是第一个hello,world的程序. 1.server.js文件,这 ...

  2. ruby关于require路径

    ruby里面的require说明 require './aaaa' 这种方式,包含的是系统路径 相对路径得用下面的 require_relative "./xxxx" 或者使用这个 ...

  3. ruby的require路径问题

    ruby1.9删除当前目录功能,require "Action.rb"不行. 用下面2种方式: require_relative "trig.rb" .rb可以 ...

  4. ruby require的使用

    引用单个文件 例: 引用当前rb同目录下的file_to_require.rb先介绍3种方法 require File.join(__FILE__, '../file_to_require') req ...

  5. ruby require

    require一般用来加载其它的类,如:  #Ruby代码  : require 'dbi'   require "rexml/document" 但是上面加载的是标准类库里面的文 ...

  6. CCLuaLoadChunksFromZIP加载后的require路径问题

    对于require来说,在LUA中的机制就是搜索path路径了.但对于CCLuaLoadChunksFromZIP加载的LUA文件来说,require的路径又是怎么样的呢? 我在服务器上有一个 oox ...

  7. dojo 一 require 路径问题

    dojo.baseUrl baseUrl用来存储dojo.js存放 的跟目录,例如dojo.js的路径是“/web/scripts/dojo-1.3/dojo/dojo.js”则baseUrl为“/w ...

  8. lua require路径设置实例

    1.首先要强调的是,lua require的路径用的是斜杠"/",而不是从Windows文件属性那里复制来的反斜杠"\". 2.通过 print(pagckag ...

  9. Ruby require, load include 区别

    Require, load用于文件, *.rb require一般用于加载库文件,load加在配置文件,ruquire可省略“.rb",它指挥在第一次时候载入,如在字require就被忽略 ...

随机推荐

  1. jQuery Mobile里xxx怎么用呀? (事件篇)

    jQuery Mobile里$(document).ready()怎么用呀? 相关链接: http://stackoverflow.com/questions/14468659/jquery-mobi ...

  2. 存储过程/游标/mysql 函数

    存储过程和函数(存储在 mysql数据库中的 proc表,所以检查有没有这个表)存储过程是一种存储程序(如正规语言里的子程序一样),mysql支持有两种:存储过程,在其他SQL语句中可以返回值的函数( ...

  3. start-stop-daemon 命令

    Usage: start-stop-daemon [<option> ...] <command> Commands: -S|–start — <argument> ...

  4. poj 2175 Evacuation Plan 最小费用流判定,消圈算法

    题目链接 题意:一个城市有n座行政楼和m座避难所,现发生核战,要求将避难所中的人员全部安置到避难所中,每个人转移的费用为两座楼之间的曼哈顿距离+1,题目给了一种方案,问是否为最优方案,即是否全部的人员 ...

  5. Ubuntu启动停止在checking battery state...

    Ubuntu在“checking battery state...”处停止了,出现这种现象的原因可能有很多种.笔者遇到的是其中的一种. 情景描述: 笔者此前将Ubuntu的图形启动方式修改为了字符界面 ...

  6. GCC交叉编译链命名

    命名格式: arch[-vendor][-os]-abi arch:CPU的架构 vendor:工具链的供应商 os: 目标上运行的操作系统,不同的操作系统对应着不同的C库,例如 newlib.gli ...

  7. 通知NSNotificationCenter

    注意:接受通知要写在 viewDidLoad 方法里面 取得系统全局的唯一广播站 NSNotificationCenter *notification = [NSNotificationCenter  ...

  8. 自定义一个"花瓣"菜单-b

    先来看一下效果 XLCircleMenu.gif 是不是觉得挺好玩的呀. 通过这篇文章你可以学到: 1.系统UITableView的部分设计思想 2.自定义控件常用设计思路 3.动画的具体使用 4.手 ...

  9. 简单的网页布局效果html5+CSS3

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  10. 如何使一个input文本框随其中内容而变化长度(转)

    第一: <input type="text" onkeydown="this.onkeyup();" onkeyup="this.size=(t ...