Если вдруг захотелось изменить опцию :path в paperclip...

Posted by Dmitry Polushkin Sat, 19 Sep 2009 18:11:00 GMT

Позавчера столкнулся с проблемой, когда мне понадобилось изменить опцию :path в знаменитом и всеми используемом плагине для Rails paperclip от thoughtbot, когда проекту уже 2 месяца. Естественно, что файлов, за это время накопилось большое множество, и перемещать через консольные команды:

  1. не правильно вовсе, т.к. это почти что не возможно (структура, даже самая базовая настолько динамичная, что вряд ли это возможно без подключения, как минимум к базе данных… а bash + mysql – это hardcore);
  2. можно легко напутать, и переместить файлы в неправильное место;
  3. не люблю много писанины;

Лучше написать всеми любимый Raketask и радоваться, как он сделает всю работу за вас. И так, я начал с того, что полез в исходники paperclip. Так как я уже туда многократно заглядывал, то я знал, что там всё просто, логично, а не так как в attachment_fu. Решение нашлось через 2 часа.

Если вдруг у вас случилась такая же ситуация, вам понадобилось переместить файлы, и вы не знаете пока как, то предлагаю использовать ниже приведённый Raketask, который отработал на production и даже не разу не понадобилось восстанавливать файлы из backup’a.

Как пользоваться?

  1. если у вас нет Raketask’а для paperclip в lib/tasks/, то скопируйте его туда из gem’a
  2. дальше просто: подумайте какой path вы бы хотели использовать и напишите нечто вроде
    1. rake paperclip:change_path CLASS=Image PATH=:rails_root/public/system/:class/:attachment/:style/:id.:extension RAILS_ENV=production
  3. после этого сделайте commit и deploy на сервере с изменённым параметром :path для has_attachement

И это всё.

  desc "Moves files to a new :path NB! backup your files before use this task (set CLASS and PATH, ATTACHMENT is optional)"
  task :change_path => :environment do
    raise 'PATH must be specified, like PATH=:rails_root/public/system/:class/:attachment/:style/:id.:extension' if ENV['PATH'].blank?
    path = ENV['PATH']
    for_all_attachments do |instance, name|
      object = instance.send(name)
      old_path = object.instance_variable_get :'@path'
      
      styles = [:original] + object.styles.keys
      
      styles.each do |style|
        if object.exists?(style)
          object.queued_for_write[style] = object.to_file(style)
        end
      end

      object.instance_variable_set :'@path', path
      object.flush_writes

      object.instance_variable_set :'@path', old_path
      object.instance_variable_set :'@queued_for_delete', styles.map { |style| object.path(style) }
      object.flush_deletes

      # if stopped working then use:
      # path = Paperclip::Interpolations.interpolate(path, object, style)
      # and own write and delete functions
    end
  end

Что происходит? 1

Posted by Dmitry Polushkin Sun, 13 Sep 2009 16:08:00 GMT

Накопилось как обычно много всего интересного. Есть определённые хотения или желания, которые хотелось бы исполнить. Естественно, как обычно это такие желания, что никто, кроме меня самого это сделать не может, т.е. проблема прямиком во мне. Есть кое-какие задачи, с которыми надо разобраться, но лень всё губит. Вроде уже начинаю разгребать накопившееся, и тут через 2-3 задачи встречаю то, что меня заинтересовывает сильнее, чем конечная цель намеченная в начале, и всё.

Больше всего хочется разгрести (проекты, мелочные, но всё же). Выставить их на github, и что б они уже жили свеой собственной жизнью. Приследуемая цель – трудоустройство. Да, я сейчас работаю, вроде бы всё устраивает, да только есть мелочи (о которых я расскажу в будущем).

Не все задачи которые я поставил себе пол года назад решены. Даже не большее их количество (до конца), но тем не менее, хотя бы здесь что-то сдвинулось.

Тут ещё и курсы испанского языка… не понятно что с ними будет. Я уже так набился на них, даже иногда хочется открыть словарик, выписать и заучить некоторые испанские слова, и заучить их раз и на всегда.
Дальше писать пока не буду, иначе пост получится слишком эмоциональным. Надеюсь вернусь к этому вопросу и раскажу обо всём более подробно.

Расписание салютов на Tenerife Sur (на юге Тенерифе)

Posted by Dmitry Polushkin Sun, 30 Aug 2009 13:19:00 GMT

