
16K+
Охват за 30 дней
Ruby *
Динамический высокоуровневый язык программирования
3,2
Рейтинг
Сначала показывать
Порог рейтинга
Уровень сложности
Как я использовал gem gon в Групоне
4 мин
6.4KНа днях я зарелизил новую версию своего gem Gon – 4.0.0 и решил привести пару примеров его возможностей и использования. Данная библиотека служит для упрощения работы с данными в MVC архитектуре. Она позволяет работать с данными контроллера из JS пропуская шаги перекидывания этих данных через вью. На сегодняшний день существуют реализации гона для RoR приложений, sinatra-like приложений (sinatra, padrino, etc.) и для .Net MVC.
Передо мной стояла задача — реализовать разделение предложений в Групоне по территориальным областям, которые бы мог редактировать администратор. Предложения из областей показываются людям которые живут в этих областях с большим приоритетом нежели предложения из других областей.
Карта в админке
Передо мной стояла задача — реализовать разделение предложений в Групоне по территориальным областям, которые бы мог редактировать администратор. Предложения из областей показываются людям которые живут в этих областях с большим приоритетом нежели предложения из других областей.
+20
Автоматическая сборка javascript/coffeescript проекта
8 мин
6.1K
При разработке хоть сколько-нибудь большого javascript проекта сразу понимаешь, что писать весь код в одном-единственном файле нельзя. После этого код разносится по нескольким файлам и директориям и пишется простой скрипт для того, чтобы все эти файлы можно было легко объединить в один большой production файл. Спустя какое-то время начинаешь замечать, что чем дальше, тем труднее становится следить за зависимостями между файлами, да и весь разработанный механизм больше похож на костыль. И тут приходить озарение, что неплохо было бы посмотреть, какие существуют решения этой проблемы.К системе управления сборкой проекта выдвигаются следующие требования:
- Компиляция из coffescript в javascript. Если в файле coffeescript содержится ошибка, то в консоли должны отобразиться название файла и сообщение об ошибке.
- Сборка проекта в один javascript файл должна производится с учетом зависимостей.
- Возможность собрать все приложение целиком в один файл в нескольких видах (с комментариями, минимизированный). При этом само приложение может состоять из нескольких модулей.
- Сборка тестовых файлов и их выполнение в консоли (да, разрабатываем для веба, при этом не притрагиваемся к мышке и вообще не вылазим из любимого vim'a).
- Конечно же все это должно быть удобно в использовании.
В данной статье я не буду затрагивать вопрос тестирования, а рассмотрю вариант системы управления сборкой javascript/coffescript проекта (и саму структуру проекта) с использованием rake и Rake::Pipeline (git).
+5
Занимательное функциональное программирование в Ruby
13 мин
10KПеревод

Эта статья посвящена бесцельному путешествию по вырожденной форме Ruby в попытках узнать больше о функциональном программировании, простоте и дизайне программных интерфейсов.
Предположим, что единственный способ представления кода — лямбда-выражение, а единственная доступная структура данных — массив:
square = ->(x) { x * x }
square.(4) # => 16
person = ["Dave",:male]
print_person = ->((name,gender)) {
puts "#{name} is a #{gender}"
}
print_person.(person)
Это самые основы функционального программирования: функции — единственное, что у нас есть. Давайте попробуем написать что-то более похожее на реальный код в таком же стиле. Посмотрим, как далеко мы сможем зайти без особых мучений.
+61
Релиз RubyMine 4.5
1 мин
8.6K
Компания JetBrains рада сообщить о выходе RubyMine 4.5 — новой версии интеллектуальной интегрированной среды разработки для Ruby on Rails, которую можно загрузить с нашего сайтаМы искренне верим, что для создания хорошего продукта в первую очередь необходимо прислушиваться к сообществу разработчиков. В этой версии RubyMine мы постарались реализовать как можно больше нового функционала с учетом оставленных вами комментариев и отданных голосов.
+27
Интеграция Robokassa в ActiveMerchant
3 мин
10KПеревод
Прим. переводчика — пост про интеграцию Robokassa и Rails уже был, но способ, предоставленый там, полагаю, многих не устроит.
Когда у вас есть приложение, написанное на Ruby on Rails и вы планируете добавить какую-нибудь платежную систему (например PayPal, Moneybookers или Robokassa, как в нашем случае), то первый гем о котором вы должны подумать — это active_merchant от Shopify.
ActiveMerchant — простая абстрактная платежная библиотека используемая и спонсируемая компанией Shopify.
Поэтому когда мне понадобилось добавить платежи через Robokassa в наш проект, я открыл список поддержеваемых платежных систем и был немного разачарован, потому что Robokassa туда не входила. Чуть позже я нашел форк, который добавлял её поддержку, но он уже устарел, поэтому некоторые тесты падали ec801d3d4f8. Таким образом я решил глянуть на этот код и исправить его, а не писать всё с чистого листа.
Когда у вас есть приложение, написанное на Ruby on Rails и вы планируете добавить какую-нибудь платежную систему (например PayPal, Moneybookers или Robokassa, как в нашем случае), то первый гем о котором вы должны подумать — это active_merchant от Shopify.
ActiveMerchant — простая абстрактная платежная библиотека используемая и спонсируемая компанией Shopify.
Поэтому когда мне понадобилось добавить платежи через Robokassa в наш проект, я открыл список поддержеваемых платежных систем и был немного разачарован, потому что Robokassa туда не входила. Чуть позже я нашел форк, который добавлял её поддержку, но он уже устарел, поэтому некоторые тесты падали ec801d3d4f8. Таким образом я решил глянуть на этот код и исправить его, а не писать всё с чистого листа.
+5
Немного Rails трюков
3 мин
11K
Хочу поделиться в вами несколькими трюками, которые помогут сделать работу с Ruby on Rails лучше, быстрее, а также позволят вам много зарабатывать и более лучше одеваться.
+26
Ruby NoName Podcast S04E12
1 мин
1.3KПодкаст
http://ruby.rpod.ru/278465.htmlНовости
- Бесплатные рускоязычные скринкасты по Ruby
- Новые свежие рельсы 3.2.6, 3.1.6 и 3.0.14
- Новый инструмент для быстрого деплоя — mina
- Вышел gem RubyMass, который позволяет смотреть, какие объекты есть в текущем процессе
Evan Phoenix о RubyMass - Grocer и urbanairship
- Evented Ruby vs Node.js
- Techniques to Secure Your Website with Ruby On Rails: part1 and part2
- RSpec's New Expectation Syntax
- Вышла web-книжка Стива Клабника по конструированию Hypermedia (formerly AKA REST) APIs.
- Близится выход 2.0.0 гема Couchrest::Model. Сейчас в «репе» проекта на GitHub'е доступна
вполне рабочая бета.
+17
CoffeeScript: Классы
16 мин
22K
В ECMAScript
Содержание:
1. Основные понятия
2. Члены класса
2.1. Метод constructor
2.2. Открытые члены класса
2.3. Закрытые члены класса
2.4. Защищенные члены класса
2.5. Статические члены класса
2.6. Оператор => (fat arrow)
3. Наследование
4. Дополнительная литература
+36
Установка ruby в Ubuntu с помощью rbenv-installer
3 мин
13KRecovery Mode
На хабре уже есть несколько статей о rbenv (раз, два, три), но ни в одной не упомянут очень удобный инструмент rbenv-installer. Этой статьёй я и заполню этот пробел.
Прежде чем начну описывать установку, хочу сказать чем меня порадовал rbenv и почему я перешёл на него с RVM.
В одном из моих проектов мне понадобилось периодически запускать задачи (rake tasks) с помощью cron. Задачи для cron-а я формировал и записывал в crontab с помощью гема whenewer. Тогда я ещё пользовался RVM и cron в лог писал что-то вроде:
Искал решение с помощью гугла и нашёл в issues whenewer-а упоминание о такой же проблеме. Тикет был закрытым и упоминалось что в rbenv всё работает. Установил я rbenv и без каких-либо дополнительных настроек мои cron-задачи стали работать так как я и хотел. С того дня в новых проектах я только rbenv использую.
Прежде чем начну описывать установку, хочу сказать чем меня порадовал rbenv и почему я перешёл на него с RVM.
В одном из моих проектов мне понадобилось периодически запускать задачи (rake tasks) с помощью cron. Задачи для cron-а я формировал и записывал в crontab с помощью гема whenewer. Тогда я ещё пользовался RVM и cron в лог писал что-то вроде:
bundle: command not foundИскал решение с помощью гугла и нашёл в issues whenewer-а упоминание о такой же проблеме. Тикет был закрытым и упоминалось что в rbenv всё работает. Установил я rbenv и без каких-либо дополнительных настроек мои cron-задачи стали работать так как я и хотел. С того дня в новых проектах я только rbenv использую.
+4
Ruby NoName Podcast S04E11
1 мин
911Подкаст
http://ruby.rpod.ru/277590.html
Новости
- Зарелизились версии 3.0.13,
3.1.5 и
3.2.5 Rails - Online routes
- James Golick выпустил фреймворк
Objectify. - Русский скринкаст о Руби
- 100-ый коммит Алексея Вахова в rails.
- ActiveSupport::Configurable
- Разработчки JRuby ушли в RedHat, русский
перевод - Замена стандартному OptionParser
- Зарелизился фреймворк от рельсоводов для рельсоводов — Joosy
пост на хабре - JRuby performance
- Yet another debug for ruby
+20
Padrino для frontend разработчика
3 мин
4.8KВидимо, только второй пост на хабре с участием Padrino за 2 года ;)

