2014-09-26 150 views
0

我正嘗試用Azure測試廚師。我已經安裝了刀天藍色的寶石,並運行knife configureAzure設置廚師

之後,我已經下載了我發佈的設置文件,並添加它knife.rb這樣的:

knife[:azure_publish_settings_file] = "C:\chef\.chef\Visual Studio Ultimate com MSDN-Windows Azure MSDN - Visual Studio Ultimate-9-25-2014-credentials.publishsettings" 

然後我跑:

knife azure image list 

,我得到這個錯誤:

ERROR: Unable to find file - Cef.chefVisual Studio Ultimate com MSDN-Windows Azure MSDN - Visual Studio Ultimate-9-25-2014-credentials.publishsettings 

我被這個錯誤困住了。有誰知道爲什麼會發生這種情況?

回答

1

在紅寶石中(如在許多語言中),\用於保留下一個字符。

你的日誌非常清晰,它搜索沒有文件分隔符的文件。

3解決方案:

  • 逃生使用兩次\\反斜線和你的線變得knife[:azure_publish_settings_file] = "C:\\chef\\.chef\\Visual Studio Ultimate com MSDN-Windows Azure MSDN - Visual Studio Ultimate-9-25-2014-credentials.publishsettings"

  • 使用UNIX分離/,而不是和你的線變得knife[:azure_publish_settings_file] = "C:/chef/.chef/Visual Studio Ultimate com MSDN-Windows Azure MSDN - Visual Studio Ultimate-9-25-2014-credentials.publishsettings"

  • 使用單引號引起字符串以避免插值,反斜槓將失去其特殊含義。

我喜歡第二個。

由於在處理靜態字符串及其在ruby中的首選樣式時,mtm註釋單引號是有用的。

+0

感謝您的關注和幫助。 PS:我不是一個紅寶石程序員,這就是爲什麼我陷入這個愚蠢的錯誤:P – 2014-09-26 13:52:37

+0

只是一個說明,如果你使用單引號'''字符串,你會得到一個文字'''而不是一個轉義序列 – Matt 2014-09-26 16:42:56

+0

@mtm感謝記住我這個。當字符串是靜態的時候,我使用單引號,但忘記提及它。 – Tensibai 2014-09-29 13:49:58