Запуск Ruby-скрипта по cron или из Teamcity
Очень часто встает задача запускать мелкие скрипты на ruby/php из консоли по расписанию. Мы также пишем небольшие утилитки и привязываем их к нашему любимому средству развертывания TeamCity.
Но руби скрипт не отображается в процессах, при том, что из консоли он запускается нормально. Оказывается дело было в кодировке. Используемый нами гем inifile, который парсит ini-файлы вываливался с ошибкой.
1 2 3 4 5 |
[18:22:31]: [exec] /home/user/ruby/functions.rb:43:in `=~': invalid byte sequence in US-ASCII (ArgumentError) [18:22:31]: [exec] from /home/webadmin/sandbox/site.ru/misc/ruby/functions.rb:43:in `parse' [18:22:31]: [exec] from /usr/local/rvm/gems/ruby-1.9.2-p180/gems/inifile-0.4.1/lib/inifile.rb:61:in `initialize' [18:22:31]: [exec] from /usr/local/rvm/gems/ruby-1.9.2-p180/gems/inifile-0.4.1/lib/inifile.rb:30:in `new' [18:22:31]: [exec] from /usr/local/rvm/gems/ruby-1.9.2-p180/gems/inifile-0.4.1/lib/inifile.rb:30:in `load' |
Гугление по тексту ошибки привело сюда. Оказывается надо было всего-лишь добавить одну строчку в /etc/environment:
1 |
LANG="en_US.UTF-8" |
После этого всё заработало без ошибок.