Quando si inizia un nuovo progetto ci si sente sempre disorientati: difficile capire da cosa cominciare, visto che le azioni da compiere sono tante. Con un’applicazione ruby on rails la procedura di bootstrap è abbastanza laboriosa ma esiste un sistema che ci aiuta a gettare le basi per un buon progetto.
Oltre a creare le cartelle con il framework, ci si deve occupare di scegliere le gemme che ci serviranno, occorre fare un progetto git, magari su github, compilare un .gitignore. Se poi usiamo RVM (che vi consiglio vivamente), è necessario creare il file di configurazione .rvmrc con la gemset appropriata. Queste sono solamente alcune delle operazioni per cominciare. E poi, quale gemma usare per Twitter Bootstrap? Lo usiamo con SASS o con LESS? Quale template engine usare? HAML, ERB o Slim? Quale database preferite tra SQLite, Mysql, MongoDB o Postgres?
Rails ci offre la possibilità di usare dei template già fatti, ovvero strutture prefabbricate su cui poi partire con lo sviluppo. Daniel Kehoe ha pubblicato un template chiamato “Rails Composer” davvero ben fatto e soprattutto comodo. Gli ultimi miei progetti sono nati da Rails Composer e ora è un elemento fondamentale nella mia “cassetta degli attrezzi“.
E’ un template che si occupa di preparare un ambiente di sviluppo completo e già ben formato. Il comando da lanciare da bash è questo:
rails new myapp -m https://raw.github.com/RailsApps/rails-composer/master/composer.rb
dove myapp è il nome dell’applicazione e della cartella che verrà creata con il progetto. Il template prevede 20 domande che serviranno per personalizzare l’applicazione sotto molteplici aspetti. Ho preparato uno screencast con shelr che vi mostra come ho creato una web app con rails usando Rails Composer in pochi minuti. Che ne dite?
Giusto per farvi un’idea, queste sono le personalizzazioni che riesce a gestire:
question Install an example application? 1) I want to build my own application 2) rails3-bootstrap-devise-cancan 3) rails3-devise-rspec-cucumber 4) rails3-mongoid-devise 5) rails3-mongoid-omniauth 6) rails3-subdomains question Web server for development? 1) WEBrick (default) 2) Thin 3) Unicorn 4) Puma question Web server for production? 1) Same as development 2) Thin 3) Unicorn 4) Puma question Database used in development? 1) SQLite 2) PostgreSQL 3) MySQL 4) MongoDB question Template engine? 1) ERB 2) Haml 3) Slim question Unit testing? 1) Test::Unit 2) RSpec question Integration testing? 1) None 2) RSpec with Capybara 3) Cucumber with Capybara 4) Turnip with Capybara question Fixture replacement? 1) None 2) Factory Girl 3) Machinist question Front-end framework? 1) None 2) Twitter Bootstrap 3) Zurb Foundation 4) Skeleton 5) Just normalize CSS for consistent styling question Twitter Bootstrap version? 1) Twitter Bootstrap (Less) 2) Twitter Bootstrap (Sass) question Add support for sending email? 1) None 2) Gmail 3) SMTP 4) SendGrid 5) Mandrill question Authentication? 1) None 2) Devise 3) OmniAuth question Devise modules? 1) Devise with default modules 2) Devise with Confirmable module 3) Devise with Confirmable and Invitable modules question Authorization? 1) None 2) CanCan with Rolify question Use a form builder gem? 1) None 2) SimpleForm question Install a starter app? 1) None 2) Home Page 3) Home Page, User Accounts 4) Home Page, User Accounts, Admin Dashboard extras Add 'therubyracer' JavaScript runtime (for Linux users without node.js)? (y/n) extras Set a robots.txt file to ban spiders? (y/n) n extras Create a project-specific rvm gemset and .rvmrc? (y/n) n extras Create a GitHub repository? (y/n)