【问题标题】:How to create a file's path inside "~" [duplicate]如何在“~”中创建文件路径 [重复]
【发布时间】:2020-05-29 23:25:17
【问题描述】:

我遇到了 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】:

    这不是 Capistrano 问题。

    在由 shell 处理的路径中,~ 被扩展为您的$HOME 的完整路径。

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

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

    修复很容易:

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

    我当前的工作目录将用于相关文件:

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

    File 类有几个方法,如expand_path,用于扩展和转换路径。我建议研究文档,因为它们非常强大且非常有用。

    【讨论】:

      猜你喜欢
      • 2015-12-31
      • 2013-03-26
      • 2017-06-03
      • 1970-01-01
      • 1970-01-01
      • 2019-09-25
      • 2015-11-14
      • 2021-12-23
      • 2017-08-06
      相关资源
      最近更新 更多