我正在通过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“(看那儿)。
看看本期。上面写着:
在不需要LANG的模块上设置LANG到C
自动设置"$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模块,但是没有什么帮助,所有的尝试都失败了。
我真的不知道如何解决这个问题。
需要帮助!
发布于 2015-09-23 11:44:09
我不仅应该更改LANG变量,而且应该同时更改LANG和LC_ALL
- name: Precompiling assets
environment:
LANG: "ru_RU.UTF-8"
LC_ALL: "ru_RU.UTF-8"
command: bash -lc "cd {{ build_path }} && bundle exec rake assetpack:build"对我起作用了!
发布于 2015-09-20 07:26:41
command模块不适合与多个shell命令一起使用。应该使用shell模块来代替:
- name: Precompiling assets
shell: bundle exec rake assetpack:build chdir={{ build_path }}运行bundle之前需要的任何环境变量都可以按照下面的示例进行配置:
- name: Precompiling assets
shell: RAILS_ENV=development bundle exec rake assetpack:build chdir={{ build_path }}module.html
https://stackoverflow.com/questions/32654384
复制相似问题