Les templates Rails

| Synbioz | Bovino |

Les templates, pour les applications Rails, sont des générateurs qui vous permettent, lors de la création de votre application, d'avoir une « base » à partir de laquelle vous allez pouvoir commencer votre développement. En effet, les templates vous permettent d'installer les gems souhaitées, mais aussi, par exemple, de modifier des fichiers de configuration de l'application.

En dehors des templates, vous pouvez également créer un script qui vous permettra de créer et/ou modifier le squelette d'une application Rails ainsi que de modifier le contenu des fichiers.

Cet article a été publié avec l'aimable autorisation de Synbioz, l'article original (Les templates Rails) peut être vu sur le blog de Synbioz.

Commentez ♪

- Titre : Les templates Rails

- Auteurs : Synbioz, Bovino

- Parution : 25 juin 2012

- Licence : Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright ® 2012 Synbioz. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

Sommaire

- Création de templates

- Utilisation des templates

- Rails Apps Composer

- Rails Templater

- Conclusion et remerciements

Création de templates

Il est donc possible de créer des templates (qui ne sont autre que des générateurs) pour vos applications Rails. Elles vous permettront par la suite de gagner du temps si vos différentes applications ont une base commune.

Pour notre exemple, nous utilisons rvm pour gérer les versions de Ruby et Rspec pour les tests. Voici le contenu du fichier template.

# create .rvmrc file for rvm
create_file ".rvmrc", "rvm gemset use #{app_name}"

# add gems
gem 'mysql2'

gem 'devise'
gem 'haml'
gem 'simple_form'
gem 'whenever'
gem 'kaminari'
gem 'hpricot'
gem 'ruby_parser'
gem 'jquery-rails'

gem 'capistrano'
gem 'capistrano-ext'

gem "rails3-generators", :group => [ :development ]
gem "rspec-rails", :group => [ :development, :test ]
gem "ffaker", :group => :test
gem "autotest", :group => :test

# install gems
run 'bundle install'

# edit database config file
file 'config/database.yml', <<-END
development:
adapter: mysql2
database: development_database
host: localhost
username: username
password: password
encoding: utf8
socket: /tmp/mysql.sock

test:
adapter: mysql2
database: test_database
host: localhost
username: username
password: password
encoding: utf8
socket: /tmp/mysql.sock
END

rake "db:create"

generate 'simple_form:install'
generate 'rspec:install'

inject_into_file 'config/application.rb', :after => "config.filter_parameters += [:password]" do
<<-eos

# Customize generators
config.generators do |g|
g.stylesheets false
end
eos
end

# setup devise
generate "devise:install"
generate "devise User"
generate "devise:views"
rake "db:migrate"

# remove defaults files
remove_file 'public/index.html'
remove_file 'rm app/assets/images/rails.png'

# copy database.yml file
run 'cp config/database.yml config/database.example'

# add database.yml to .gitignore
run "echo 'config/database.yml' >> .gitignore"

# setup git and initial commit
git :init
git :add => "."
git :commit => "-a -m 'initial commit'"

say <<-eos
============================================================================
Your app is now available.
eos

Vous avez donc, avec ce template, créé votre base de données, installé les gems nécessaires, configuré Devise ou encore initialisé votre dépôt Git. À partir ce fichier .rb, vous pourrez générer vos futures applications. Il est possible, si besoin, d'ajouter, modifier ou supprimer des actions.

Il est possible de trouver sur le Web différents templates afin de générer vos applications, sur le dépôt Github de RailsApps par exemple.

Utilisation des templates

Une fois que vous avez créé votre template ou bien que vous en avez récupéré un existant, vous pouvez donc l'utiliser pour générer votre squelette d'application. Pour cela, il suffit d'utiliser la commande suivante :

rails new my_app_name -m my_template.rb

Il est possible d'appeler une URL plutôt qu'un fichier .rb si vous souhaitez utiliser un template préexistant.

rails new my_app_name -m https://gist.github.com/722911.txt

Appliquer un template sur une application existante est également possible via la commande suivante :

rake rails:template LOCATION=my_template.rb

Un screencast de Ryan Bates est disponible sur la création de templates pour Rails 2.3.

Rails Apps Composer

Nous venons de voir qu'il était possible de créer soi-même ses templates. Cependant, il existe des gems pour vous aider dans cette démarche.

RailsAppsComposer vous propose un certain nombre d'éléments afin de composer vous-même des templates. Afin de pouvoir utiliser celle-ci, il vous faut l'installer. Dans ce cas, on ne peut utiliser Bundler,car nous n'avons pas encore d'application créée, il est donc nécessaire de passer par la commande suivante :

gem install rails_apps_composer

Une fois installée, vous pouvez voir la liste de tous les éléments que vous pouvez ajouter à votre application lors de la création de cette dernière via Rails App Composer :

rails_apps_composer list

On retrouve notamment dans cette liste Devise, Mongoid ou encore Git. Il est donc important de savoir quels sont les besoins du projet avant de créer l'application afin d'ajouter les outils intéressants.

À partir de cette liste, vous pouvez faire votre choix parmi les outils proposés. Pour générer votre application avec ceux que vous avez choisis, il vous faut utiliser la commande suivante :

rails_apps_composer new my_app_name -r devise haml

Il est également possible de modifier ou d'ajouter des outils dans les recettes existantes. Pour cela, vous pouvez cloner le dépôt git de la gem puis remodeler ces recettes. Il est nécessaire d'installer la gem mg pour le développement de votre version de Rails App Composer. Plus d'informations sont disponibles sur la page Github.

Rails Templater

Rails Templater est une gem permettant de créer votre application. Tout comme pour RailsAppsComposer, il faut installer cette gem via la commande gem install :

gem install rails_templater

Une fois terminée, vous pouvez créer votre application via la commande suivante :

templater my_app

Ensuite, la gem vous pose les questions nécessaires afin de savoir quelles sont les gems qui vous seront utiles. Votre application sera donc créée avec les gems choisies et vous pourrez ensuite commencer le développement de cette dernière.

Conclusion et remerciements

Il est donc possible de créer des templates (ou d'utiliser des templates existants) pour vos applications, ce qui aura pour conséquence de vous faire gagner du temps lors de la création de vos prochaines applications. En effet, le fait de créer automatiquement la « base » de ces dernières via un générateur vous évite de refaire à chaque création les mêmes manipulations.

Le temps que vous allez pouvoir consacrer à la création de votre template va être rentabilisé par la suite lors de la création de nouvelles applications, il ne faut donc pas se laisser décourager par l'investissement initial en temps.

Cet article a été publié avec l'aimable autorisation de Synbioz, l'article original (Les templates Rails) peut être vu sur le blog de Synbioz.

Nous tenons à remercier FirePrawn et jacques_jean pour leur relecture attentive de cet article.