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.