Ruby Gems

Tips&Tricks: Установка gem’ов без генерации документации

сентября 5, 2012  |  Published in Ruby Gems, Tips&Tricks

Зачем?

Все мы знаем, что при установке gem’ов часто генерация документации занимает куда больше времени, чем сама установка gem’а, при этом никто не пользуется оффлайновой документацией. Зачем открывать новую вкладку и запускать gem server, если вся документация доступна онлайн? Если вы не пользуетесь оффлайн документацией, то зачем засорять ею жесткий диск и тратить время на ожидание ее генерации при установке gem’ов?

Для отключения генерации документации с командой gem install используют флаги —no-rdoc и —no-ri, например, так:

$ gem install rails —no-rdoc —no-ri

Однако есть вариант получше — использовать файл .gemrc в вашей home/ директории.

Просто добавьте в него следующую строку:

gem: —no-rdoc  —no-ri

И вы забудете о генерации документации навсегда!

Tags: , , ,

Tips&Tricks: Пользовательская конфигурация вашего кода (gem’а)

июля 21, 2012  |  Published in Ruby, Ruby Gems, Tips&Tricks, Расширения

Часто необходимо пользователям gem’ов позволить настраивать их на свой вкус. Как это сделать — об этом эта маленькая статья.

Добавление возможности конфигурирования делается очень просто, наиболее часто для этого используется специальный класс, но если конфигурация совсем простая, то можно обойтись Struct или хэшем. В примере ниже приведена реализация на основе класса Config, однако ее легко можно модифицировать так, чтобы использовался Struct или хэш. Очевидно, что вариант с классом конфигурации наиболее гибкий, а вариант с хэшем наиболее простой.

Read the rest of this entry »

Tags: , , ,

How to solve the «Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.» problem?

июля 4, 2012  |  Published in Ruby, Ruby Gems, Расширения

So, how to solve the «Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.» problem?

You can solve this problem by adding ‘—with-ruby-include‘ option to ‘gem install‘ command. Firstly, check your current Ruby interpreter version with this:

$ ruby -v
ruby 1.9.3p194 (2012-04-20 revision 35410) [i686-linux]

Or this:

$ rvm current
ruby-1.9.3-p194@r326

Secondly, you should install ruby gem that you want to be installed with this:

$ gem install <ruby gem name> — —with-ruby-include=$rvm_path/src/<ruby version>

For me Ruby version is ruby-1.9.3-p194. Real example:

$ gem install ruby-debug19 — —with-ruby-include=$rvm_path/src/ruby-1.9.3-p194/

Thats all! Happy developing with Ruby, friends!

Tags: , ,

Thor – божественный фреймворк для создания задач

июня 28, 2012  |  Published in Ruby, Ruby Gems, Ruby on Rails, Ruby on Rails 3

– это альтернатива для всем известного Rake. Автором Thor является небезызвестный , хотя если посмотреть на коммиты в репозитории Thor, то Катц находится только на 4 месте, но сейчас не об этом. Thor – создавался как более изящная альтернатива фреймворку Rake и это вполне удалось его авторам. Я надеюсь, что по прочтению данной статьи вы не только научитесь работать с Thor, но и замените им Rake.

Для установки thor воспользуйтесь командой:

$ gem install thor

Если вы программируете с использованием фреймворка Ruby on Rails, то Thor уже уже установлен так как находится в зависимостях у Rails и используется внутри Rails для создания генераторов.
Установив Thor у вас появится возможность использовать в консоли команду thor:

$ thor -v
Thor 0.15.3

$ thor
Tasks:
thor help [TASK] # Describe available tasks or one specific task
thor install NAME # Install an optionally named Thor file into your syst…
thor installed # List the installed Thor modules and tasks
thor list [SEARCH] # List the available thor tasks (—substring means .*S…
thor uninstall NAME # Uninstall a named Thor module
thor update NAME # Update a Thor file from its original location
thor version # Show Thor version

