2013-10-03 2 views
0

Я пишу LWRP, чтобы засеять базу данных redis с помощью ключей API, чтобы разрешить аутентификацию. Моя проблема заключается в использовании библиотеки redis для ruby. Я обыскал и нашел несколько примеров в Интернете, и ничто не сработало для меня.Установка, требование и использование библиотеки ruby ​​в chef lwrp

Я бегу это на AWS OpsWorks поэтому с помощью шеф-соло

Я попытался включая рецепт в моем списке выполнения, который устанавливает REDIS камень (https://github.com/brianbianco/redisio/blob/master/recipes/redis_gem.rb)

Я также попытался устанавливая их драгоценный камень в кулинарной книге.

r = gem_package "redis" do 
     action :install 
    end 

    r.run_action(:install) 

или

r = chef_gem "redis" do 
     action :install 
    end 

    r.run_action(:install) 

Это ошибка, что я подвожу на мой шеф перспективе

[2013-10-03T16:11:41+00:00] DEBUG: filtered backtrace of compile error: 
[2013-10-03T16:11:41+00:00] DEBUG: filtered backtrace of compile error: 
[2013-10-03T16:11:41+00:00] DEBUG: backtrace entry for compile error: '/opt/aws/opsworks/releases/20130926123105_208/site-cookbooks/ilnkmx/providers/add_app.rb:1:in `require'' 
[2013-10-03T16:11:41+00:00] DEBUG: Line number of compile error: '1' 
[2013-10-03T16:11:42+00:00] ERROR: Caught exception while compiling OpsWorks custom run list: LoadError - no such file to load -- redis - /opt/aws/opsworks/releases/20130926123105_208/site-cookbooks/ilnkmx/providers/add_app.rb:1:in `require' 

Я новичок в рубин, так все и вся помощь ценят, Спасибо.

ответ

0

Так что, кажется, мне не хватает маленькой кусочки, и у меня было несколько вещей в неправильном месте.

Сначала мне нужно было обновить драгоценные камни после установки драгоценного камня redis в моем рецепте, который выглядит так.

r = chef_gem "redis" do 
    action :nothing 
end 

r.run_action(:install) 
Gem.clear_paths 

Я также требую, чтобы библиотека в моем Провайдере была неправильной. Мне нужно было потребовать его в моем рецепте после Gem.clear_paths, затем в моем провайдере я бы открыл соединение и заготовку, чтобы добавить, удалить или обновить записи, которые выглядят так.

action :create do 
    if @current_resource.exists 
     Chef::Log.info "#{ @new_resource } already exist - nothing to do." 
    else 
     converge_by("Create #{ @new_resource }") do 
      create_app_key 
     end 
    end 
end 

def create_app_key 
    redis = ::Redis.new 
    redis.set "#{@new_resource.app_name}", "#{@new_resource.api_key}" 
end 
Смежные вопросы