【问题标题】:How to run a ruby script by using chef with rbenv?如何通过使用带有 rbenv 的厨师来运行 ruby​​ 脚本?
【发布时间】:2014-04-13 09:02:51
【问题描述】:

我想像这样通过主厨的execute 资源运行一个 ruby​​ 脚本。

execute "my_prog deamon" do
  command  %Q{bash -c 'export PATH="/usr/local/rbenv/bin:$PATH"; eval "$(rbenv init -)"; cd /opt/my_prog; ruby /opt/my_prog/my_prog_deamon.rb start'}
end

我收到这样的错误消息。

---- Begin output of bash -c 'export PATH="/usr/local/rbenv/bin:$PATH"; eval "$(rbenv init -)"; cd /opt/my_prog; ruby /opt/my_prog/my_prog_deamon.rb start' ----
STDOUT:
STDERR: /opt/chef/embedded/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require': cannot load such file -- daemons (LoadError)
    from /opt/chef/embedded/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
    from /opt/my_prog/my_prog_deamon.rb:2:in `<main>'
---- End output of bash -c 'export PATH="/usr/local/rbenv/bin:$PATH"; eval "$(rbenv init -)"; cd /opt/my_prog; ruby /opt/my_prog/my_prog_deamon.rb start' ----

看起来错误是因为调用了来自chef 的ruby 而不是来自rbenv 的ruby。

我在配方中将ruby 重写为/usr/local/rbenv/shims/ruby,但我得到了同样的错误。

如何使用 chef 运行 ruby​​ 脚本? rbenv 安装在系统范围内。

【问题讨论】:

    标签: ruby chef-infra rbenv


    【解决方案1】:

    错误似乎源自您的自定义脚本,错误表明无法加载需求(在本例中为 daemons gem)。

    您使用的ruby版本没有安装正确的依赖项,或者$GEM_PATH不正确,因此找不到所需的依赖项。

    如果您仅从 Chef 食谱运行此脚本,我建议您查看 Chef 默认提供的 resource_script 提供程序,在您的情况下,特别是 resource_ruby 提供程序: p>

    ruby 'my_prog_deamon' do
      ...
    end
    

    如果这不是一个选项,我会通过 Chef ruby​​ 运行脚本,并使用 chef_gem 安装所需的依赖项:

    chef_gem('daemons') do
      version 'x.y.z'
    end
    

    然后,当使用 Chef gem 调用脚本时,您可以确定依赖项已安装。

    【讨论】:

      【解决方案2】:

      我在配方中将 ruby​​ 重写为 /usr/local/rbenv/shims/ruby,但我遇到了同样的错误。

      由于 shim 本身指向 Chef 的 Ruby,很可能 rbenv 配置不正确。如果 rbenv 找不到版本配置,它只会将您定向到它找到的第一个 ruby​​。

      使用以下方法之一检查您是否指定了所需的版本:

      https://github.com/sstephenson/rbenv#choosing-the-ruby-version

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-01-16
        • 1970-01-01
        • 2020-09-04
        • 2019-03-23
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多