在ruby 中,以下代码可以获得当前脚本的绝对路径:

require 'pathname' puts Pathname.new(__FILE__).realpath

将以上代码保存在test1.rb中,然后放在D盘的根目录下。测试的时候我们进入C盘,执行ruby d:/test1.rb,控制台会输出当前脚本的绝对路径:d:/test1.rb。

有人可能会问,Dir.pwd不是也可以获取吗?其实是不行的。Dir.pwd获取的是工作目录,我理解的工作目录就是RUBY的调用目录,也就是说你获取的是在哪个目录下调用的脚本,而不是脚本在哪个目录。我们可以做以下实验,首先创建一个test2.rb文件,录入代码如下:

puts  Dir.pwd

保 存后,我们把这个文件也放到D盘根目录下,然后在CMD命令行下我们进入C盘,(注意,是C盘哦!),然后执行:ruby test2.rb,你认为它会输出什么呢,是D:/ 吗?错,是c:/ !让我们来看的更清楚些,在CMD命令行下进入c:/windows/system目录,执行ruby d:/test2.rb,你会看到输出的结果是c:/windows/system。这下清楚了吧,你在哪个目录下调用的脚本,Dir.pwd返回的就是 哪个目录,但是这个脚本所在的真实路径是没有关系的。官方的API上写的是返回工作目录,我们很容易把它理解成绝对路径的。

其他的操作方法有:

获得当前执行文件的文件名:

__FILE__

获得当前文件的目录

File.dirname(__FILE__)

获得当前执行文件的完整路径

require ‘pathname’
Pathname.new(__FILE__).realpath

获得当前执行文件的目录完整路径

require ‘pathname’
Pathname.new(File.dirname(__FILE__)).realpath

ruby的DIR.pwd的更多相关文章

  1. 雷林鹏分享:Ruby Dir 类和方法

    Ruby Dir 类和方法 Dir 是一个表示用于给出操作系统中目录中的文件名的目录流.Dir 类也拥有与目录相关的操作,比如通配符文件名匹配.改变工作目录等. 类方法 序号方法 & 描述 1 ...

  2. ruby Dir类

    类方法 1. Dir[pat]    Dir::glob( pat) 返回一个数组,包含与指定的通配符模式 pat 匹配的文件名: * - 匹配包含 null 字符串的任意字符串 ** - 递归地匹配 ...

  3. 基于Ruby的watir-webdriver自动化测试方案与实施(三)

    接着基于Ruby的watir-webdriver自动化测试方案与实施(二) http://www.cnblogs.com/Javame/p/4159468.html 继续 ... ...   编写脚本 ...

  4. 基于Ruby的Watir-WebDriver自动化测试框架

    基于Ruby的watir-webdriver自动化测试方案与实施(五)   基于Ruby的watir-webdriver自动化测试方案与实施(四)   基于Ruby的watir-webdriver自动 ...

  5. Ruby 文件处理

    #r read, #w write, #a append, #r+ 读写方式 从文件的头位置开始读取或写入, #w+ 读写方式,如果文件已存在清空该文件,不存在就创建一个新的文件, #a+ 如果文件存 ...

  6. ruby脚本打印日志到rspec的报告文件中

    在通过ruby+webdriver+rspec做自动化测试的时候,为了便于观察用例执行情况,我基本上都会用 rspec XX.rb --format doc -o result.log 如果遇到失败的 ...

  7. ruby调用Office Jet引擎压缩access数据库

    由于单位业务需要,搭建一台服务器专门用来做数据存储.因为数据流很小,遂采用access库作为DB.开始还好,但是后来发现access数据库有一问题,就是表空间会随着使用越来越大,哪怕表里没有数据.因为 ...

  8. Ruby语法基础(三)

    Ruby语法基础(三) ​ 在前面快速入之后,这次加深对基本概念的理解. 字符串 ​ Ruby字符串可以分为单引号字符串和双引号字符串,单引号字符串效率更高,但双引号的支持转义和运行 puts '单引 ...

  9. ruby导出exl方式

    class Demo print "hello world" require "spreadsheet" #设置表格的编码为utf-8 Spreadsheet. ...

随机推荐

  1. 设置IIS的gzip

    如果服务器iis 中没有配置动态压缩的话,在性能中选项中配置. 设置成功之后:

  2. json-server-----》基本使用

    [WangQi]---json-server---基本使用   一.前后端并行开发的痛点 前端需要等待后端开发完接口以后 再根据接口来完成前端的业务逻辑 二.解决方法 在本地模拟后端接口用来测试前端效 ...

  3. 最好用的 Kafka Json Logger Java客户端,赶紧尝试一下

    最好用的 Kafka Json Logger Java客户端. slf4j4json 最好用的 Kafka Json Logger 库:不尝试一下可惜了! Description 一款为 Kafka ...

  4. nodejs回调大坑

    最近看到nodejs,因为有一个处理里面有好几个异步操作,调入回调大坑,不禁觉得很恶心,真的很讨厌发明这种写法的人,简直反社会!!!遂转载一篇解坑的文章,原文地址:http://www.infoq.c ...

  5. JavaScript基础4——省市联动

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  6. Mac更改PHP默认目录的方法

    参考:http://www.cnblogs.com/muyunlee/p/6386095.html

  7. ffmpeg的中文文档

    1. 概要 ffmpeg [global_options] {[input_file_options] -i INPUT_FILE} ... {[output_file_options] OUTPUT ...

  8. mysql 导出表中数据为excel的xls格式文件

    需求: 利用mysql客户端导出数据库中数据,以便进行分析,统计. 解决命令: 在windos命令行(linux同理)下,用如下命令即可: mysql -hlocalhost -uroot -ppas ...

  9. MySQL concat函数里面单引号的使用

    通过concat拼字符串的时候,如果语句里面需要使用单引号,可以使用两个单引号来代替一个引号

  10. Java 多态概念、使用

    1.概念 2.多态的格式与使用 package Java12; /* 代码当中体现多态性,其实就是一句话: 父类引用指向子类对象 格式: 父类名称 对象名 = new 子类名称(): 或者: 接口名称 ...