Прежде чем создать первую задачу Thor вы должны быть знакомы с некоторыми соглашениями:

  1. Задачи Thor имеют расширение .thor
  2. Имена файлов в которых имеются задачи должны соответствовать именам классов.
  3. Классы используются в для создания пространств имен.
  4. Каждая задача – это просто метод.

Теперь мы можем приступить к созданию первой задачи. В файл first_task.thor поместим следующий код на Ruby:

Read the rest of this entry »

Tags: , , , ,

Установка Ruby и Rails в Windows используя RubyInstaller и DevKit

апреля 15, 2012  |  Published in Ruby, Ruby Gems, Ruby on Rails, Основы

rubyinstallerУстановить Ruby в Windows почти так же легко, как и в Ubuntu. Сразу хочу предупредить, что в работе Ruby под Windows имеется несколько ограничений, особенно это касается работы с файловой системой и процессами. Также не все библиотеки Ruby (gem’ы) отлично работают в Windows, например один из самых распространенных серверов для Rails — Unicorn заточен под Linux и совсем не работает под Windows.

Read the rest of this entry »

Tags: , ,

Интервью с Иваном Шихалевым об RDot и не только

октября 8, 2011  |  Published in Ruby, Ruby Gems, Интервью

Иван, добрый день! Представься пожалуйста читателям RubyDev и расскажи кратко о себе: где работаешь, чем увлекаешься?

Ну, кратенько: Иван Шихалев, временно безработный, живу в поселке Арти Свердловской области. Интересы у меня разнообразные, иногда кажется, что будь их поменьше, было бы проще жить. Отмечу, пожалуй, следующее: я являюсь одним из редакторов FreePascal.ru (и вообще, имею непосредственное отношение к формированию русскоязычного сообщества Free Pascal), а еще играю в . Веду блог — .

Расскажи пожалуйста о своем проекте RDot, его преимуществами перед аналогами и о том, почему была выбрана именно библиотека Graphitz?

— это такой визуализатор структуры классов Ruby — именно такой, какой был нужен лично мне — с указанием не только наследования, но и подмешивания модулей посредством как include, так и extend, и с перечислением методов и констант. Его основное, пожалуй, отличие от аналогов — он не анализирует текст Ruby-библиотеки, а загружает ее и работает с реально сформированной структурой, т.е. отображает классы, модули и их методы, созданные динамически в процессе загрузки. Собственно, именно такая задача у меня изначально и возникла — увидеть динамическую структуру классов, которую не показывают стандартные средства документирования (под которыми я подразумеваю RDoc и YARD). Задача несколько экзотическая, согласен, но вполне реальная.
Read the rest of this entry »

Tags: ,

HAML в Rails

октября 2, 2011  |  Published in ClientSide, Ruby Gems, Ruby on Rails, Ruby on Rails 3, View

haml logoHAML — очень удобный язык разметки который призван заменить HTML. HAML это также шаблонизатор, который компилирует код на HAML + Ruby  в HTML, который представляется пользователю.

Мне надоел стандартный ERB, надоели закрывающие теги, надоело, что порой бывает сложно понять что во что вложено, и я решил полностью перебраться на HAML. Если вы еще не слышали о HAML, то это не означает, что HAML — это что-то экзотическое, напротив, HAML использует большинство Rails разработчиков, так активно используют, что даже удивились, почему Rails Core Team невключили HAML в Raila 3.1. как шаблонизатор по умолчанию.

Начать работу с HAML совсем просто!

Read the rest of this entry »

Tags: , , ,

Awesome Print — удобное представление объектов в IRB и не только

июля 23, 2011  |  Published in Ruby, Ruby Gems

— полезный gem авторства Махаэля (Михаила) Дворкина, который занимается тем, что предоставляет удобное представление объектов в консоли.

Для установки Awesome Print следует просто выполнить в консоли следущую команду:

