Рубрика «ruby» - 41

Садовник кода

Шавье Нориа (в оригинале — Xavier Noria) — человек далеко не безызвестный в сообществе Ruby. Будучи разработчиком из Барселоны, он сумел стать членом команды ядра Ruby on Rails. Кстати, Шавье также выиграл награду Ruby Hero на RailsConf 2010. Возможно кому-то из вас, уважаемые читатели, удалось с ним встретиться: он появлялся в этом году на нескольких конференциях разработчиков в Европе.

Пожалуй, наибольшее впечатление на меня произвела такая черта Шавье как «Садовник кода» (в оригинале — «Code Gardener»). Эту фразу он оставил в одном из небольших коммитов, сделанный им более двух лет назад.

Недавно мне удалось побеседовать с Шавье на различные темы: его биографии, новинках в Rails 4, его страсти к документации и, пожалуй самое главное, о философии значимости маленьких изменений.
Читать полностью »

Привет хабраписателям! image

По рекомендации Хабрахабра многие пользуются сервисом habrastorage.org для хостинга картинок. Да, загрузка многих изображений через веб страничку это может и удобно, но не очень.

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

Появилась идея модифицировать клиент Gyazo, чтобы сразу отправлять скриншоты в хабрасторадж. И знаете, всё получилось!
Читать полностью »

scribd.com — многие знают что Scribd позволяет загружать до 50 000 файлов бесплатно и преобразует их в pdf + предостваляет неплохой виджет для показа файлов.

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

В некоторых проектах требуется дать возможность пользователю настроить правила для повторяющихся событий. Иногда правила событий могут быть достаточно сложными, к примеру, “каждый предпоследний день месяца” или “каждую вторую пятницу месяца до определенной даты“. Для решения подобных задач можно успешно применять gem ice_cube.
Читать полностью »

в 18:18, , рубрики: DRY, rspec, ruby, метки: , ,

Применение принципа DRY в RSpec

DRY(Don’t Repeat Yourself) — один из краеугольных принципов современной разработки, а особенно в среде ruby-программистов. Но если при написании обычного кода повторяющиеся фрагменты обычно легко можно сгруппировать в методы или отдельные модули, то при написании тестов, где повторяющегося кода порой еще больше, это сделать не всегда просто. В данной статье содержится небольшой обзор средств решения подобных проблем при использовании BDD-фреймворка RSpec.
Читать полностью »

Используем Twitter Bootstrap в RefineryCMS RefineryCMS — это еще одна RoR CMS. Поддерживает Rails3.2, удобна. Я не стану тут заниматься пересказом пресс-релизов, если интересно — на сайте можно поиграться в демо. Поскольку родилась она не вчера, из коробки поддерживать Twitter Bootstrap не умеет. Есть костыль refinerycms-bootstrap, но меня он не впечатлил. Поэтому я расскажу, как быстро прикрутить bootstrap самому. NB! Эта заметка не предполагает, что вы уже видели RefineryCMS, но и не рассказывает именно о ней: рассказ пойдет строго о прикручивании TB.
Читать полностью »

ActiveSupport::Notifications – это встроенная в рельсы система уведомлений. Вы можете подписаться на определенные уведомления в Rails и вызывать свой код когда они будут посланы. Это чем-то похоже на ActiveSupport::Callbacks, но работают во всем проекте и события не нужно заранее объявлять.

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

EventMachine ⇒ сбор информации из разных источников с последующей обработкой
Самый простой способ наступить на грабли — использовать асинхронность. Я знаком с программистами, зарекомендовавшими себя как крепкие профессионалы, которые буквально пасовали перед многопоточностью. Для затравки расскажу мою любимую историю про deadlock (прошу прощения за боян, но уж больно хорош). Лет десять назад Associated Press поведало миру, как в аэропорту шведского города Крисианстад пилот пытался посадить пассажирский самолет, однако никто из диспетчеров не ответил на его запрос. Оказалось, что диспетчер еще не вернулся из отпуска. В итоге самолет кружил над аэропортом, пока срочно не вызвали запасного диспетчера, который и
посадил самолет через полчаса. Разбор полетов показал, что причиной стало опоздание самолета. На борту которого и находился тот самый диспетчер, спешивший на работу из отпуска.

Итак, когда мы сталкиваемся с асинхронностью, нам приходится ломать привычную картину в голове: субъективно окружающий нас мир однопоточен. Если мы послали письмо, а через неделю получили ответ, для нас все происходит в пределах одного потока; нам не приходится отвечать за действия респондента и почтальона. А нашему коду — приходится.
Чтобы упростить жизнь программиста, можно использовать паттерн Реактор. Лучшая (на мой взгляд) его имплементация для руби — EventMachine. Но и с ней бывают не очевидные моменты. Об одном из них я и планирую вкратце рассказать.
Читать полностью »

Ruby на вашем сервере может работать в 2 раза медленее из за RVM
Просматривая сегодня «Ruby Inside», наткнулся на статью Justin Kulesza Is Your Application Running with Ruby – Slow?. Статья от 6 ноября, но Хабре об этой ситуации ни слова. А суть статьи вот в чем: ребята переносили свое приложение с сервера на Solaris на сервер с Ubuntu и использовали RVM для компиляции Ruby. Однако после переноса они заметили, что приложение стало как-будто бы тормознутее. Сначала погрешили на железо, но быстро выяснили, что дело в RVM, а именно в том, что RVM совершенно не использует оптимизацию при компиляции.
Читать полностью »

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

class User
  @var = 1
end

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


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