1

在某些方面,这是厨师问题的开始。但是,我正在尝试创建一个简单的方法来从 github 签出我的 jekyll 代码,然后运行 ​​jekyll 在本地构建它。我还没有开始担心让 nginx 配置运行,但我已经尝试了大约 100 种不同的“before_migrate”脚本排列,还没有找到一种方法将 jekyll 加载到可用的 gem 中或加载到路径中做一个command "jekyll ..."

这是目前的配方:

include_recipe "git"

application "corpsite" do
  path "/opt/tubularlabs/corpsite"
  repository "git@github.com:Tubular/corpsite.git"
  revision "master"

  deploy_key <<EOF
-----BEGIN RSA PRIVATE KEY-----
...
-----END RSA PRIVATE KEY-----
EOF

  before_migrate do
    execute 'Deploy Jekyll blog' do
      chef_gem "jekyll" do
        action :install
      end

      require "jekyll"

      command "jekyll"
      action :run
    end
  end
end

更新:

事实证明,这个问题根本不是配方问题,而是其中一个 HTML 文档包含一个 UTF-8 字符,并且 jekyll 正在运行,LC_ALL=C因此令人讨厌。这当然是我尝试写的第一个食谱,这并没有帮助。

出于历史原因,这是最终脚本

before_migrate do
  chef_gem "jekyll"

  execute 'Deploy Jekyll blog' do
    cwd  release_path
    environment ({"LC_ALL" => "en_US.UTF-8"})
    command "jekyll"
  end
end
4

1 回答 1

2

我已经安装了 gems 并且像这样之前需要它们

gem_package "nokogiri" do
  action :nothing
end.run_action(:install)

gem 'nokogiri'
require 'nokogiri'

希望这对你有用(用 jekyll 尝试过并且有效)

于 2012-12-12T14:45:33.697 回答