пятница, 29 ноября 2013 г.

Ruby, Rails, Heroku, и прочие развлечения

Внезапно у меня появилась масса свободного времени, и я решила повникать в Ruby и Ruby on Rails.
Началось все с невинных шалостей - курса Ruby на Codeacademy (http://www.codecademy.com) и баловства с TryRuby (http://tryruby.org). Это все было забавно и интересно, но хотелось чего-то более применимого к реальности, и тогда я посмотрела курс Rails for Zombies (http://railsforzombies.org), параллельно почитывая и поделывая "Гибкую разработку веб-приложений в среде Rails". И от этого всего в голове у меня воцарился полнейший хаос и я стала путаться и забывать то, что вроде бы уже давно усвоила. Да и надоело делать все по книжке, в стиле "перепечатайте этот код, ух ты, он работает".

Тогда я решила - к черту, то есть, хватит читать книжки, надо оставить их до лучших времен и использовать в качестве справочников (хотя на самом деле зачем, если есть гуголь?). Лучший способ освоить что-нибудь полезное - это применить его в действии на реальной задаче. Только где ж ее, эту задачу, взять?




Тут я вспомнила, что еще летом занялась ваянием сайтика с фоточками, чтобы заманивать в свои сети симпатичных девушек, прикидываясь настоящим фотографом. Я тогда решила делать его на статик хтмле, потому что колупаться с CMS ради трех страничек и сотни фотографий показалось как-то тупо. Ну и забросила на стадии наполнения контентом в результате.

Так почему бы не сделать этот сайт на рельсах? Соорудить админку простенькую, фотки да категории. Вот и узнаю, каков этот ваш Ruby в реальной жизни. 

Первое, с чем я столкнулась в процессе разработки, это гемы. Гемы - это такие штуки, которые существенно облегчают жизнь. Они существуют практически на любую задачку, что позволяет избежать велосипедостроительства. Мне для начала понадобились гемы Carrierwave и ActiveAdminе. Первый - для аплодера картинок, а второй - для админки. Как их применять, разобралась легко благодаря скринкастам (http://railscasts.com/) от доброго дядьки, забыла как его звать. Все подробно покажет и расскажет, спаситель прям-таки.

Дальше немного руками поколупалась во всем этом деле, чтобы придать нужную логику и выкинуть лишнее из кастомерки, прикрутила дизайн, который, слава богам, был готов уже на статичной версии. И тут столкнулась с проблемой настроек. Ну типа знаете, тайтл сайта, лого и прочее. Вписывать статикой не хотелось. И вот вроде для этого тоже всякие гемы есть и способы помещать настройки в таблицу и релактировать из админки, но у меня не вышло. Сначала я просто зафигачила себе модель Setting с таблицей, которая заполнялась в админке, но при отправке на heroku все ломалось, а потом, в попытках как-то это исправить, сломалось и в локалке.

Я так запуталась в своих действиях, что решила все сделать заново, и сделала в результате за полдня, но с настройками все равно выходил косяк... Ну да ладно, подумала я, оставлю до лучших времен, и задала их все в файлике-инициалайзере, все равно меняться они будут раз в стописот лет.

И вот, настал исторический момент - все развернуто и работает, можно грузить фоточки. Залила 48 штук. Ручками через админку. И решила поправить кое-чего. И после пуша на хероку все любовно залитые картиночки исчезли!

Я подумала, что это совпадение или ужасная случайность. Но нет. Оказалось, хероку картинки у себя не хранит (по крайней мере на бесплатном аккаунте), и стирает их по мере надобности. С**а.

Умные люди пишут, что надо использовать хероку в сочетании с амазоновским облаком или гугловским. Ну я полезла сначала в гугл, там все как-то страшно и непонятно и карточку просят. В амазоне тоже просят, но хотя бы понятно, что 5 гигов бесплатно можно. Зарегистрировалась в общем в амазоновской системе. Полдня выясняла как теперь это все связать, пока скринкаст того же дядьки не нашла (молицца на него надо таким нубам как я!). И вуаля - все работает и ничего не исчезает.

Заценить можно тут - http://nymphotography.herokuapp.com

А админка вот такая, слегка кастомизированная:



Надо еще днс домена нормального туда переадресовать и будет ваще ништяк. И придумывать чего бы еще слепить, посложнее.

Комментариев нет:

Отправить комментарий