Как стать автором
Обновить
  • по релевантности
  • по времени
  • по рейтингу

VIM как Rails IDE в стиле TexMate благодаря набору скриптов от Akita

Ruby
Это мой первый пост на Хабре, прошу не судить строго :)

В далекие времена, когда я ещё писал на c\c++, я пользовался замечательным редактором VIM, знал минимальный набор vim-фишек, и был в целом доволен его работой. Несколько позже я стал изучать Rails и программировать на Ruby. Я достаточно быстро понял, что базовой поставкой VIM не обойтись, попробовал пару найденных в интернете руководств по доведению VIM до уровня полноценной IDE, наткнулся на подводные камни, и быстро сдался. В тот момент мне хотелось изучать в первую очередь именно Rails, а не VIM.
Немного помытарился с разными другими редакторами и IDE типа Aptana, Geany, Eclipse и т.п. пока не наткнулся на полностью, на тот момент, удовлетворящий меня Netbeans. О Netbeans можно писать, да и написано, немало хорошего. Как IDE для разработки на Ruby Netbeans просто прекрасен. Я и сейчас использую его в случае, если работаю в Windows. Но однажды я оказался на длительное время не за своим, а за чужим ноутбуком, на котором уже стоял VIM, в месте, где интернет-трафик был сильно ограничен. А Таксовик требовал срочной доработки. Выкачивать ~60мб Netbeans и ещё n-ное количество мб на плагины было не этично, я и снова начал освоение VIM. И к моей радости довольно-таки быстро наткнулся на набор скриптов от бразильца Akita on Rails и скринкаст в придачу. Он, как я понял, собрал кучу полезных плагинов вместе и чуть-чуть дописал конфиг. Всё, о чём будет говориться ниже верно не только для Ruby, но и для других языков типа C, PHP и прочее, готовые наборы сниппетов (о них далее) в комплекте есть и для них.

Основные фишки этого набора скриптов


  1. FuzzyFinderTexMate — очень удобный поиск файлов в проекте по ctrl+f. К примеру, чтобы найти файл config\routes.rb надо набрать rorb. Или даже и того меньше :)
  2. Набор сниппетов из TexMate и некоторое количество своих (в смысле, NERDSnippets). Очень удобно, набираешь vf + TAB — получаешь validates_format_of :<+attribute+>, :with => /<+regex+>/<+, :on => :<+create+>, :message => "<+is invalid+>"+>, где по TAB скачешь между параметрами, заключёнными в <+...+>. Сниппеты есть для всего, чего угодно, их полный список можно посмотреть в папке snippets в директории с файлами кофигурации VIM.
  3. Дерево проекта, реализованное с помощью NERDTree. Доступно по \+p (обратный слеш и символ p). Переключение с дерева проекта в окно редактирования кода и обратно осуществляется по ctrl+w и стрелка (куда будет стрелка, туда курсор и перескочет), в самом же дереве o — открыть\закрыть папку\файл, R (shift+r) — обновить дерево и по вопросу(?) довольно внятная справка по горячим клавишам.
  4. Подсветка кода (rb, html, rjs, js, erb и т.п.)
  5. Возможности из rails.vim типа перехода по gf на файл модели, если курсор стоит на вызове, например, конструктора. Всяческие :Rake, :Rgenerate и т.п.
  6. Ну и все возможности и навороты VIM, за которые его так любят :)


А вот и скринкаст от автора на эту тему (рекомендую к просмотру):


Перестало работать. Ссылка на другом видеохостинге: blip.tv/file/3765175

Надеюсь, вы уже потираете руки, потому что vim — это очень быстрый, удобный, расширяемый и очень не требовательный к ресурсам компьютера редактор.
Как же всего этого добиться?
Всего голосов 32: ↑25 и ↓7+18
Просмотры22K
Комментарии 36

Irwi — Wiki в Rails-приложениях

Чулан
Я обнаружил то, что для такой, казалось бы, стандартной задачи как добавлени Wiki-функциональности в Rails нет полноценного готового плагина, которое бы легко интегрировалось с существующим приложением. В связи с этим был написан свой.

Основными критериями при разработке были:
  • Возможность быстрой интеграции в приложение.
  • Хорошая расширяемость.
  • Отсутствие чужого кода (в смысле кода плагина) в приложении, к чему часто приводит использование генераторов. В этом смысле я пытался равняться на Authlogic.

То, что получилось представляет из себя что-то среднее между генератором (что обеспечивает хорошую расширяемость и модифицируемость) и engine'ом (чтобы можно было легко обновлять его).

Читать дальше →
Всего голосов 6: ↑6 и ↓0+6
Просмотры267
Комментарии 6

