“需要'厨师/休息'时,“无法加载此类文件-厨师/休息”

时间:2019-05-01 01:54:17

标签: ruby rest chef

尝试编写第一个程序以通过API访问Chef服务器。在https://docs.chef.io/api_chef_server.html#examples上的示例程序之后,应该有两行代码包含chef::rest库。

require 'chef'
require 'chef/rest'

但代码因错误而失败

Traceback (most recent call last):
        2: from ./rest.rb:4:in `<main>'
        1: from /opt/chef/embedded/lib/ruby/site_ruby/2.5.0/rubygems/core_ext/kernel_require.rb:54:in `require'
/opt/chef/embedded/lib/ruby/site_ruby/2.5.0/rubygems/core_ext/kernel_require.rb:54:in `require': cannot load such file -- chef/rest (LoadError)

厨师客户端版本:14.12.9-1 操作系统版本:Ubuntu 16.04 LTS

是否缺少任何步骤?

1 个答案:

答案 0 :(得分:0)

您没有分享是将厨师库用作食谱的一部分,还是作为依赖厨师库的另一个程序的一部分。

如果您是第二种情况,即在菜谱上下文之外,请确保您使用Gemfile来管理厨师库需求,然后使用捆绑程序执行程序。

如您所见,Chef::Rest is deprecated

  

Chef::REST类将被删除。 Chef::REST在12.7.2中已弃用,并将在Chef 13中删除。

     

如果编写旨在在Chef内部运行的代码(例如在食谱或小刀插件中),请过渡到使用Chef::ServerAPI。在大多数情况下,这就像创建一个Chef::ServerAPI实例而不是一个Chef::REST实例一样简单。

     

如果要编写代码以与其他代码与Chef服务器进行交互,请移至chef-api gem。

因此,我假设您使用的是旧版厨师长,因此,为了补救,我将使用12.6版厨师长:

$ cat Gemfile
# frozen_string_literal: true

source "https://rubygems.org"

gem 'chef', '12.6.0'

$ cat foo.rb
require 'chef'
require 'chef/rest'

$ bundle install
...
Bundle complete! 1 Gemfile dependency, 46 gems now installed.

$ bundle exec ruby foo.rb