Undr

На память

Записи с меткой ‘rails’

Проверка данных моделей ActiveRecord и функции обратного вызова. Первая часть.

with one comment

1 Star2 Stars3 Stars4 Stars5 Stars (7 голосов, средний: 4.14 из 5)
Loading ... Loading ...

Перевод Active Record Validations and Callbacks

Это руководство описывает цикл жизни объектов Active Record. Вы узнаете, как проверить состояние объектов прежде, чем они попадут в базу данных, и как выполнить собственный код в определенных моментах цикла жизни объекта.

Прочтя это руководство, Вы сможете:

  • цикл жизни объектов Active Record
  • Использовать встроенные помощники для проверки состояния данных модели
  • Создавать свои собственные помощники для проверки состояния данных модели
  • Работать с сообщениями об ошибках, которые генерируются в результате этих проверок
  • Создавать функции обратного вызова, вызываемые на разные события происходящие в течении жизни объекта
  • Создавать специальные классы, которые будут энкапсулировать общее поведение для функций обратного вызова
  • Создавать классы-наблюдатели, которые будут отвечать за вызов соответствующих методов в ответ на события происходящие в течении жизни объекта

    Читать далее »

Написал undr ()

11 ноября 2009 в 17:42

Настройка Rails приложений

without comments

1 Star2 Stars3 Stars4 Stars5 Stars (3 голосов, средний: 5.00 из 5)
Loading ... Loading ...

Перевод: Configuring Rails Applications

Это руководство описывает настройку Rails приложений, и инициализацию разных возможностей, доступных для Rails приложений . Прочтя это руководство, Вы сможете:

  • Корректировать поведение своих Rails приложений
  • Добавлять дополнительный код, который будет выполнен на этапе загрузки приложения

    Читать далее »

Написал undr ()

13 октября 2009 в 13:03

Интерфейс запросов ActiveRecord

with 3 comments

1 Star2 Stars3 Stars4 Stars5 Stars (3 голосов, средний: 5.00 из 5)
Loading ... Loading ...

Перевод: Active Record Query Interface

Это руководство описывает различные способы получать данные от базы данных, используя ActiveRecord. Прочтя это руководство, Вы сможете:

  • Искать записи в базе данных с помощью множества методов и всевозможных условий
  • Определять сортировку, требуемые атрибуты, группировку и другие свойства для поиска записей
  • Использовать отложенную загрузку, чтобы сократить количество запросов к базе данных, необходимых для поиска
  • Использовать динамические методы поиска
  • Создавать именованные области видимости (named_scope), для добавления новых средств поиска Ваших моделей
  • Проверять существование определенных записей
  • Выполнять различные расчеты в моделях ActiveRecord

    Читать далее »

Написал undr ()

22 сентября 2009 в 23:29

Размещено в Документация

Метки: , , , ,

Краткое руководство по named_scope

without comments

1 Star2 Stars3 Stars4 Stars5 Stars (2 голосов, средний: 5.00 из 5)
Loading ... Loading ...

class User < ActiveRecord::Base
  named_scope :active, :conditions => {:active => true}
  named_scope :inactive, :conditions => {:active => false}
  named_scope :recent, lambda { { :conditions => ['created_at > ?', 1.week.ago]
  } }
end

Читать далее »

Написал undr ()

18 сентября 2009 в 14:37

Кэширование и отдача картинки приложением

without comments

1 Star2 Stars3 Stars4 Stars5 Stars (Еще не оценили)
Loading ... Loading ...

Как-то потребовалось, чтоб приложение отдавало изображения по адресам, типа таких: /images/12.png, /images/32.gif и т. д. Где цифра это id изображения в базе. Мой nginx кэширует файлы в директориях images, javascripts, stylesheets

location ~ ^/(images|javascripts|stylesheets)/ {
    expires 10y;
}

В связи с чем запрос не передается приложению, не зависимо от того, есть ли какой файл или его нет. Для решения проблемы добавил в конфиг исключение для случая, когда имя изображения – это число.

