Рубрика «ruby on rails» - 37

На днях я зарелизил новую версию своего gem Gon – 4.0.0 и решил привести пару примеров его возможностей и использования. Данная библиотека служит для упрощения работы с данными в MVC архитектуре. Она позволяет работать с данными контроллера из JS пропуская шаги перекидывания этих данных через вью. На сегодняшний день существуют реализации гона для RoR приложений, sinatra-like приложений (sinatra, padrino, etc.) и для .Net MVC.

Карта в админке

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

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

RubyMine 4.5 Just ReleasedКомпания JetBrains рада сообщить о выходе RubyMine 4.5 — новой версии интеллектуальной интегрированной среды разработки для Ruby on Rails, которую можно загрузить с нашего сайта

Мы искренне верим, что для создания хорошего продукта в первую очередь необходимо прислушиваться к сообществу разработчиков. В этой версии RubyMine мы постарались реализовать как можно больше нового функционала с учетом оставленных вами комментариев и отданных голосов.
Читать полностью »

Прим. переводчика — пост про интеграцию Robokassa и Rails уже был, но способ, предоставленый там, полагаю, многих не устроит.

Когда у вас есть приложение, написанное на Ruby on Rails и вы планируете добавить какую-нибудь платежную систему (например PayPal, Moneybookers или Robokassa, как в нашем случае), то первый гем о котором вы должны подумать — это active_merchant от Shopify.

ActiveMerchant — простая абстрактная платежная библиотека используемая и спонсируемая компанией Shopify.

Поэтому когда мне понадобилось добавить платежи через Robokassa в наш проект, я открыл список поддержеваемых платежных систем и был немного разачарован, потому что Robokassa туда не входила. Чуть позже я нашел форк, который добавлял её поддержку, но он уже устарел, поэтому некоторые тесты падали ec801d3d4f8. Таким образом я решил глянуть на этот код и исправить его, а не писать всё с чистого листа.
Читать полностью »

Я уже давно разрабатываю приложения используя haml и coffee script. Всячески стараюсь избегать случаев написание pure javascript кода, html или erb. К хорошему быстро привыкают.
Ruby on Rails ругают за низкую производительность, отчасти это правда, отчасти не все возможности оптимизации поддались постижению. В любом случае,
Views: 490.9ms | ActiveRecord: 14.4ms
выглядит печально и хабраэффекта я не переживу. Как раз настал момент рефакторинга, кода вопрос производительности встал ребром.

Решение лежало в области ejs.
Читать полностью »

Немного Rails трюков
Хочу поделиться в вами несколькими трюками, которые помогут сделать работу с Ruby on Rails лучше, быстрее, а также позволят вам много зарабатывать и более лучше одеваться.
Читать полностью »

Всем доброго дня! Я вам хочу поведать о замечательном геме (плагине) для Ruby and Rails (практически не нашёл упоминаний о нём на хабре).

Цель данного плагина — предоставить удобный типовой интерфейс «из коробки». С добавлением, удалением, правкой, поиском, сортировкой и всё это с ajax (или без него).

Знакомство с Active Scaffold

Делается такое чудо, как на рисунке, в несколько простых шагов:

1. Кидаем строчку в Gemfile

gem 'active_scaffold'

2. Устанавливаем gem'ы

bundle install

3. Подключаем стили и скрипты

/* В /app/assets/stylesheets/application.css.scss
 *= require active_scaffold
 */

// В /app/assets/javascripts/application.js
//= require active_scaffold

4. Прописываем в целевом контроллере

class StuffsController < AuditorController
  active_scaffold :stuff
end

Всё! Дальше Active Scaffold сам подхватит соответствующую модель (в примере — Stuff), разузнает о её колонках в таблице БД и связанных моделях, выберет 15 (по умолчанию) первых записей согласно настройкам default_scope в модели (если задано) и представит вам. Так же заодно (кроме отображения HTML) предоставит вам API в форматах JSON и XML.
Читать полностью »

Не все работодатели инвестируют в кадры, а найти деньги на хорошие учебные курсы самостоятельно под силу не каждому разработчику. Решение есть — грант на Brainwashing Rails от проекта Aviasales. Отправьте анкету и станьте одним из 5 стипендиатов, а после курса пройдите собеседование в Aviasales и улетайте работать в Тайланд. И попрощайтесь с недальновидным работодателем.

Стипендия на Brainwashing Ruby on Rails и шанс работать на берегу океана
Читать полностью »

На хабре уже есть несколько статей о rbenv (раз, два, три), но ни в одной не упомянут очень удобный инструмент rbenv-installer. Этой статьёй я и заполню этот пробел.

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

В одном из моих проектов мне понадобилось периодически запускать задачи (rake tasks) с помощью cron. Задачи для cron-а я формировал и записывал в crontab с помощью гема whenewer. Тогда я ещё пользовался RVM и cron в лог писал что-то вроде:
bundle: command not found

Искал решение с помощью гугла и нашёл в issues whenewer-а упоминание о такой же проблеме. Тикет был закрытым и упоминалось что в rbenv всё работает. Установил я rbenv и без каких-либо дополнительных настроек мои cron-задачи стали работать так как я и хотел. С того дня в новых проектах я только rbenv использую.
Читать полностью »

Я большой фанат resque, который использует Redis в качестве хранилища, однако если есть необходимость быстро выполнить большое количество фоновых задач, в некоторых случаях delayed_job может работать более эффективно благодаря тому, что он не вызывает fork() каждый раз при выполнении новой задачи.
Читать полностью »

Сначала разберемся с определениями. Под обновлением на лету мы подразумеваем такое обновление системы, при котором не нарушается штатная ее работа: клиенты работают, посетители ходят и никто не наблюдает ошибок, увеличившегося времени отклика или таблички “УЧЁТ”.

Зачем это нужно? Если вы задаетесь этим вопросом — вам не нужно. Вешайте табличку, садитесь обедать.

Как это делается? Сложно. Почему? Главных причин две: — вы не можете обновить систему мгновенно и атомарно (то есть ровно между двумя HTTP запросами). При наивном подходе пользователи заметят как минимум долгое время отклика, а то и ошибку, если, к примеру, БД обновлена, а код еще нет; — состояние и конфигурация системы существуют и на клиенте и на сервере. Примеры: данные в сессии, имена полей формы, адреса в ссылках, состояние в javascript на открытой у пользователя странице.
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js