Ruby And Rails barcamp — Киев, 26 сентября

Я пиарюсь
Несмотря на растущую популярность языка Ruby и веб-фреймворка Rails на западе, эти, без сомнения, замечательные технологии до сих пор очень плохо освещены в Украине. Именно поэтому инициативной группой coffee'n'code было решено организовать первый в Украине баркемп посвященный Ruby и RoR.

К участию в баркемпе приглашаются как опытные Ruby-программисты так и новички или интересующиеся. Соответственно доклады планируются как на продвинутые темы, так и на более общие.
Ну и естественно мы очень будем рады докладчикам, которым достанутся все внимание и благодарность публики: оптимизировали фреймворк? Придумали ноу-хау? Создали собственный гем или исследовали до дыр чужой? — Расскажите об этом!

Дабы продемонстрировать всю мощь руби, мы так-же планируем проводить Show Time проектов на Ruby созданных участниками кемпа.

В общем, заходите на сайт, регистрируйтесь обсуждайте и общайтесь в Google-группе ну и конечно ждем вас 26сентября лично. (место проведения мы обьявим чуть позже и уведомим всех зарегистрировавшихся посредством электронной почты)
Всего голосов 24: ↑20 и ↓4+16
Просмотры439
Комментарии 14

Сборка Ruby, RubyGems и Ruby on Rails в новом Snow Leopard

Чулан
Перевод
Это инструкции по сборке и установке 64-битной версии Ruby, Rubygems и Ruby on Rails в новой Mac OS X 10.6 Snow Leopard.

Плюсы собственной сборки Руби в /usr/local описаны тут и здесь.

Читать дальше →
Всего голосов 8: ↑4 и ↓40
Просмотры344
Комментарии 14

Уязвимость в RubyOnRails затронула Twitter, но не пользователей IE8

Internet Explorer
На прошлой неделе стало известно об уязвимости в популярном движке веб-разработки Ruby On Rails, основанной на Cross-site scripting (XSS).

Уязвимость добралась до многих популярных сервисов, в том числе пресловутого Твиттера. Ошибка закралась в работу с Unicode и позволяла воспроизвести произвольный код на JavaScript. Подробную информацию о данном инциденте можно почитать на Ars Technica. Ошибка была оперативно исправлена, однако учитывая аудиторию сервисов, могла иметь существенный негативный эффект.

В то же время уязвимость не затронула пользователей Internet Explorer 8. IE8 имеет встроенный XSS-фильтр, который автоматически защищает пользователей от подобного рода атак – происходит блокировка кода и высвечивается предупреждающее сообщение сверху.

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

Напомню, что по результатам недавнего исследования NSS Labs Internet Explorer 8 является самым безопасным браузером в области защиты от вредоносных программ и фишинга.
Всего голосов 118: ↑63 и ↓55+8
Просмотры629
Комментарии 107

Вышел Spree 0.9.0

Чулан
Intro: Spree — довольно мощный и гибкий движок для создания интернет-магазинов, написанный на Ruby on Rails.

В числе нововведений:
  1. Улучшена возможность настройки внешнего вида
  2. Полиморфные калькуляторы для расчёта скидок, налогов и стоимости доставки
  3. Возможность создавать купоны на скидку
  4. Возможность привязывать изображения к отдельным вариантам товара
  5. Базовая поддержка фильтрации списка товаров по разнообразным критериям
  6. Полная совместимость с RoR 2.3.4
  7. Улучшена поддержка интернационализации

Полный список примечаний к релизу

P.S. Для адаптации Spree к российским реалиям существует расширение spree-russian-adaptation
Всего голосов 3: ↑3 и ↓0+3
Просмотры200
Комментарии 4

Повышаем производительность Ruby on rails приложений с помощью ActiveMQ

Ruby on Rails
В своём посте хочу рассказать о возможности использования ActiveMQ в проекте написанном на фреймворке Ruby on rails.

Что такое Message Queue?


MQ – это архитектура обмена сообщениями между компонентами приложения в асинхронном режиме. Т. е. отправитель и получатель могут взаимодействовать в разное время. Состоят такие системы из producer'а (отправителя) и consumer'a (получателя) которые взаимодействуют между собой через broker.

Используя такие системы можно существенно увеличить производительность приложения, выполняя код в асинхронном режиме. Допустим у вас есть код который очень замедляет выполнение какой то части на вашем сайте, чтобы пользователь не ждал завершение работы такого кода, лучше его выполнить в асинхронном режиме. Несколько простых примеров:
— генерация thumbnails;
— сбор статистики;
— рассылка писем/сообщений;
— удаление данных с таблиц;
— индексация данных;
— импорт данных в базу.

