Thinking Sphinx, много MVA и долгое индексирование
Теги: rails, thinking sphinxЕсть у меня моделька — типа поста в блоге. Индексируются на ней текст, комментарии, и права доступа. Добавили ещё один атрибут для индексирования и время индексирования подскочило до трёх минут против пяти секунд.
Оказывается, sphinx для индексирования multi-value attributes пихает в запросы GROUP_CONCAT куда ни попадя, отчего объём датасета, который приходится лопатить SQL-серверу, растёт экспоненциально.

К счастью, thinking sphinx позволяет использовать для определения аттрибутов фрагменты SQL-запросов. Внутри статьи показано, как этим можно воспользоваться для ускорения индексирования на моделях, в которых вытаскивается много аттрибутов через разные ассоциации.
Подстава от 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, которые разворачивают вызовы к неизвестным методом в строчку-аккумулятор.
Как сломать редиректы в связке nginx — apache+passenger
Теги: nginx, apache, подземный стукОдин мой коллега (как это любит говорить один мой бывший коллега) сейчас обратился за помощью.
Стоит у него сервачок, на сервачке стоит нгинкс, за нгинксом стоит апач с пассажиром, за ними крутится с пяток рельсовых приклад.
Повесил он на сервачок шестую прикладу, а в ней почему-то redirect_to не работает: redirect_to root_path приводит к перенаправлению на http://app.example.com/.example.com
Оказывается, такого результата легко добиться, когда имя домена третьего уровня совпадает с названием upstream-а в nginx.conf. Нгинкс видит, что начальная часть location совпадает с названием upstream-a, и вырезает её. Чтобы такого не было, надо поменять конфиг.
Как? Написано под катом.
20 январь 2009, или названия месяцев в russian
Теги: rails, russianЗахотелось мне в очередном рельсовом проекте, чтобы в датах между днём и месяцем стоял не обычный пробел, а неразрывный. Но вот незадача — от смены строки форматирования даты в файле с локалью месяцы стали показываться неправильно, типа «20 январь 2009».
В итоге, чтобы решить проблему я нарисовал небольшой инициализатор, который под катом.