我正在通过 ansible 部署我的 sinatra 项目,其中一项任务是预编译资产。
起初我对如何正确初始化 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"
同时,shell 模块似乎一无所知bundle
,所以这也不起作用:
- name: Precompiling assets
command: bash -lc "cd {{ build_path }} && bundle exec rake assetpack:build"
我尝试了一大堆命令,例如export LANG=ru_RU.UTF-8
,command
模块,shell
模块,但没有任何帮助,我所有的尝试都失败了。
我真的不知道如何解决这个问题。
需要帮忙!