[Rails] 執行Whenever任務時的”invalid byte sequence in US-ASCII (ArgumentError)”錯誤

錯誤1:
部署上AWS後Whenever沒有正確執行,於是連線上server app 根目錄執行 $ whenever 出現 “invalid byte sequence in US-ASCII (ArgumentError)"的錯誤。

解決方式:
修改AWS端/etc/environment內的區域設置

LANG=en_US.utf-8
LC_ALL=en_US.utf-8

執行

$ export LC_ALL=en_US.UTF-8
$ export LANG=en_US.UTF-8

Update crontab

$ bundle exec whenever --update-crontab
$ crontab -l

就可正確列出 schedule.rb中的任務。

錯誤2:
解決以上錯誤後crontab還是未正確執行,查詢log/cron.log後顯示bundle: command not found

解決方式:
在schedule.rb file的頂部加上

env :PATH, ENV['PATH']
env :GEM_PATH, ENV['GEM_PATH']
# 如果出現Could not find rake" 錯誤需加上此行

完成後可正確執行。

參考資料:
-
stackoverflow
- Hatena blog