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

3May/111

Keep views simple

Some times you need complex logic in views to filter some fields from unregistered users and show default message for blank fields. This case instead of tons if statements you can use nifty helpers with the power of ruby blocks. Like this:

27Sep/100

Как заставить PostgreSQL правильно сортировать UTF8 кириллицу на Mac OS X

Как известно, PostgreSQL очень капризен к окружению в котором он работает. Он использует настройки окружения для определения правил сортировки, преобразования в строчные и заглавные буквы, работы с датами и т.д. Точнее эти настройки он высасывает из окружения в момент инициализации кластера, и в дальнейшем они уже не имеют значения.

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.

2Aug/100

How to run Rails 3 rc on heroku

Heroku is awesome! You can easily run Rails 3 Beta on Heroku without any hacks. But if you want run Rails 3 RC where will be a problem: Rails 3.0.0.rc depends on Bundler 1.0.0.rc but Heroku now supports only Bundler 0.9.26. So you can't run app based on Rails 3.0.0.rc gem easily on Heroku now.

27Jul/106

Rails 3 + Ruby 1.9 = борьба с кодировками

Посвящается Rails 3.0.0.rc

Недавно пробовал покатать Rails EDGE на Ruby 1.9.2-head и конечно же нарвался на проблему с кодировками. Однако их оказалось не так много как я предполагал.

Для начала надо убедиться что в файле config/application.rb прописано config.encoding = "utf-8". Это позволяет сэкономить нервы с кодировкой шаблонов. Но именно шаблонов, для моделей и контроллеров надо указывать специальный комментарий вначале файла:

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]

8Jun/101

Получить HTML без запуска сервера

Нашел замечательный способ получить содержимое HTML страницы проекта на рельсах из консоли без запуска сервера:
[cc lang="ruby"]
require 'config/environment'
require 'console_app'

app.get '/events'
body = app.response.body
[/cc]
Надо будет запомнить.

Tagged as: , , 1 Comment