Таких примеров может быть много, думаю, каждый может найти часть кода у себя в проекте, который можно вынести для выполнения в асинхронном режиме.
Читать дальше →
Всего голосов 9: ↑9 и ↓0+9
Просмотры7.8K
Комментарии 4

Установка Fat Free Crm на Apache+Phusion Passenger

Чулан
Недавно мне поставили задачу развернуть бесплатную CRM с веб-интерфейсом. После недолгих поисков в интернете я наткнулся на Fat Free Crm. На сайте я не нашел инструкций по установке и поэтому ставил по наитию. Надеюсь, что мой опыт по установке поможет кому-нибудь.
UPD Дополнено на основании комментариев.
Читать далее
Всего голосов 5: ↑5 и ↓0+5
Просмотры744
Комментарии 15

Примеры использования языкоориентированного программирования

Ненормальное программирование
Идея language oriented programming (LOP), состоит в том, что во время разработки программы, постоянно создаются миниязыки. Они могут как расширять основной язык разработки, так и быть отдельными языками. Лучшим языком для LOP является Common Lisp с его макросами, но здесь речь пойдёт не о нём. Примеры использования LOP с Common Lisp советую посмотреть в замечательной книге Peter Seibel Practical Common Lisp. Я считаю, что LOP один из самых простых и эффективных способов программирования. Мы описываем задачу и предметную область на самом подходящем для этого языке, а потом стараемся его реализовать.

Я разрабатываю браузерные игры на Ruby, поэтому часто использую LOP, как для расширения языка и встроенных DSL (Ruby позволяет делать это очень хорошо), так и для создания миниязыков связанных со сложной игровой механикой. В этой статье я рассмотрю простое расширение основного языка, встроенный мини-DSL и два не встроенных языка. Буду приводить примеры в близкой мне тематике, надеюсь они будут вполне понятны.

Читать дальше →
Всего голосов 35: ↑34 и ↓1+33
Просмотры1.6K
Комментарии 18

Хостинг для Ruby On Rails приложений

Ruby on Rails
Добрый день, Хабр!

Встала у меня проблема выбора хостинга для своих Ruby On Rails проектов. На сервере компании, где я работаю я их больше размещать, по определённым причинам, не могу. Поэтому, Хабр, прошу тебе сказать мне, каким хостингом лучше пользоваться и почему.

Спасибо.
Всего голосов 74: ↑42 и ↓32+10
Просмотры27K
Комментарии 67

Автозавершение для Rake

Ruby


Автозавершение в bash’е по Tab’у — это невероятно удобная вещь. И оно точно нужно для rake, которым каждый программист на Ruby пользуется часто.

Особо ленивые программисты уже давно прописали самодельные скрипты в своих .bashrc. Но настоящий дзен-программист не должен любить велосипеды и чтит репозитории и пакеты. Поэтому я собрал скрипт в пакет и выложил в Ubuntu on Rails PPA.

Установка


Ubuntu
  1. Добавляем Ubuntu on Rails PPA:
    $ sudo add-apt-repository ppa:ubuntu-on-rails/ppa
  2. Устанавливаем пакет rake-completion:
    $ sudo apt-get install rake-completion
Другие UNIX
  1. Клонируем репозиторий:
    $ git clone git://github.com/ai/rake-completion.git
  2. Копируем скрипт в системную папку:
    $ sudo cp rake-completion/rake /etc/bash_completion.d/.
Читать дальше →
Всего голосов 33: ↑28 и ↓5+23
Просмотры1.3K
Комментарии 24

Ruby+Cygwin+Win или ещё один способ установить RoR

Чулан
И так для установки RoR по быстрому (ну может вам InstantRails не нравится :) ) требуется:

* Cygwinкачаем тут

Устанавливаем всё как есть по дефолту, когда доходим до выбора Mirror-ов, я бы советовал выбрать «mirror.mcs.anl.gov» (на некоторых других наблюдалось отсутствие компонентов). И так требуется выбрать:
SQLite, gcc, make и интерпретатор Ruby:
Читать дальше →
Всего голосов 2: ↑1 и ↓10
Просмотры2.8K
Комментарии 1

Визуальный сахар для ActiveRecord

Ruby
Каждый, кто разрабатывал приложение на RoR знает, что в консоли (./script/console) не слишком удобно просматривать ActiveRecord объекты, они имеют мягко говоря не читабельный вид

Например в моем последнем проекте есть модель Schema
Читать дальше →
Всего голосов 40: ↑32 и ↓8+24
Просмотры991
Комментарии 33

Backup My App – резервное копирование сайтов на Ruby On Rails