Три месяца назад мы переехали в Los Cristianos, где до сих пор благополучно проживаем. Живём мы в complex’e под названием The Heights (http://www.theheightscommunity.com/), всё замечательно, и вид тут тоже замечательный. Благодаря этому виду мы смогли заметить, что салют в городе запускают в определённые дни, в определённые часы, по этому мы начали составлять свой собственный график салютов, что бы можно было сесть на мотороллер и за несколько десятков минут поехать к месту события, и посмотреть салют с самого наиблизжайшего и лучшего ракурса. И так, к этому моменту мы имеем всего два салюта, которые происходили уже как минимум дважды (так что это расписание основывается на реальных подтверждённых, хотя бы пару раз, событиях).

  1. В четверг, в 22:00 в Las Americas, возле пирамиды (главный броменад).
  2. В субботу, в 22:00 (на этой неделе запускали на 15 минут раньше, по этому мы опоздали) в La Calleta/Costa Fanebe, на переходе этих двух “районов”, на побережье.

Советую подходить за несколько десятков минут до начала, т.к. не известно по какому принципу они их запускают, а так же мы уже один раз сами не успели. Если вам нужны точные координаты, и если кого-то это заинтересует, могу обновить запись со ссылками на Google Maps.

Вектор

Posted by Dmitry Polushkin Mon, 27 Jul 2009 02:14:00 GMT

Пока что рекурсивный.

Сижу на терассе

Posted by Dmitry Polushkin Fri, 26 Jun 2009 17:37:00 GMT

Сколько лет прошло? По эстонскому календарю уже почти закончилось, а по Тенерифскому – ещё не прошло, и не пройдёт, потому что погода здесь солнечная и жизнь идёт размеренная. Всё тихо и спокойно. Хорошо.

Наконец-то я написал, а то думал так и не дождусь этого. За это время произошло много чего, о чём-то могу рассказать, о чём-то нет. Есть и интересные события, и не важные, и радостные, и не очень.

Надеюсь на будущее; появится время. Хочу сделать редизайн. Сейчас в активной разработке сайта http://totalrentals.co.uk/ для местной конторы, которая занимается арендой недвижимости. Сегодня закончил недельный цикл, за который написал и полностью отладил на навёл заключительный смак на подпроекте offers, для TotalRentals.co.uk, зайти и посмотреть на сие чудо можно здесь: totalrentals.co.uk/offer

За время прибывания на острове познакомился со многими. Жаль пока все эти знакомства не серьёзные (не позвать в гости, и не посидеть в гостях). Всему причина язык. Да, я знаю английский, я стараюсь его узучать, делаю все усилия к тому, что бы разговаривать на обычные темы в кругу англичан, но пока получается только понимать, да и то не всегда… требуется тишина, что б не было посторонних звуков и шума, тогда понимаю почти всё. Испанский язык это другая эпопея, начало которой вроде было положенно, но продолжиться так и не смогла (эпопея).

Если подвести итог за 3 месяца, а завтра именно 3 месяца с того момента как мы с Катей переехали на Тенерифе, то:

  • Много мыслей появилось в голове (впрочем как и всегда)
  • Много мыслей изменилось
  • Кое что координально поменялось в жизни
  • Стал больше понимать людей, но меньше к ним прислушиваться
  • Главный недостаток так это то, что я постепенно становлюсь каким-то эгоистом и жадиной (с) Катя (Что мне очень не нравится… сам ведь всё понимаю)
  • Много перемен, но стоим на месте; как бы это не звучало пародоксально, но так оно и есть. Надеюсь дальше будет иначе.

И так, изменения уже начались, приступим к тому, что бы не сойти с рельсов.

PS. Кстати о Рельсах… Ruby on Rails это круто, это гуд и это хорошо. Фреймворк который заставляет задуматься о многом, и стараться делать всё так же слаженно как и в нём. Ладно, чего это я в самом деле… стараюсь сравнить реальную жизнь с каким-то фреймворком, но, насамом деле, если задуматься – он мне так много дал, или естественнее сказать, с помощью него я многое получил, а может и нет…

Болезнь подкралась незаметно

Posted by Dmitry Polushkin Tue, 24 Mar 2009 17:10:00 GMT

Честное слово, как нож в спину… от неожиданности даже нервы сдают. Заболел гриппом, надеюсь долечу…

Скоро

Posted by Dmitry Polushkin Mon, 23 Mar 2009 19:30:00 GMT

Через два дня, в четверг, мы покинем Эстонскую столицу, и поплывём на пароме Viking в Финскую столицу Хельсинки, по прибытию нас встретит Катина тётя, и мы поедем в город Ванта. Там я думаю мы попытаемся выспаться, и в 2 часа ночи мы снова уже будем на ногах. Нас отвезут в аэропорт, где мы в 6:45 улетим в Барселону. В Барселону прибудем где-то в 10-11 (не помню точное время), по их времени. В течении полтора-двух часов у нас будет время что бы отойти и перекусить (покормить желудки). Спустя несколько часов у нас снова самолёт, уже до места назначения – северный аэропорт острова Тенерифе. Да, мы этого ждём… далее по плану у нас путешествие на двух автобусах, в начале на 102 (до терминала в Санта Круз, столица Тенерифе), потом на 115 до Costa del Silencio (переводится как “Тихое побережье”, будем жить в районе Chayofita). И так, 27 марта мы уже будем на месте. Кому интересно, ждём отчёта с места события.

Новый хостинг

Posted by Dmitry Polushkin Wed, 04 Mar 2009 14:46:00 GMT

И так, переехали на новый хостинг. Будет время, расскажу о том, почему выбор пал именно на этот хостинг (railsplayground), и почему отказались от предыдущего (dreamhost).

В общем-то, в последнии дни только и делал, что занимался проектом, а сегодня посвятил пол дня переезду (правда до сих пор ещё переехали не до конца), но до 7 марта нужно обязательно полностью переехать:

  • Перетащил 2 рельсовых приложения (с MySQL базой). Работает очень шустро, FastCGI просто летает. Посмотрел ps aux на сервере – тихо, памяти свободной много, загруженность сервера 0.1-0.2 сек.
  • Сделал миграцию Subversion с dreamhost на sourcerepo (достался бесплатно от хостинга).
  • Буду перетаскивать два PHP приложения (с базами).
  • Буду дописывать DNS записи для работы google apps.
  • Буду развёртывать rails приложение через capistrano, что бы показывать заказчику.

Виза

Posted by Dmitry Polushkin Tue, 17 Feb 2009 16:33:00 GMT

Консул мне так и не ответил, наверное, послал меня мысленно из-за моих “Sorry that I’m asking a lot of questions”, “Sincerely” и т.д. А я так надеялся. Теперь вот не могу заснуть, но… после долгого, кропотливого поиска в интернете выудил доставерную информацию: europa.eu ; коли я являюсь EU Citizen, то это означает, что виза мне не нужна. Кате так и подавно. Всё что нам нужно, это зарегистрироваться резидентами по приезду в течении месяца (NIE).

Немного ифнормации: Канарские Острова не входят в Евросоюз, но входят в Европейскую Торговую Сеть, входят в Евросоюз, а так же находятся в составе Шенгена. Ещё интересен тот факт, что из-за того, что этот архипелаг не входит в состав Евросоюза, что там пониженный налог на товары, который иногда равен 0% (хотя как-то с трудом верится). Запрещенны некоторые виды деятельности.

Пойду со спокойной душой спать.

Только эмоции... "путешествие"

Posted by Dmitry Polushkin Tue, 17 Feb 2009 10:21:00 GMT

Глазами вижу, ушами слышу,
Пусть и покажется всё это не серьёзно
Но знаешь, простые вещи они так близко
И почему мы всегда о них моментом забываем?
Потом взываем, мечтаем что бы всё вернулось
Что б детство было вновь и яркие моменты счастья?
Пусть и всегда они с тобой, но ты не видешь их порой
И чем ты старше, тем ты менее сосредоточен на этих глупостях
Но пусть хоть раз ты задержав дыхание, нырнёшь и покажешь путь тех странных мест
Которые пустились когда-то на глубину, и всплыть им было уже не сужденно…
Но ты то видешь, слышишь, понимаешь куда клоню я, и постой
Давай порассуждаем больше – куда стремишься ты, к чему?
Дети, чудеса и виражи, а может просто станешь птицей,
И будешь странствовать всегда, меж деревьев и воды…
Ай ладно, я утихну, пусть будет твоя воля
Но я стараюсь быть усердным.

И может однажны стану,
кем хотел быть всегда.
Спаси, спасай.