location ~* ^/images/(\d+)\.(png|gif|jpg|bmp)$ {
    proxy_pass http://mongrel;
    break;
}
location ~ ^/(images|javascripts|stylesheets)/ {
    expires 10y;
}

Написал undr ()

16 сентября 2009 в 16:26

Размещено в Примеры

Метки: , ,

Я настраивал nginx и mongrel_cluster для rails проекта так

with 6 comments

1 Star2 Stars3 Stars4 Stars5 Stars (1 голосов, средний: 5.00 из 5)
Loading ... Loading ...

Это основной конфиг nginx:

user www-data;
worker_processes  6;

error_log  /var/log/nginx/error.log;
pid        /var/run/nginx.pid;

events {
    worker_connections  1024;
}

http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    access_log  /var/log/nginx/access.log;

    sendfile        on;
    tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;
    tcp_nodelay        on;

    gzip  on;
    gzip_min_length 1100;
    gzip_buffers    4 8k;
    gzip_types  text/plain text/html text/css application/x-javascript text/xml application/xml application/xml+rss text/javascript;
    include /etc/nginx/sites-enabled/*;

}

Читать далее »

Написал undr ()

15 сентября 2009 в 13:05

Размещено в Примеры

Метки: , ,

Построение дерева из плоского массива

with 6 comments

1 Star2 Stars3 Stars4 Stars5 Stars (1 голосов, средний: 5.00 из 5)
Loading ... Loading ...

Когда нам надо работать со всем деревом сразу, иногда, бывает нужно построить дерево из плоского массива. К примеру у нас есть категории товара

class Category < ActiveRecord::Base
  has_many :products
  acts_as_nested_set
end

И нам нужно в панели управления показывать дерево категорий. Мы можем взять категории первого уровня, показать их на сайте и по мере выбора категорий погружать ajax запросом их дочек. Получаем слишком много запросов и ненужные задержки при открытии категории.

Проще взять список категорий целиком и построить из него дерево. Потом его использовать для отображения на сайте. Для построения дерева потребуется закешированое свойство cached_level из предыдущего примера.

Читать далее »

Написал undr ()

6 сентября 2009 в 19:47

Кэширование свойства level в awesome_nested_set

without comments

1 Star2 Stars3 Stars4 Stars5 Stars (1 голосов, средний: 4.00 из 5)
Loading ... Loading ...

Плагин awesome_nested_set в целом достаточно удобный для работы с деревьями, но раздражает отсутствие поля level. Для вычисления level приходится каждый раз обращаться к базе.

Это бывает не удобно, когда нужно вытащить дерево целиком и построить его иерархию. Чтобы кэшировать level в базе данных можно в модель добавить такой код:

class Category < ActiveRecord::Base
  acts_as_nested_set
  after_move :caching_level

  private
  def caching_level
    self.cached_level = level
    save!
  end
end

Это добавит один запрос при перемещении узла, но удалит кучу запросов при формировании дерева.

Написал undr ()

6 сентября 2009 в 19:43

Размещено в Примеры, Программирование

Метки: ,

Bash скрипт для создания rails приложений

without comments

1 Star2 Stars3 Stars4 Stars5 Stars (Еще не оценили)
Loading ... Loading ...

Bash скрипт который позволяет создать rails приложение, добавить его в SVN и удалить из SVN с пометкой игнорировать, папки не предназначенные для хранения в SVN (логи, временные файлы…)

Источник

Читать далее »

Написал undr ()

6 сентября 2009 в 19:33

Размещено в Примеры

Метки: , , ,

Исчезающие flash сообщения

without comments

1 Star2 Stars3 Stars4 Stars5 Stars (Еще не оценили)
Loading ... Loading ...

Для передачи сообщений от запроса к запросу используют flash сообщения. Чтобы организовать работу по отображению flash сообщений можно написать помощник, который будет скрывать сообщение по прошествии какого-то времени, чтобы оно не мешало.

Читать далее »

Написал undr ()

5 сентября 2009 в 19:27