Ruby on Rails
Привет, ruby-on-rails-разработчики. Я работаю программистом в Теориях и практиках и хочу рассказать про Backup My App – сервис бекапа для ror-приложений, который мы используем.

Его придумали и сделали ребята, с которыми я работаю; они как-то раз выяснили, что некоторые хостинги умеют подчистую удалять данные и сразу после этого начали мечтать о простом резервном копировании.

Как это работает

Сервис платный: есть бесплатный тарифный план только для одного приложения на один гигабайт, либо нужно платить за 5 гигабайтов 3 доллара в месяц, за 100 гигабайтов – $60. После регистрации нужно
  • установить плагин
    $ script/plugin install git://github.com/crocoduck7/backupmyapp.git
  • запустить генератор
    $ script/generate backupmyapp KEY=выданный ключ
а потом отправить изменения на сервер. После этого сайт – код, база данных, файлы – начнет бекапиться.

Что это даст



Это даст ежедневные автоматические бекапы с предпросмотром в браузере, загрузкой, восстановлением и просмотром статистики за просто так. Я считаю, что это чудо.
Всего голосов 36: ↑29 и ↓7+22
Просмотры852
Комментарии 35

Rails и полиморфные связи

Ruby on Rails
В большинстве руководств по Rails, которые мне попадались в руки, в примерах по полиморфным связям есть интересная особенность выбора типа для этих связей, о которой и пойдет речь в этом посте.
Читать дальше
Всего голосов 28: ↑20 и ↓8+12
Просмотры4.8K
Комментарии 24

Полиморфные связи

Ruby on Rails
На днях в блоге Ruby on Rails появилась статья о полиморфных связях, в которой автор писал всякие разные вещи, но при этом забыл упоминуть, как их использовать и зачем они нужны (потом, конечно же, исправился, но все равно написал достаточно поверхностно).
Поначалу я даже испугался, что это моя статья каким-то непостижимым образом вырвалась из «черновиков» и попала в общую ленту. Потом разобрался, собрался с мыслями, и решил таки дописать свою.

Что же такое полиморфные связи и для чего они нужны? В одном из своих скринкастов Ryan Bates уже рассказывал об этом, и я ни в коем случае не хочу рассказывать то же самое. Ситуация была следующей:
у нас есть модели Статьи, Фотографии и События. А еще есть модель Комментарии. А еще очень хочется все комментарии (комментарии статей, фотографий и событий) хранить в одной таблице.
Статей по этой проблеме в интернете очень много, но бывают и случаи «наоборот». Далеко ходить не нужно, давайте попробуем разработать функционал постов Хабрахабра!
Читать дальше →
Всего голосов 58: ↑49 и ↓9+40
Просмотры9K
Комментарии 37

Создание мульти-модельных форм

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

# Старый вариант (приблизительный)
def create
  @owner = Owner.new(params[:owner])
  ...
  if @owner.save
    @car = Car.new(params[:car])
    if @car.save
    ...
end

# Новый вариант, Rails 2.3+
def create
  @owner = Owner.new(params[:owner])
  ...
end


Где же магия?
Всего голосов 64: ↑54 и ↓10+44
Просмотры18K
Комментарии 16

19 необщеизвестных приёмов

Ruby on Rails
Перевод
Заметка не новая, но я уверен, что и сейчас не все знают всё нижеперечисленное (Здесь и далее курсив переводчика).

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

Замер скорости в контроллерах — это очень просто. Используйте метод benchmark в любой модели.
Читать дальше →
Всего голосов 41: ↑32 и ↓9+23
Просмотры1.9K
Комментарии 30

Rails 2.3.5 + mod_rails + MAMP на OSX Tiger

Чулан
Странно но я не нашел в сети ни одного внятного мануала по установке на OS X рельсов с mod_rails — нового (относительно) модуля для Апача, избаляющего от головной боли при деплое. Все мануалы какие-то устаревшие, то Mongrel, то FastCGI. Как ни странно, в этом не оказалось ничего сложного — получился эдакий зомби из старых туториалов и пары новых действий.
Читать дальше →
Всего голосов 8: ↑7 и ↓1+6
Просмотры251
Комментарии 6

Полиморфные связи. Маленькое дополнение

Ruby on Rails
В декабре на Хабре была хорошая статья, о полиморфных связях в Рельсах. Вот она. Перед тем как читать дальше, пожалуйста ознакомьтесь с ней.
Однако, у автора статьи осталось несколько неотвеченных вопросов. Вот на них то мы сегодня и найдем ответы.
Читать дальше
Всего голосов 35: ↑30 и ↓5+25
Просмотры1.1K
Комментарии 6