Используйте HAML для генерации HTML

Используйте SASS для генерации CSS

Используйте Coffee Script для генерации JS

Скачайте шаблонное приложение, установите инструментарий и начните разработку немедленно.
10 минут и все работает даже под Windows.

Используйте HAML для генерации HTML

Используйте SASS для генерации CSS

Используйте Coffee Script для генерации JS

Скачайте шаблонное приложение, установите инструментарий и начните разработку немедленно.
10 минут и все работает даже под Windows.
+6
Ruby NoName Podcast S04E10
2 мин
785Подкаст
http://ruby.rpod.ru/276289.html
Новости
- Libskypekit and Skypekit – C and Ruby interface for Skype
- Gem для работы с Google spreadsheet
- Поддержка PostgreSQL datatypes в Rails 4
- Ruby 2.0 roadmap
- The Bastards Book of Ruby
- Continuos deployment for ruby gems
- Ruboto 0.6.0
- Mechanize 2.5
- Гем для асинхронной отсылки почты из devise - devise-async
- Глава из книги Ruby Under a Microscope
- Последняя попытка попасть на devConf
+7
Ближайшие события
Red Hat усиливает PaaS OpenShift разработчиками JRuby
2 мин
1.4KПеревод
В начале месяца появились новости о том, что Red Hat открыла код своей PaaS OpenShift. Те, кто следит за развитием этого проекта, наверное уже заметили, что в Red Hat уделяют OpenShift очень большое внимание. Помимо добавление нового функционала (из недавнего — поддержка Node.js) постоянно происходит и улучшение уже существующего. К последнему можно отнести и новость о переходе в Red Hat двух ключевых разработчиков JRuby.+26
Пишем REST приложение на Sinatra и прикручиваем Redactor. Часть 2
5 мин
2.9KВ первой части статьи мы написали REST приложение и на 1/3 настроили Redactor.js. Сегодня мы закончим наше изобретение, написав интерфейс управления загруженными изображениями, и обеспечим загрузку файлов. При загрузке файлов мы не будем использовать CarrierWave, а пойдем обычным путем Ruby.
+5
Пишем REST приложение на Sinatra и прикручиваем Redactor. Часть 1
9 мин
8.4KДанная статья рассчитана первым делом на новичков, которые только начинают изучать Ruby. После 3 недель изучения этого замечательного языка, накопились некоторые знания, которыми хочется поделиться.
Sinatra — бесплатный и открытый программный каркас написанный на языке Ruby, предназначенный для разработки веб-приложений. (ru.wikipedia.org)
Redactor — достаточно мощный и в тоже время простой и красивый в использовании wysiwyg редактор (ссылка на хабре)
Sinatra — бесплатный и открытый программный каркас написанный на языке Ruby, предназначенный для разработки веб-приложений. (ru.wikipedia.org)
Redactor — достаточно мощный и в тоже время простой и красивый в использовании wysiwyg редактор (ссылка на хабре)
+15
Переводим Rails–приложение на Ruby 1.9
3 мин
2.7KИтак, у нас есть существующее приложение Ruby on Rails, работающее под ruby 1.8.7. Казалось бы, “работает — не трогай”! Однако, переход на ruby 1.9.x для приложения, которое мы планируем развивать и поддерживать в будущем, неизбежен
+8
Массовая уязвимость в проектах на Ruby
1 мин
2.7KОпубликовано сообщение о массовой уязвимости в проектах на Ruby. Речь идёт об использовании
Дело в том, что
^ в начале строки и $ в конце строки регулярных выражений вместо \A и \z. Дело в том, что
^ и $ в таких случаях воспринимается Ruby как новые строки (\n), что открывает двери для инъекций.+30
Вникаем в метаклассы Ruby
6 мин
55KПеревод

