1

いくつかの点で、それはシェフの問題を始めることです。しかし、github から自分の jekyll コードをチェックアウトし、jekyll を実行してローカルでビルドするための簡単なレシピを作成しようとしています。nginx 構成を実行することについて心配し始めたわけではありませんが、「before_migrate」スクリプトの約 100 の異なる順列を試しましたが、利用可能な gem またはへのパスに jekyll をロードする方法をまだ見つけていません。する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 ドキュメントの 1 つに 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

私は宝石をインストールし、このように以前にそれらを必要としました

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

gem 'nokogiri'
require 'nokogiri'

うまくいけばうまくいきます(jekyllで試してみてください)

于 2012-12-12T14:45:33.697 に答える