在ruby中复制文件夹及其内容

时间:2015-11-15 23:51:07

标签: ruby

我的项目结构如下:

Project_root
 |__Templates
 |  |__Report_Template
 |
 |__Product
    |__product.rb

我应该在product.rb中编写哪些代码才能将Report_Template文件夹及其内容复制到Product文件夹中? 我尝试使用FileUtils.cp_r,但后来我必须提供源文件夹的完整路径,如果以后我移动Project_root,则会出现问题。

1 个答案:

答案 0 :(得分:1)

正如肯尼所说,你可以在__dir__中找到程序开始的路径。在这里,我使用Pathname类来简化路径操作,但它完全是可选的(您也可以使用File#join等):

require 'pathname'
templates_pathname = Pathname.new(__dir__) + "../Templates/Report_Template"
# optional:
templates_path = templates_pathname.realpath.to_s
如果你需要,

Pathname#realpath会给你绝对的路径;但FileUtils#cp_r会很乐意接受Pathname(即templates_pathname以上),并且不介意它不是绝对的。