如何在“〜”内部创建文件的路径

问题描述 投票:0回答:1

我在Capistrano上遇到问题,其中File.readlinesFile.foreach声称文件不存在,但确实存在。当发生错误时,我可以正确复制返回的错误并正确复制catnano文件。

if File.readlines("#{fetch(:application)}/.git/config").grep(/#{fetch(:old_repo_url)}/).size > 0

这输出类似:

Errno::ENOENT: No such file or directory @ rb_sysopen - ~/Develop/homestead/code/projectname/.git/config

我可以复制该位置和位置,并且它[[确实存在。因为没有文件扩展名,它无法读取吗?

如果我无法grep git config文件,也许还有其他方法可以检查git config当前是否包含旧的repo URL变量?

如果可以保存以下内容的输出:

execute "cd #{fetch(:homestead_path)}/#{fetch(:application)}; git remote get-url origin"

对于一个变量,甚至要检查,那都很好。
ruby capistrano
1个回答
0
投票
在外壳程序正在处理的路径中,~扩展为您的$HOME的完整路径。

Ruby不知道那是什么,并假定~是文字目录名,尝试打开该文件,但由于~不存在而失败。

并且,当您再次从shell复制并测试它时,它会扩展~,并且您确信Ruby是错误的。

修复简单:

File.expand_path('~/.vimrc') #=> "/Users/ttm/.vimrc"

File类具有像expand_path这样的几种方法,用于扩展和转换路径。我建议您研究文档,因为它们非常强大且非常有用。
© www.soinside.com 2019 - 2024. All rights reserved.