четвер, 17 травня 2012 р.

Оновлюємо статус ВКонтакте за допомогою Ruby

Сьогодні вечором виникло бажання, щоб на моїй сторінці ВКонтакте відображався таймер зворотнього відліку до початку Євро-2012 прямо в статусі. Написати простенький скрипт на Ruby для такого достатньо просто.
З інструментів я використовував свою бібліотеку для роботи з API ВКонтакте. Якщо комусь цікаво, як вона працює, можете почитати статтю ВКонтакте → Авторизація Standalone-додатків використовуючи OAuth 2.0 на прикладі Ruby і Mechanize.

Не вдаючись в подробиці, ось посилання на приклад скрипта.

Здавалось би залишилось додати скрипт у cron і насолоджуватись результатом.
Наступний рядок у /etc/crontab не приніс бажаних результатів.
*/1 * * * * user ruby /home/user/days_to_euro.rb
Скрипт всього-на-всього не виконувався.
Причиною проблеми виявився Ruby Version Manager(RVM). Змінюємо на наступний рядок.
*/1 * * * * user bash -c 'source /home/user/.rvm/scripts/rvm && /usr/bin/env ruby /home/user/days_to_euro.rb'

І вуаля: тепер скрипт успішно виконується і так же успішно завершує роботу з помилкою:
`default_gemfile': Could not locate Gemfile (Bundler::GemfileNotFound)
Це відбувається тому, Bundler шукає Gemfile в каталозі в якому виконується, а Gemfile там звісно ж немає.
Потрібно вказати де шукати Gemfile.
ENV['BUNDLE_GEMFILE'] = File.join(File.dirname(__FILE__) ,'Gemfile')
Вищевказаний рядок потрібно додати у шапку скрипта.

Тепер все добре і скрипт працює.

P.S. До Євро-2012 залишилось 21 день 23 години 43 хвилини

Немає коментарів: