Обновить
8K+

Ruby *

Динамический высокоуровневый язык программирования

0,6
Рейтинг
Сначала показывать
Порог рейтинга
Уровень сложности

Легкая верстка в вынужденных местах: хелперы, декораторы, элементы форм

Время на прочтение3 мин
Охват и читатели6.2K
Многие уже знают о том что во вьюхах не рекомендуется использовать логику и вообще какие-либо манипуляции с данными. Для этого подобный код выносят в декораторы, кастомные элементы формы, компоненты и просто хелперы в конце-концов.

Действительно, при таком подходе view-файлы начинают выглядить лучше. Но кастомные элементы форм и хелперы становятся просто невыносимыми.

Но есть простой и элегантный способ как сделать их чище и проще…

Читать дальше →

Почему я снова комментирую код приложений на Ruby/Rails

Время на прочтение5 мин
Охват и читатели16K
Здравствуйте, я — разработчик программного обеспечения на Ruby / Rails и я комментирую свой (а с недавних пор ещё и чужой) код. Голос из зала, вероятно, крикнул бы «Привет, разработчик!»

Много лет назад мне казалось очевидным устоявшееся мнение профессионалов и гуру разработки, которое обычно выражается примерно так: «Если код требует комментария — это плохой код, его нужно переписать/отрефакторить/упростить/уменьшить». Т.е. привести его к виду, комментариев и пояснений не требующему. В целом, этот подход достаточно универсален и работает во многих случаях. Многие мои знакомые веб-разработчики никогда не комментируют свой код и считают это вполне нормальным явлением, даже если работают в команде. Вероятно, сказывается миф о простоте Ruby, такой простоте, которая делает код понятным даже постороннему. Однако, мой личный опыт и некоторые эпизоды командной разработки веб-приложений убедили меня в том, что существуют ситуации и причины уделять комментариям и документированию кода больше внимания и времени, чем обычно уделяет разработчик.
Читать дальше →

2084. Смерть копирайту

Время на прочтение2 мин
Охват и читатели88K
— Ты все еще не бросил свое Ruby? – взволновано спросила Татьяна. – Ты же знаешь, что сейчас на программистов облавы чуть ли не каждый день? Сергей, ты действительно хочешь, чтобы тебя отправили в ЗАТО?

Сергей понуро молчал.

После Большой свободной революции и полной победы антикопирастов, ЗАТО – закрытые абстракто-творческие общества появились по всей стране.

image

Сначала туда свозили только людей творческих профессий – писателей, композиторов, художников. Затем принялись и за программистов. Благоустроенные бараки, двухразовое полноценное питание, обязательные спортивные мероприятия, помогающие держать форму…

Несмотря на предсказанный рост производительности, качество художественных произведений снизилось, поставив под угрозу интересы главной фигуры любого творческого процесса – ПОТРЕБИТЕЛЯ. После длительных дебатов в парламенте, правительство было вынуждено пойти на крайние меры – была введена система «мотивирующих воздействий». Если созданное произведение не набирало норму лайков – всей бригаде урезали паек, а систематический саботаж творческой выработки мог привести к переводу в лесорубы.
Читать дальше →

Интересные доклады по Ruby на DevConf::Ruby — 14 июня в Москве

Время на прочтение1 мин
Охват и читатели4.8K
image
Традиционно, RailsClub готовит интересную ruby секцию в рамках devconf.ru

Осталось меньше недели до старта, не пропусти тусовку — будет более 1000 веб-разработчиков

— Безопасный сайт на примере Rails
— Архитектурные практики
— Биллинг в SaaS-системах на Rails
— Спасение утопающих — покрываем тестами взрослый Ruby on Rails проект
— Рефакторинг Ruby кода.
— Domain Driven Design on Rails
— Быстрое тестирование Ruby on Rails
— Проектирование API
— Особенности совместной работы Ruby и Oracle
— Основы отладки Rails приложений
Читать дальше →

Правила для разработчиков от Sandi Metz

Время на прочтение3 мин
Охват и читатели12K
В январе этого года, Sandi Metz представила свои правила для разработчиков в эфире подкаста Ruby Rogues. Примерно в это же время, я и моя команда начали новый проект. Эта статья описывает тот опыт, что мы получили, применяя эти правила к своему новому проекту.

Правила


  1. Классы не могут содержать больше чем 100 строк кода.
  2. Методы не могут быть длиннее чем 5 строк кода.
  3. Нельзя передавать больше 4 параметров в метод. Значения хэша также считаются параметрами.
  4. Контроллеры могут инстанциировать только один объект. Следовательно, представление может знать только об одной инстанс переменной и должно только слать сообщения этому объекту (@object.collaborator.value не допустим).

Читать дальше →

ActiveRecord Hacks

Время на прочтение4 мин
Охват и читатели11K
Сегодня я поделюсь своим набором не всегда очевидных функций и возможностей Active Record, с которыми я столкнулся в процессе разработки Ruby on Rails приложений или нашел в чужих блогах.

Читать дальше →

Используем потоки в Ruby

Время на прочтение6 мин
Охват и читатели28K
Многие Руби-разработчики игнорируют потоки (threads), хотя это очень полезный инструмент. В данной статье мы рассмотрим создание IO потоков в Руби и покажем как Руби справляется с потоками в которых происходит много вычислительных операций. Попробуем применить альтернативные имплементации Руби, а так же узнаем, каких результатов можно добиться при помощи модуля DRb. В конце статьи посмотрим, как эти принципы используются в различных серверах для приложений на Ruby on Rails.

IO потоки в Руби


Рассмотрим небольшой пример:

def call_remote(host)
  sleep 3 # симулируем долгий запрос к серверу
end

Если нам надо обратитьcя к двум серверам, например, чтобы очистить кэш, и мы дважды последовательно вызовем эту функцию:

call_remote 'host1/clear_caches'
call_remote 'host2/clear_caches'

то наша программа будет работать 6 секунд.

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

threads = []

['host1', 'host2'].each do |host|
  threads << Thread.new do
    call_remote "#{host}/clear_caches"
  end
end

threads.each(&:join)

Мы создали два потока, в каждом потоке обратились к своему серверу и командами #join сказали, что главной программе (главному потоку) надо подождать их завершения. Теперь наша программа успешно выполняется в два раза быстрее, за 3 секунды.
Читать дальше →

Ruby on Rails. Установка, настройка, начало работы

Время на прочтение7 мин
Охват и читатели113K

Зачем.


В этой маленькой статье, которую с удовольствием прочитал бы сам неделю назад, я попытался собрать все вещи, которые понадобились бы человеку, задумай он «с нуля» написать приложение на RoR. То есть не углубляясь ни в одну из областей, описать необходимый минимум действий, чтобы установить, настроить и написать своё первое приложение.Здесь собрано, как мне кажется, всё, что нужно и я надеюсь этот текст сэкономит кому-нибудь несколько часов поиска в интернете). Сам изучаю RoR вторую неделю, так что не судите строго).

Установка.


Просто и быстро ror ставится через rvm c rvm.io.

>\curl -L https://get.rvm.io | bash -s stable --rails --autolibs=enabled


Запустить rvm:

>source /Путь_к_домашней_директории*/.rvm/scripts/rvm

*$HOME в дальнейшем.
После этого в $HOME/.bash_profile должна появиться строчка:

