Если у вас есть небольшие различия между Rails 2 и 3 (например, переименованный метод), вы должны хорошо выполнить несколько условий.Вот пример из Haml-rails
if ::Rails.version.to_f >= 3.1
config.app_generators.template_engine :haml
else
config.generators.template_engine :haml
end
Если у вас есть существенные различия, вы должны оставить два отдельных драгоценных камня.Например, will_paginate имеет версию 2.3 для Rails 2 и версию 3.0 для Rails 3 из-за серьезного рефакторинга в Active Record 3. Разрабатывается только третья версия.
Record.find(:all, :conditions => { :foo => 'bar' }, :limit => 5) # Rails 2
Record.where(:foo => 'bar').limit(5) # Rails 3
В этомВ случае, если вам нужно поддерживать две версии, вы также можете рассмотреть 3 драгоценных камня: mygem (core), mygem-rails2, mygem-rails3.Последние два будут зависеть от ядра и повторно использовать один и тот же независимый от рельсов код.