"не могу загрузить такой файл - chef / rest", когда "требуют 'chef / rest'" - PullRequest
0 голосов
/ 01 мая 2019

Попытка написать первую программу для доступа к серверу chef через API.В следующем примере программы на 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)

Chefверсия клиента: 14.12.9-1 Версия ОС: Ubuntu 16.04 LTS

Есть ли пропущенные шаги?

1 Ответ

0 голосов
/ 01 мая 2019

вы не поделились тем, используете ли вы библиотеки chef как часть своих кулинарных книг или как часть другой программы, которая зависела от библиотек chef.

, если вы находитесь во втором случае, то есть внеконтекст поваренной книги, затем убедитесь, что вы используете Gemfile для управления требованиями к библиотекам chef, а затем выполните свою программу с помощью компоновщика.

, как вы видите, Chef::Rest устарело

Класс Chef::REST будет удален.Chef::REST устарел в 12.7.2 и будет удален в Chef 13.

Если при написании кода, предназначенного для внутреннего запуска в Chef, например, в кулинарной книге или плагине ножа, переходите на использование Chef::ServerAPI.В большинстве случаев это так же просто, как создание Chef::ServerAPI экземпляра, а не Chef::REST.

Если вы пишете код для взаимодействия с Chef Server из другого кода, перейдите к гему chef-api.

поэтому я предполагаю, что вы используете старую версию шеф-повара, поэтому для решения проблемы я буду использовать версию 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
...