Загрузка...

Ruby & Rails: веб-разработка с удовольствием

Ruby on Rails — фреймворк для создания веб-приложений. Является открытым программным обеспечением (лицензия MIT). Здесь мы обсуждаем новости RoR, делимся учебными материалами и интересными находками С RoR даже сложные веб-приложения могут быть написаны за считанные дни. Это действительно разработка с удовольствием!

Саморазвитие

     

15 сентября 2012 в Москве на территории центра Digital October состоится 11-ая конференция веб разработчиков на Ruby и Ruby On Rails – RailsClub’Moscow 2012

Регистрация http://railsclub.timepad.ru/event/29192 

14.06.11, 00:11
Автор ggg

Так сложилось что при работе с ajax-формами в Rails 3 до сегодняшнего дня мне хватало либо стандартной опции :remote => true, либо же приходилось писать какой-то жутко-кастомный функционал отправки формы на сервер.

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

Предположим что проект разрабатывается в связке rails 3 + jquery (хотя и для prototype.js тоже есть тоже что-то подобное). Если есть ajax-форма, то всегда можно повесить listener-ы на следующие события:

 

$("#tool-form").bind("ajax:before", function() {
  /* производим какие-то действия до отправки формы на сервер */
});

$("#tool-form").bind("ajax:complete", function() {
  /* производим какие-то действия после получения ответа от сервера */
});

$("#tool-form").bind("ajax:success", function() {
  /* производим какие-то действия после получения ответа от сервера с кодом 200 */
});

$("#tool-form").bind("ajax:error", function() {
  /* производим какие-то действия если сервер вернул ошибку */
});

Возможно эта небольшая заметка сэкономит кому-то пару минут на чтение исходников jquery_ujs.js =)

11.01.11, 12:49
Автор ggg

Продолжая цикл приятных мелочей хочу поведать тем кто еще не знает конструкцию returning и освежить в памяти тех кто уже знаком с ней.

Нередко при написании rails приложения возникает потребность получить объект, что-то с ним сделать и возвратить вновь полученное значение. Это можно сделать следующим образом:

 

def change_state(object_id, new_state)
  object = find(object_id)
  object.state = new_state
  object.save
  object
end

 

С помощью констркции returning данная задача приобретает более красивый внешний вид:

 

def change_state(object_id, new_state)
  returning find(object_id) do |object|
    object.state = new_state
    object.save
  end
end

Таким образом код становится более понятным и легко читаемым.

Думаю в проекте каждого рельсовика встречались места, где нужно провести какое-то действие с объектом, но объекта может и не быть (object == nil), проверки вида

current_user && current_user.admin?

или

post && post.author == user

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

current_user.try(:admin?)

post.try(:author) == user

Я думаю, что это делает код намного более красивым, при сохранении логики (для объекта nil try вернет nil, а для непустого объекта - результат выполнения инструкции). Всем, кто еще не использует данную конструкцию в своих проектах - советую обратить на нее особое внимание.

ключевые слова

Сегодня изучая исходные коды Ruby on Rails столкнулся с такой, на мой взгляд, очень полезной штукой. Предположим, что у вас есть функция, которая может принимать на вход как единственное значение, так и массив. Соотвественно в зависимости от этого имеем две ветки обработки:

  1. если значение единственное - то обрабатывается только оно
  2. если передан массив значений - то обработка должна вестись для каждого элемента массива

Читать полностью

У людей, которые только начинают изучать язык Ruby, часто возникает вопрос, а что же такое блок, как им пользоваться, и в чём отличие блока от таких сущностей как proc и lambda. В этой статье я попытаюсь ответить на данный вопрос.


Читать полностью

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

  • придумывают эффективные распределённые хранилища данных
    • забавно, что идеи, которые пришли из функционального программирования (ФП), стали основой для архитектуры хранилищ данных; у новичков, изучающих ФП, может сложится мнение, что хранение данных неестественно для ФП, так как там нет состояния, но это мнение ошибочно; ФП является источником множества полезных идей для структур данных
  • масштабируют поточные преобразования данных
  • решают повседневные задачи обработки логов и вычисления разнообразных статистических величин

На язык Ruby "map and reduсe" переводится как "map and inject", но, конечно, за MapReduce стоит больше, чем просто комбинирование двух методов.

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


Читать полностью

Начитавшись как-то на ночь про всякие хаскеллы и лиспы, решил немного "офункционалить" руби. Первое, в чем я разобрался, было "pattern-matching" определение методов. Вот об этом и хочу рассказать.


Читать полностью

От ERb к Haml

Всем хорошо известно, что родным способом генерации всевозможных HTML страничек в рельсах является использование Ruby Templating, ERb. Честно признаюсь, до недавнего времени считал его единственным и вполне приемлемым. Но все изменилось, когда я познакомился с Haml. В данной статье я собираюсь рассказать об этом знакомстве.


Читать полностью
ключевые слова
Ближайшие события
октябрь 2017
сентябрь 2017
август 2017
Пн
Вт
Ср
Чт
Пт
Сб
Вс
28
29
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
1