Il peut être intéressant d’utiliser une ancienne version de Ruby On Rails afin de tester par exemple la compatibilité d’un de vos plugins.

Tout d’abord, pour connaître les versions présentes dans votre référentiel local de gem, tapez la commande suivante :
$ gem search rails -l
rails (1.1.6, 1.1.4, 1.0.0)
    Web-application framework with template engine, control-flow layer,
    and ORM.

On s’aperçoit que je possède les versions 1.0.0, 1.1.4 et 1.1.6 de Rails.

Supposons que je veuille créer une nouvelle application Rails mais avec une version antérieure à celle actuelle. Prenons la version 1.0.0.

Pour créer cette application il va me falloir lancer la commande suivante :

$ rails _1.0.0_ monapp

Celà aura pour effet de créer une arborescence de projet à partir du gem de la version 1.0.0. Mais ce n’est pas tout ! Si je lance la commande about on s’aperçoit que la version de rails qui est chargée est la dernière en date (à savoir la 1.1.6).

$ ./script/about
About your application's environment
Ruby version                 1.8.5 (i386-mswin32)
RubyGems version             0.9.0
Rails version                1.1.6
Active Record version        1.14.4
Action Pack version          1.12.5
Action Web Service version   1.1.6
Action Mailer version        1.2.5
Active Support version       1.3.1
Application root             D:/dev/test/monapp
Environment                  development
Database adapter             mysql

Pour pallier à ce problème, éditer le fichier /monapp/config/boot.rb et ajouter la lignes suivantes :


require_gem 'rails', '1.0.0'

Ce qui donne le fichier boot.rb suivant :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# Don't change this file. Configuration is done in config/environment.rb and config/environments/*.rb

unless defined?(RAILS_ROOT)
  root_path = File.join(File.dirname(__FILE__), '..')
  unless RUBY_PLATFORM =~ /mswin32/
    require 'pathname'
    root_path = Pathname.new(root_path).cleanpath(true).to_s
  end
  RAILS_ROOT = root_path
end

if File.directory?("#{RAILS_ROOT}/vendor/rails")
  require "#{RAILS_ROOT}/vendor/rails/railties/lib/initializer"
else
  require 'rubygems'
  require_gem 'rails', '1.0.0'
  require 'initializer'
end

Rails::Initializer.run(:set_load_path)

Et maintenant vérifiions en lançant de nouveau la commande about :

$ ./script/about
About your application's environment
Ruby version                 1.8.5 (i386-mswin32)
RubyGems version             0.9.0
Rails version                1.0.0
Active Record version        1.13.2
Action Pack version          1.11.2
Action Web Service version   1.0.0
Action Mailer version        1.1.5
Active Support version       1.2.5
Application root             D:/dev/test/monapp
Environment                  development
Database adapter             mysql

Voilà, notre application utilise bien la version 1.0.0.