$ gem install awesome_print

Awesome Print также доступен в виде Rails-плагина, в таком случае его установку следует выполнять как установку любого другого Rail-плагина:

$ ruby script/plugin install http://github.com/michaeldv/awesome_print.git

Read the rest of this entry »

Tags: , ,

Stamp — форматирование даты и времени по-человечески

июля 7, 2011  |  Published in Ruby, Ruby Gems

— совсем молодой и совсем простой и маленький gem, который позволяет в очень удобный способ форматировать дату и время.

Устанавливается Stamp абсолютно так же, как и остальные gem’ы:

$ gem install stamp

Как что работает?

Stamp добавляет в экземпляры Date и Time классов могущественный метод #stamp, который принимает шаблон в соответствии с которым производит форматирование. Чтобы поиграться — запустим сеанс irb:

$ irb
require 'stamp' #=> true

date = Date.today
  #=> #<Date: 2011-07-07 (4911499/2,0,2299161)>
date.stamp("Now: 2000/01/01")
  #=> "Now: 2011/07/07"
date.stamp("%Y,%m,%d")
  #=> "2011,07,07"
date.stamp("1 April, 1873 year")
  #=> " 7 July, 2011 year"

То же актуально и для экземпляров Time:

time = Time.now
  #=> 2011-07-07 14:02:28 +0300
ruby-1.9.2-p180 :019 > time.stamp("%H:%M:%S")
  #=> "14:02:28"
ruby-1.9.2-p180 :024 > time.stamp("23:34")
  #=> "14:02"
ruby-1.9.2-p180 :025 > time.stamp("23:34:12")
  #=> "14:02:28"

Признаться честно, stamp не всегда работает так, как хочется, примеры:

date.stamp("1-1-2003")
  #=> " 7- 7-2011" - ненужный пробел!

date = Date.new(2011,12,3)
  #=> #<Date: 2011-12-03 (4911797/2,0,2299161)>
date.stamp("%d/%Y/%m")
  #=> "03/2011/12"
ruby-1.9.2-p180 :030 > date.stamp("12/12/11")
  #=> "12/12/03" - куда делся 11 год и почему дата отформатирована именно так?

Что я думаю
Stamp — полезный инструмент, который уже можно использовать для, так сказать, простого, стандартного форматирования, однако для извращений вроде %d%Y%m он не подходит, разве что используя спецсимволы форматирования, но тогда, какой смысл использовать stamp? Будем надеяться, что автор не забросит проект и будет его развивать и в скором времени мы увидим реально мощный инструмент форматирования даты и времени в любойформат, какой только может придуматься воспаленным мозгом (хотя, зачем?). Также важным для нас — русско-/украинско-/белорусско- говорящих фактором является то, что отсутствуют наши, родные названия месяцов, хотя это и не сложно допилить в каком-нить stamp-for-SNG форке =).

Линкусики:
GitHub repo:

— онлайн форматер даты и времени (можно подсматреть спецсимволы форматирования), который принадлежит тому же Джереми Вeйскоттену, который создал gem Stamp.

автора Stamp — Джереми Вейскоттена.

Tags: ,

RubyTree — библиотека для создания древовидных структур данных

ноября 1, 2010  |  Published in Ruby Gems

ruby treeRubyTree — это библиотека позволяющая создавать и управлять древовидными структурами данных основанными на узлах, где каждый узел является одновременно и значением, и ключем, для доступа к вложенным узлам. Одной из важных особенностей / функций RubyTree является возможность  импорта и экспорта в json формат.

Библиотека RubyTree будет интересна для тех, кто разрабатывает какие-либо научные приложения — каталоги, где необходима таксономия, либо приложения, что сейчас набирают популярность, для создания гениалогического дерева и т.д. Кстати, древовидная структура данных используется и во всеми нами любимой Википедии. Read the rest of this entry »

Tags: