ansible を介して sinatra プロジェクトをデプロイしていますが、タスクの 1 つはアセットをプリコンパイルすることです。
最初は、rbenv を適切に初期化する方法について疑問に思いました。
次に、私がしたことは次のとおりです。
- name: Precompiling assets
command: bash -lc "cd {{ build_path }} && bundle exec rake assetpack:build"
しかし、その後エラーが発生しましたEncoding::UndefinedConversionError at assets/application.js
ssh でサーバーに接続して実行すると、bundle exec rake assetpack:build
すべてが完全に機能しました。したがって、これは環境変数の設定に関連していると思います
lookup('env', 'LANG')
と言っていますが"msg": "ru_RU.UTF-8"
、 echo $LANG は「C」だと言っています(そこを見てください)。
この問題を見てください。それは言います:
Ansible は、必要のないモジュールで LANG を C に設定します。
Ansible モジュールは「$LANG=C」を自動的に設定します。
環境変数を追加しても、望ましい結果が得られませんでした:
environment:
LANG: ru_RU.UTF-8
command: bash -lc "cd {{ build_path }} && bundle exec rake assetpack:build"
同時に、シェルモジュールは について何も知らないように見えるbundle
ため、これもうまくいきませんでした:
- name: Precompiling assets
command: bash -lc "cd {{ build_path }} && bundle exec rake assetpack:build"
export LANG=ru_RU.UTF-8
、command
モジュール、モジュールなどの膨大な数のコマンドを試しましshell
たが、何も役に立たず、すべての試みが惨めに失敗しました。
この問題を回避する方法がよくわかりません。
助けが必要!