[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" # Load RVM into a shell session *as a function*


и при каждом открытии консоли rvm будет подгружаться, но у меня этого не случилось — пришлось ещё в $HOME/bashrc прописывать:

. ~/.bash_profile


Теперь всё точно должно быть хорошо.
Устанавливаем нужную(скорее всего это будет самая последняя) версию руби (сколько их и в чём отличие можно посмотреть здесь -http://www.ruby-lang.org).
>rvm install 1.9.3

Проверка на успешность создания
>ruby -v

должна вернуть более подробную информацию, вроде
ruby 1.9.2p320 (2012-04-20 revision 35421) [x86_64-linux].

В процессе установки я случайно установил несколько версий, что потом доставило некоторые неприятности). Посмотреть список установленных версий руби можно так:
>rvm list
Если версий несколько, то текущая будет помечена "=>", дефолтная — "*", а текущая и дефолтная — "=*". Поменять на нужную используемую версию можно так:
>rvm use ruby-1.9.2-p320 (любая нужная версия)

Чтобы поменять дефолтную версию руби пишем:
>rvm use ruby-1.9.2-p320 --default

Читать дальше →

Изучая Rails (ну, и Ruby)

Время на прочтение8 мин
Охват и читатели45K
Я знаю PHP. Не просто знаю, а действительно знаю. Не только синтаксис, или идиомы и особенности, но еще и почему — почему что-то работает именно так как оно работает, понимаете, под капотом. И скорее всего я тем или иным образом принимал участие в принятии того или иного решения. Все таки, тринадцать лет с языком — это долгий срок. Но я работал не только с PHP.

Читать дальше →

RubyMine 5.4 готов к выходу Rails 4

Время на прочтение1 мин
Охват и читатели8.3K
Мы рады сообщить о том, что новая версия RubyMine, интегрированной среды разработки для Ruby on Rails, доступна для скачивания.

Несмотря на то, что прошло всего два месяца с момента выхода RubyMine 5, мы готовы поделиться новым функционалом и надеемся, что наши пользователи будут рады новым возможностям.
Читать дальше →

Class методы в ruby

Время на прочтение3 мин
Охват и читатели17K
Не так давно, занявшись изучением ruby, я столкнулся с тем, что не понимаю, что такое class методы, точнее в чем их отличие от instance и зачем они вообще нужны. В учебнике, который я изучаю на данный момент, эта тема была описана не достаточно подробно или я не дочитал до подробного описания, но в любом случае мне стало интересно разобраться и я полез искать ответы в google. Данный пост является всем тем, что мне удалось найти и понять. Конечно, для опытных ruby разработчиков тут интересного мало, но я надеюсь, что смогу помочь таким же новичкам в языке как и я. Если я вас заинтриговал — прошу под кат.
Поехали!

RVM Autolibs: Автоматическое управление зависимостями и Ruby 2.0

Время на прочтение3 мин
Охват и читатели4.8K

Прошлый месяц ознаменован началом новой вехи для рубистов — релиз Ruby 2.0.0. Вместе с ним обновлённый RubyGems и новые зависимости, включая OpenSSL. Ранее RVM почти ничего не предпринимала для разрешения зависимостей, устанавливая вместо этого LibYAML, так как он был нужен для функционирования RubyGemsк. Ситуация изменилась с появлением OpenSSL, так как это является бОльшей зависимостью. Раньше для Ruby 2.0.0-rc RVM устанавливал OpenSSL. Однако компилирование OpenSSL не лёгкая задача, используя LibYAML.
Читать дальше →

Тонкости Rails 4 — Thread-Safety

Время на прочтение7 мин
Охват и читатели24K


В Rails 4.0 по умолчанию будет включена опция config.threadsafe! и в данном уроке вы узнаете о том, что же она все-таки делает, как влияет на production и как вообще стоит вести себя с потоками.
Читать дальше →

Ближайшие события

Авторизация через Facebook, Google, Twitter и Github используя Omniauth

Время на прочтение16 мин
Охват и читатели32K
Озадачившись однажды вопросом добавление регистрации/входа на сайт через сторонние сервисы начал искать, что уже есть готового, либо описания как это уже кто-то делал. Готовые сервисы были откину сразу, остался вариант реализовывать самому. И тут Google навел на подробную инструкцию. Ознакомившись и вдохновленный тем решением сделал свою модификацию, все работало, был просто счастлив.

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

И так приступим...


Эта глава будет посвящена известному гему Omniauth. Omniauth это новая система идентификации поверх Rack для мультипровайдерной внешней идентификации. Он будет использован для связи CommunityGuides (прим: в настоящий момент ресурс не доступен и похоже уже не вернется) с Facebook, Google, Twitter и Github. Данная глава покажет как интегрировать все это с существующей идентификацией через Devise.
Читать дальше →

Состоялся релиз Ruby 2.0.0

Время на прочтение1 мин
Охват и читатели23K
Сегодня, 24 февраля 2013 года, вышла новая версия Ruby 2.0.0-p0.
Это первый стабильный релиз новой мажорной ветки.
Давайте посмотрим, что же нового принес нам новый релиз.
Читать дальше →

Установка и настройка Redmine 1.3.0 на Windows XP SP2 / Windows 7

Время на прочтение4 мин
Охват и читатели15K

Знакомство с Ruby on Rails (RoR)


В моей повседневной жизни возникла потребность использовать веб приложение для управления проектами, Redmine. Так как на своем домашнем ПК я использую ОС Windows XP SP2, предполагал ряд проблем с установкой и настройкой Redmine. В общем то так оно и получилось.

Убив от 5 до 6 часов на поиск документации по установке и исправлении ошибок, у меня все таки получилось увидеть в своем браузере интерфейс Redmine *СЧАСТЬЕ*.

В статье я постараюсь рассказать вам о установке и настройки всех необходимых компонентов для использования Redmine на ОС Windows XP SP2 / Windows 7. Начнем с терминов и названий.
Читать дальше →

Срочно обновляемся до Ruby on Rails 3.2.12, 3.1.11 и 2.3.17 во благо собственных нервов

Время на прочтение1 мин
Охват и читатели11K


Доброго времени суток, дорогой читатель. Надеюсь, что ты читаешь этот короткий пост за своим утренним кофе, и тебе не пришлось творить экстренный деплой посреди ночи. Иначе — соболезную, и предлагаю тебе обновить свои Ruby on Rails приложения прямо сейчас.
Читать дальше →

Состоялся релиз RubyMine 5

Время на прочтение2 мин
Охват и читатели9.7K
Мы рады сообщить, что вчера вышла новая версия интегрированной среды разработки для Ruby и Rails — RubyMine 5, которую можно загрузить с нашего сайта.

В новой версии мы постарались добавить новые возможности, которые позволят получить удовольствие от разработки на Ruby во всем ее многообразии. Уже хорошо зарекомендовавшие себя инструменты разработки теперь доступны для еще большего числа Ruby-приложений, в том числе и для iOS-приложений на базе технологии RubyMotion, быстро набирающей популярность. Для приложений RubyMotion стали доступны интеллектуальное автодополнение кода, тестирование и отладка с использованием графического интерфейса.

Более подробно о RubyMine 5 можно узнать на странице What’s new. Также мы рады представить демо-видео от технического евангелиста Джона Линдквиста (John Lindquist).
Читать дальше →

Первые жертвы критических уязвимостей Rails: RubyGems.org подвергся хакерской атаке

Время на прочтение1 мин
Охват и читатели12K
Не успело Rails сообщество оправиться от последних критических уязвимостей с YAML парсингом, как злоумышленники нанесли удар по святому — RubyGems.org(wiki) подвергся хакерской атаке, через выше описанные уязвимости. Как минимум один зловредный гем был залит на RubyGems, который потенциально имел доступ к чувствительной информации, включая права на манипулирование гемами.
Читать дальше →

Ruby, SmallTalk и переменные класса

Время на прочтение10 мин
Охват и читатели18K
Статья, является переводом заметки Пата Шонаси (Pat Shaughnessy), в оригинале звучащей как Ruby, Smalltalk and Class Variables.

Пару недель назад статья Эрни Миллера (Ernie Miller) натолкнула меня на вопрос: а как работают переменные класса в Руби? После небольшого исследования, оказалось что переменные класса могут быть потенциальным источником проблем. Фактически, Джон Нунмейкер (John Nunemaker) уже написал статью «Переменные класса и экземпляра в Руби», которая датируется 2006 годом и остаётся актуальной и сейчас. Фундаментальная проблема переменных класса в том, что они разделяются между самим классом и всеми его подклассами – как Джон объяснял еще шесть лет назад, и это может вести к неразберихе и странному поведению кода.

Читать дальше →