Блог timon: свежак

@16:28 June 11, 2010

Thinking Sphinx, много MVA и долгое индексирование

Теги: rails, thinking sphinx

Есть у меня моделька — типа поста в блоге. Индексируются на ней текст, комментарии, и права доступа. Добавили ещё один атрибут для индексирования и время индексирования подскочило до трёх минут против пяти секунд.

Оказывается, sphinx для индексирования multi-value attributes пихает в запросы GROUP_CONCAT куда ни попадя, отчего объём датасета, который приходится лопатить SQL-серверу, растёт экспоненциально.

К счастью, thinking sphinx позволяет использовать для определения аттрибутов фрагменты SQL-запросов. Внутри статьи показано, как этим можно воспользоваться для ускорения индексирования на моделях, в которых вытаскивается много аттрибутов через разные ассоциации.

@14:47 February 25, 2010

Подстава от rjs и jrails

Теги: подземный стук, rails, jrails, jquery

Дано: рельсы, подточенные jrails-ом для использования jQuery, и lowpro к ним.

Делаю формочку, вешаю на неё Remote.form, пишу шаблон-обработчик:

form = page[:"#new_object"]
form.children.removeClass("error")
form.reset()

и вижу: не очищается форма. Почему — не понятно.

Оказывается, rjs превратил мою конструкцию в вот такое:

jQuery("#new_catalog").children().removeClass("error").reset();

Вот так — работает:

page[:"#new_object"].children.removeClass("error")
page[:"#new_object"].reset()

А всё потому, что в далеко в недрах rjs сидит JavascriptGenerator и JavascriptHelper, которые разворачивают вызовы к неизвестным методом в строчку-аккумулятор.

@13:50 January 18, 2010

Как сломать редиректы в связке nginx — apache+passenger

Теги: nginx, apache, подземный стук

Один мой коллега (как это любит говорить один мой бывший коллега) сейчас обратился за помощью.

Стоит у него сервачок, на сервачке стоит нгинкс, за нгинксом стоит апач с пассажиром, за ними крутится с пяток рельсовых приклад. 

Повесил он на сервачок шестую прикладу, а в ней почему-то redirect_to не работает: redirect_to root_path приводит к перенаправлению на http://app.example.com/.example.com

Оказывается, такого результата легко добиться, когда имя домена третьего уровня совпадает с названием upstream-а в nginx.conf. Нгинкс видит, что начальная часть location совпадает с названием upstream-a, и вырезает её. Чтобы такого не было, надо поменять конфиг.

Как? Написано под катом.

@05:20 January 11, 2010

20 январь 2009, или названия месяцев в russian

Теги: rails, russian

 Захотелось мне в очередном рельсовом проекте, чтобы в датах между днём и месяцем стоял не обычный пробел, а неразрывный. Но вот незадача — от смены строки форматирования даты в файле с локалью месяцы стали показываться неправильно, типа «20 январь 2009».

В итоге, чтобы решить проблему я нарисовал небольшой инициализатор, который под катом.

 

@14:16 December 21, 2009

Внезапно

Ничего не значащий первый пост