【问题标题】:Pip within an erb templateerb 模板中的点子
【发布时间】:2014-11-22 05:51:40
【问题描述】:

我有一个厨师模板列表,这些模板如下所示:

scripts.each do |script|
    template "#{dir}/{script}.py" do 
         variables({ "keys" => keys })
    end
end

每个模板都会输出一个 python 脚本。其中一个脚本有 pip 要求。由于我们运行的脚本在服务器之间发生变化,我不能简单地在所有服务器上安装它。我试过这样做:

<%
python_pip "python-dateutil" do 
    virtualenv "/path/to/env"
    version "2.2"
end
%>
from dateutil import parser

但是,这种事情在厨师模板中是不可能的,厨师抱怨python_pip 不是真正的方法。最好、最优雅、最优雅的方法是什么?

【问题讨论】:

    标签: python ruby chef-infra erb


    【解决方案1】:

    使脚本像这样的哈希:

    {
      'script1.py' => [],
      'script2.py' => %w{dep1 dep2},
    }.each do |script, deps|
      deps.each do |dep|
        python_pip dep do
          #stuff
        end
      end
      template "#{dir}/{script}.py" do 
        variables({ "keys" => keys })
      end
    end
    

    这会将配方中的所有逻辑保留在它所属的位置。

    【讨论】:

      猜你喜欢
      • 2018-08-05
      • 2012-06-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-07
      • 2014-03-11
      相关资源
      最近更新 更多