Ruby Developer Notes Useful things

22Feb/121

Install ruby 1.9.3 with RVM and MacPorts

I have the following problem when i do just:

rvm install 1.9.3

It installs fine and works good except one bug during `cap deploy`:

/Users/pasha/.rvm/gems/ruby-1.9.3-p125@smartsourcing/gems/net-ssh-2.3.0/lib/net/ssh/buffer.rb:255: [BUG] Segmentation fault
ruby 1.9.3p125 (2012-02-16 revision 34643) [x86_64-darwin11.3.0]

Here is similar ruby bug http://bugs.ruby-lang.org/issues/5559

5Sep/101

Bundler on heroku and without feature

Since bundler 1.0 release it recommends include Gemfile.lock into repository to force exactly the same gem environment for all users. Good idea, but here is one problem occurs - we can't use Gemfile hacks like this anymore:

[cc lang=ruby]
if RUBY_PLATFORM =~ /darwin/
gem "autotest-fsevent"
end
[/cc]

This case on other platform bundler will detect what gem "autotest-fsevent" is not present in Gemfile but presents in Gemfile.lock and fails.

23Jun/101

Cross version Ruby debug with ruby-debug-wrapper

When you debuging Rails 3 application (which uses Bundler) and trying different ruby versions with RVM you have following problem: you should switch your Gemfile between ruby-debug and ruby-debug19 gems to work with 1.8 and 1.9 Rubies. ruby-debug-wrapper gem solves the problem.

Follow this steps:

  1. Install ruby-debug gem for each ruby version you will use. For example:
    [cc lang="bash" width="670"]
    # rvm use system
    # gem install ruby-debug
    # rvm use ree@rails3
    # gem install ruby-debug -- --with-ruby-include=$rvm_path/src/ree-1.8.7-2010.02/
    # rvm use ruby-1.9.2-head@rails3
    # gem install ruby-debug19 -- --with-ruby-include=$rvm_path/src/ruby-1.9.2-head/
    [/cc]
13Jun/100

Ruby 1.9 + RVM + Ruby-Debug + Bundler

Как оказалось, установка отладчика ruby-debug для руби семейства 1.9 задачка не такая тривиальная, как кажется.

Во-первых, классический gem ruby-debug вообще не собирается под 1.9, но есть портированная версия, которая именуется ruby-debug19.

Во-вторых, ruby-debug19 тоже не заводится с полпинка. По умолчанию он ищет ruby19 где-то в недрах macports. А по-скольку этот способ установки руби нынче не в моде, то прийдется указать путь к сорцам руби явно. Например, для ruby 1.9.2 head установленного через rvm это выглядит так:

10Jun/100

RVM и Rails 3

RVM (Ruby Version Manager) - это замечательный способ иметь несколько версий ruby на одной машине без головной боли. Кроме того у него есть отличная фича gemset, которая позволяет иметь несколько невзаимосвязанных наборов гемов в пределах одной версии руби.

В свете нестабильности и грядущих больших перемен в мире ruby и rails это очень востребовано. Очень удобно использовать rvm для экспериментов с rails 3 в окружении различных версий руби. Для этого достаточно сделать следующее:

[cc lang="bash" width="700"]
bash << ( curl http://rvm.beginrescueend.com/releases/rvm-install-head ) mkdir -p ~/.rvm/src/ && cd ~/.rvm/src && rm -rf ./rvm/ && git clone --depth 1 git://github.com/wayneeseguin/rvm.git && cd rvm && ./install [/cc]

5Jun/101

Нашел баг в Sequel

Недавно разбирался с замечательным e-commerce решением на ruby . Когда дело дошло до деплоя - решил попробовать heroku. Соответствующее расширение для адаптации Spree к "суровым реалиям" heroku безнадежно устарело, поэтому пришлось его переписать.

Все вроде получилось и заработало... Но вот засада: команда "heroku db:push" вдруг стала пропихивать на хост вопросительные знаки (?) вместо кириллических символов... Варианты решения проблемы путем явного указания кодировки не помогли.