2014-09-26 177 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