Примечание переводчика: данный пост является логическим развитием, а точнее «предысторией» поста Вникаем в include и extend и был подсказан в комментариях к нему пользователем murr, за что ему большое спасибо.
Классы и объекты в Ruby связаны между собой достаточно затейливо и не сразу можно понять что к чему. Из-за особого назначения классов очень легко потерять из вида тот факт, что классы — это тоже объекты Ruby. От «обычных» объектов их отличает два вещи: они служат образцом для создания новых объектов и они являются частью иерархии классов. Все верно, классы могут иметь экземпляры себя (объекты), суперклассы (родителей) и подклассы (детей).
Если классы — это объекты, то у них должен быть свой собственный класс. Классом всех классов (как объектов) в Ruby является класс Class:
# один из способов создать новый класс
Dog = Class.new
# общепринятый способ создания класса
class Dog
# какая-то реализация собачьего поведения
end
Dog.class
=> Class
+37
Ruby NoName Podcast S04E09
1 мин
828Подкаст
ruby.rpod.ru/275445.html
Новости
- Rails for API applications (rails-api)
- Проекту Rusrails исполнилось 2 года
- Инсталятор rails для OS X RailsOneClick
- И еще один инсталятор для OS X — Railscar
- Инструмент для разработки на Ruby под iOS RubyMotion, и куча обзоров на него. Обзор от
Matt Aimonetti (merbist), от
PragmaticStudio - Funny Falcon выпустил свой патч для Ruby 1.9.3-p194
- Вникаем в include и extend
- What is the Ruby Top-Level?
- Метаклассы в Ruby
- Отличный рассказ про DRb на Хабре
+20