簡體   English   中英

這個Ruby代碼是什么意思?

[英]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 $?有錯誤狀態$?

就是說:不斷進入失敗狀態意味着系統命令返回falsenil 您可能要檢查$? 由於這個原因:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM