我的项目结构如下:
Project_root
|__Templates
| |__Report_Template
|
|__Product
|__product.rb
我应该在product.rb
中编写哪些代码才能将Report_Template
文件夹及其内容复制到Product
文件夹中?
我尝试使用FileUtils.cp_r
,但后来我必须提供源文件夹的完整路径,如果以后我移动Project_root
,则会出现问题。
答案 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
以上),并且不介意它不是绝对的。