Ruby → Уточки кря-кря
Репост , но наверняка кому-нибудь пригодится и здесь.
Возникают ситуации, когда нужно залить куда-нибудь файлы (например, статичный HTML на хостинг), где есть только доступ по убогому FTP. В более удачных случаях есть или , поэтому можно применять готовые инструменты развёртывания, но такой возможности не было.
Поскольку желание делать всё руками отсутствовало, но работать всё-же хотелось, вчера за вечер накидал на Ruby простенькое и работающее решение для развёртывания статики через FTP: милые utochki, которые плавают, чудесно крякают и заливают файлы на хостинг.

Как работают utochki?
Как и любой хороший инструмент, они просто делает свою работу, и делают её хорошо. Сейчас имеются две команды: push (залить) и pull (слить). Если «сливатель» устроен довольно просто, то push спроектирован так, чтобы процесс заливания файлов проходил как транзакция:
Таким образом, достигается неплохая надёжность решения при сохранении простоты реализации.
Уже хочу!
Для того, чтобы использовать utochki нужно поставить и создать в корневом каталоге проекта конфигурационный YAML-файл utochki.yaml следующего вида:
После этого можно совершенно без проблем плавать с уточками:
Да, и команда utochki pull сольёт файлы с сервера в каталог с именем «имя-pub-директории-UNIXTIME»:
Исходники доступны под в репозитории .
Приятного плавания!
Возникают ситуации, когда нужно залить куда-нибудь файлы (например, статичный HTML на хостинг), где есть только доступ по убогому FTP. В более удачных случаях есть или , поэтому можно применять готовые инструменты развёртывания, но такой возможности не было.
Поскольку желание делать всё руками отсутствовало, но работать всё-же хотелось, вчера за вечер накидал на Ruby простенькое и работающее решение для развёртывания статики через FTP: милые utochki, которые плавают, чудесно крякают и заливают файлы на хостинг.

Как работают utochki?
Как и любой хороший инструмент, они просто делает свою работу, и делают её хорошо. Сейчас имеются две команды: push (залить) и pull (слить). Если «сливатель» устроен довольно просто, то push спроектирован так, чтобы процесс заливания файлов проходил как транзакция:
- 1. Подключаемся.
- 2. Заливаем все файлы во временную директорию (1).
- 3. Перемещаем все файлы из целевого каталога в ещё одну временную директорию (2).
- 4. Перемещаем все файлы из временной директории (1) в целевую.
- 5. Удаляем все временные директории (1 и 2) и прочий оставшийся мусор.
- 6. Отключаемся.
Таким образом, достигается неплохая надёжность решения при сохранении простоты реализации.
Уже хочу!
Для того, чтобы использовать utochki нужно поставить и создать в корневом каталоге проекта конфигурационный YAML-файл utochki.yaml следующего вида:
После этого можно совершенно без проблем плавать с уточками:
eveel@notazik{~/Work/suckless-ru}% utochki push
USER не_палимся
MKD /не_палимся/tmp/1270370845
PASV
STOR /не_палимся/tmp/1270370845/index.html
MKD /не_палимся/tmp/1270370845-www
PASV
NLST /не_палимся/www
PASV
NLST /не_палимся/tmp/1270370845
RNFR /не_палимся/tmp/1270370845/index.html
PASV
LIST /не_палимся/tmp/1270370845-www
PASV
LIST /не_палимся/tmp/1270370845-www
PASV
LIST /не_палимся/tmp/1270370845
PASV
LIST /не_палимся/tmp/1270370845Да, и команда utochki pull сольёт файлы с сервера в каталог с именем «имя-pub-директории-UNIXTIME»:
eveel@notazik{~/Work/suckless-ru}% utochki pull
USER u227112
PASV
LIST /не_палимся/www
PASV
LIST /не_палимся/www
PASV
RETR /не_палимся/www/index.html
eveel@notazik{~/Work/suckless-ru}% ls | grep www
www-1270370944Исходники доступны под в репозитории .
Приятного плавания!
- +7
- eveel
- 17 апреля 2010, 14:04
Толи я такой тупой, толи статья кривая, но я не понял, «нафига?» и чем оно вообще полезно.
Статья не кривая, остаётся единственный вариант.Значит просто не сталкивался с проблемой. Есть хостинг, который умеет только FTP. Есть сайт, сделанный из статического HTML. Для того, чтобы не дрочиться каждый раз с ручной заливкой сайта на сервер, есть уточки, которые кря-кря и файлы на месте.
Подскажите, в каком месте приходится дрочиться, заливая сайт по ftp? Я почему-то никогда не испытывал проблем. Может что-то не так делал? =\
Так что там у вас кря-кря?
По ssh захожу просто наутилусом, gvfs — наше всё.
Вот откровенно не понимаю, чего такого они делают вообще и как этим пользоваться. Говорю же, статья кривая. И где же пример того самого YAML файла, который теоретически мог связать всю картину воедино?
Спасибо за напоминание. Забыл ссылку на оригинальный пост в бложике. Вообще, этот пример конечно есть:
Ftp не секьюрно из коробки и поднимать еще надо.
Вариант с SFTP рассмотрю, но нужно убедиться в том, что не придётся делать ещё один или .