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.
Il est donc possible de créer des templates (qui ne sont autres que des générateurs) pour vos applications Rails. Elle 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.
Une fois que vous avez créer 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.
Nous venons de voir qu’il était possible de créer soit 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 choisi 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épot 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 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é, 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.
Il est donc possible de créer des templates (ou d’utiliser des templates existantes) 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 générer automatiquement la “base” ce 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.
L’équipe Synbioz.
Libres d’être ensemble.