[英]What does this Ruby code mean?
我正在嘗試對gitlab進行備份還原,並且這種方式還行得通,但是命令行始終表示存儲庫還原失敗。 我認為我在代碼中找到了負責[failed]語句的條件語句。 有人知道這是做什么的,還是知道我應該去尋找錯誤的方向?
if Kernel.system("git clone --bare #{path_to_bundle} #{project.repository.path_to_repo} > /dev/null 2>&1")
puts "[DONE]".green
else
puts "[FAILED]".red
end
Kernel.system
調用給定的shell命令。 如果失敗,則返回一個false
值。
在您的情況下,這意味着git clone --bare #{path_to_bundle} #{project.repository.path_to_repo} > /dev/null 2>&1
失敗。
您可以在不使用> /dev/null 2>&1
情況下手動在命令行上執行此命令時檢查它為什么失敗。
要獲取命令,您可以在命令前進行調試打印
if Kernel.system(pp("git clone --bare #{path_to_bundle} #{project.repository.path_to_repo} > /dev/null 2>&1"))
從文檔 :
系統將返回
true
如果命令給出零個退出狀態,false
為非零退出狀態。 如果命令執行失敗,則返回nil
。$?
有錯誤狀態$?
。
就是說:不斷進入失敗狀態意味着系統命令返回false
或nil
。 您可能要檢查$?
由於這個原因:
command = Kernel.system("git clone --bare #{path_to_bundle} #{project.repository.path_to_repo} > /dev/null 2>&1")
if command
puts "[DONE]".green
else
puts "[FAILED]".red
puts "Reason:"
puts $?
end
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.