IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdf
Ruby on Rails survival guide of an aged Java developer
1. Ruby on Rails sur vival guide
of an aged Java developer
or
how to get a project released without knowing the language
and neither the framework
Gian Carlo Pace - RubyDay - 10/06/2011 - Centro Congressi Milanofiori http://www.thinkgeek.com/gadgets/tools/a396/
3. “Quando la vita rovescia la
nostra barca, alcuni affogano
altri lottano strenuamente
per risalirvi sopra.
4. Gli antichi connotavano il gesto
di tentare di risalire sulle
imbarcazioni rovesciate con il
verbo «resalio».
5. Forse il nome della qualità di chi
non perde mai la speranza e
continua a lottare contro le
av versità, la resilienza deriva
da qui.”
(Resisto Dunque Sono, Pietro Trabucchi - Casa editrice Corbaccio 2009)
13. The standby...
we must put in standby the
project you are working on
ok!
you’ll work on a new project
using Java, so you’ll get the
chance to learn it
good!
manager coldfusion team
14. fast prototype
...ah, a last comment. We need a
fast prototype for the project
to study the business in
advance!
!!!
!!!
manager coldfusion team
34. Rails Satisfaction
$ rails new blog
$ cd blog/
$ rake db:create
$ bundle install
$ rails server
=> Booting WEBrick
=> Rails 3.0.7 application starting in development on http://0.0.0.0:3000
=> Call with -d to detach
=> Ctrl-C to shutdown server
[2011-06-09 13:59:25] INFO WEBrick 1.3.1
[2011-06-09 13:59:25] INFO ruby 1.9.2 (2010-08-18) [x86_64-
darwin10.5.0]
[2011-06-09 13:59:25] INFO WEBrick::HTTPServer#start: pid=30347
port=3000
36. Rails Installation on Windows
"If you’re working on Windows, you should be aware that
the vast majority of Rails development is done in Unix
environments...”
“...If at all possible, we suggest that you install a Linux
virtual machine and use that for Rails development, instead
of using Windows."
(http://guides.rubyonrails.org/getting_started.html)
37. Ruby vs Java: similarities
Memory is managed for you via a garbage collector.
Objects are strongly typed.
There are public, private, and protected methods.
There are embedded doc tools (Ruby’s is called RDoc).
38. Ruby vs Java: differences
You don’t need to compile your code. You just run it directly.
All member variables are private. From the outside, you
access everything via methods.
Parentheses in method calls are usually optional and often
omitted.
Everything is an object.
There’s no static type checking.
Variable names are just labels. They don’t have a type
associated with them.
http://www.ruby-lang.org/en/documentation/ruby-from-other-languages/to-ruby-from-java/
42. Ruby Language :symbols
Symbols are constant names that you
don’t have to predeclare and that are
guaranteed to be unique.
NORTH = 1 :north
EAST = 2 :east
SOUTH = 3 :south
WEST = 4 :west
43. Ruby Language: code blocks
Code blocks are chunks of code you can
associate with method invocation almost
as if they were parameters
44. Ruby Language: code blocks
def call_block
puts “Start of method”
yield
yield
puts “End of method”
end
irb(main):008:0> call_block { puts 'In the block' }
Start of method
In the block
In the block
End of method
=> nil
45. Rails
Rails is a web application development
framework written in the Ruby language
DRY
Convention Over Configuration
RESTful Acrhitecture
MVC Pattern Based
ORM Based
46. Rails: bundler
Dependency manager
$ bundle install
Using rake (0.9.2)
Using abstract (1.0.0)
Using activesupport (3.0.7)
Using builder (2.1.2)
Using i18n (0.5.0)
Using activemodel (3.0.7)
...
Your bundle is complete! Use `bundle show [gemname]` to see where a
bundled gem is installed.
$
47. Rails: rake
rake means ruby make
$ rake -T
rake db:create # Create the database from config/
database.yml for the current Rails.env (use db:cre...
rake db:drop # Drops the database for the current
Rails.env (use db:drop:all to drop all databases)
rake db:fixtures:load # Load fixtures into the current
environment's database.
rake db:migrate # Migrate the database (options:
VERSION=x, VERBOSE=false).
rake db:migrate:status # Display status of migrations
...
Benvenuti a tutti mi chiamo Gian Carlo Pace e sono il leader del JUG Milano e sono 192 giorni che non programmo in Java.\nLo speech è di livello introduttivo anche perché non potrebbe essere diversamente dato che sono in posizione socratica. \nsapiente è soltanto chi sa di non sapere - dotta ignoranza\novvero so di non sapere nulla. insomma io per primo sono un n00b per cui probabilmente commetterò imprecisioni che spero perdoniate. \n
Comunque oggi vi vorrei parlare della storia di uno switch di un'azienda piccola ma agguerrita da java/coldfusion a ruby on rails e di tutte le difficoltà che abbiamo dovuto incontrare per portare a casa la pagnotta e si spera rendere felice un cliente. \n\n
La storia comincia quando arrivo nell'azienda in cui lavoro attualmente in cui fondamentalmente ci sono due team uno java ed uno coldfusion con progetti e know how ben distinti. L'azienda nasce dalla fusione di due aziende precedenti che si occupavano di progetti differenti ma vuole mettere a frutto la sinergia delle varie competenze ed estrazioni che sembrano essere compementari ma la cosa stenta a succedere in quanto i due team presi dal lavoro quotidiano difficilmente riescono a vedersi se non alla macchinetta del caffé o a pranzo. \n
Un giorno arriva un grosso cliente dell'azienda che chiede il rifacimento di un'applicazione coldfusion.\nL'applicazione è nata con una textbox ed oggi ha la form principale con 136 campi. Si parla di 7 anni di sviluppi che affastellano feature ed un database che stenta a seguire le esigenze del cliente sia di performance (ricerche avanzate lentissime) che di business: l'applicazione non rispecchia più la situazione del business attuale. Il codice diventa viscoso: ovvero cosa meno il workaround che una soluzione corretta. \n\n
Altro problema: un altro cliente mette in standby lo sviluppo di uno del secondo progetto principale. Le persone del secondo progetto dovrebbero essere allocate ad un progetto interno che prevede una prima fase di prototipizzazione. Su quale linguaggio? Potrebbe essere la volta buona che iniziamo ad unificare l'azienda con direzione Java. \nPerò dire Java e fast prototyping non è proprio la stessa cosa. \n\n
Gli sviluppatori coldfusion avrebbero dovuto imparare cose come Spring, Hibernate, un framework web a scelta (flex? altro linguaggio), Maven application server...\n\n
\nma subito appare un problema \ndifficile fare fast prototyping a causa di una curva di apprndimento particolarmente lenta\n
Nel frattempo il progetto di rifacimento del software in java + flex parte a novembre 2010. \n\n
Ulteriore complicazione data la pletora di linguaggi e di esperienze personali che costituiscono il team ci sono visioni abbastanza differenti sulle architetture e approcci allo sviluppo. Flex / HTML5 + Js ? Restful?\nPartono flame e trolling sulla mailing list interna ma nonostante le discussioni non si riesce a trovare una quadra. \n
Ulteriore complicazione data la pletora di linguaggi e di esperienze personali che costituiscono il team ci sono visioni abbastanza differenti sulle architetture e approcci allo sviluppo. Flex / HTML5 + Js ? Restful?\nPartono flame e trolling sulla mailing list interna ma nonostante le discussioni non si riesce a trovare una quadra. \n
Si lavora per un mese ottenendo solo una form malfatta in flex con una lentezza colossale.\nCresce il malumore ed il management se ne accorge. Occorre una soluzione dirompente.\n\n
Riunione con gli sviluppatori tutti contingentati. Si decice di cambiare radicalmente tecnologia su cui si baserà lo sviluppo aziendale da qui in avanti in modo democratico. \n
Si profilano dei candidati che devono poter prototipizzare velocemente e avere una robustezza enterprise e si farà scouting in pair. I candidati sono stati Django, Rails, Play e Grails.\nDopo quattro giorni di dure prove di tutto il team, indovinate chi ha vinto? Rails. \n\n
Ha vinto soprattutto per la community e perché inizia ad essere un framework molto maturo e quindi adatto sia la fast and furios che all'enterprise.\nE poi ha una community piena di troll basta guardare il thread che è uscito fuori su coffescript e questo rispecchia molto la nostra azienda. \n\n
Ha vinto soprattutto per la community e perché inizia ad essere un framework molto maturo e quindi adatto sia la fast and furios che all'enterprise.\nE poi ha una community piena di troll basta guardare il thread che è uscito fuori su coffescript e questo rispecchia molto la nostra azienda. \n\n
Per cui ecco che esce la resilienza aziendale, la capacità di risalire sulla barca rovesciata. Si ripianifica il progetto che doveva essere finito in tre mesi di tre sviluppatori lasciando la deadline fissa e aggiungendo due sviluppatori si pensa di farlo in due mesi. Senza alcuna esperienza del linguaggio ruby, né del framework rails e senza nessuna idea dei tempi che occorrano né per apprenderli né per sviluppare.\nresilienza alle volte fa rima con incoscienza.\n\n
\n
Prima cosa abbiamo comprato libri sulla neonata amazon.it.\n\n
Poi abbiamo contattato amici che potessero fornirci un corso acceleratissimo persgrossarci dei rudimenti base.\nE abbiamo trovato Paolo Montrasio. \nNel frattempo che facevamo il corso abbiamo mosso i primi passi con i tutorial sia di ruby che di rails e successivamente abbiamo cominciato a sviluppare principalmente in pair per diffondere la conoscenza le prime user stories più semplici.\n\n
\n
Io ho fatto casino e devo dire che se siete usi a compilarvi i vostri pacchetti unix ricompilare ruby vi dà una qualche sicurezza di un mondo che conoscete e che in qualche modo potete dominiare meglio. Anche perché dovrete ancora comprendere come e dove vengono installate le gemme.\n\nrvm in prima battuta vi aiuta a switchare da una versione ad un altra di ruby ma in effetti fa molte più cose. Il tutto viene spiegato qui: https://rvm.beginrescueend.com/rvm/myths/\n\n
In effetti di Virtual Machines per far girare ruby ce ne sono un po'\nMRI/YARV (ruby) VM di default (green threads)\nRubinius (rbx) - http://rubini.us/ - è simile concettualmente alla JVM con un Justi in time compiler Bytecode compiler ed una efficiente traduzione in codice macchima prima dell'esecuzione. Compatibile al 93% con l'implementazione 1.8.7 della MRI. Cominceranno l'implementazione della 1.9 dopo la release della ver 1.0.\nJRuby (jruby) - http://www.jruby.org/ - uscita la compatibilità con ruby 1.9.2 solo da poco 2011-03-15 per cui non l'abbiamo accarezzata inoltre non volevamo aggiungere una variabile al già difficile lavoro.\n\nRuby Enterprise Edition (ree) Minore memory footprint interprete 1.8.7 molto stabile - http://www.rubyenterpriseedition.com/\nMagLev (maglev) - http://maglev.gemstone.com/ - Alpha Basata su GemStone VM\nIronRuby (ironruby) - http://www.ironruby.net/ - implementazione su .net\nMacRuby (macruby) - http://www.macruby.org/ implementazione in ObjectiveC della VM integrata con MacOSX\n\n
\n
$ rails new blog\n$ cd blog/\n$ rake db:create\n$ bundle install\n$ rails server\n\n\n\nrails s\n=> Booting WEBrick\n=> Rails 3.0.7 application starting in development on http://0.0.0.0:3000\n=> Call with -d to detach\n=> Ctrl-C to shutdown server\n[2011-06-09 13:59:25] INFO WEBrick 1.3.1\n[2011-06-09 13:59:25] INFO ruby 1.9.2 (2010-08-18) [x86_64-darwin10.5.0]\n[2011-06-09 13:59:25] INFO WEBrick::HTTPServer#start: pid=30347 port=3000\n
$ rails new blog\n$ cd blog/\n$ rake db:create\n$ bundle install\n$ rails server\n\n\n\nrails s\n=> Booting WEBrick\n=> Rails 3.0.7 application starting in development on http://0.0.0.0:3000\n=> Call with -d to detach\n=> Ctrl-C to shutdown server\n[2011-06-09 13:59:25] INFO WEBrick 1.3.1\n[2011-06-09 13:59:25] INFO ruby 1.9.2 (2010-08-18) [x86_64-darwin10.5.0]\n[2011-06-09 13:59:25] INFO WEBrick::HTTPServer#start: pid=30347 port=3000\n
Per gli utenti windows la prima cosa è fare riferimento alla pagina:\nhttp://wiki.rubyonrails.org/it/getting-started/installation/windows\nAlla fine gli sviluppatori in azienda da noi esasperati dai problemi dei crash su windows e delle incopatibilità di alcune gemme che su *nix funzionavano egregiamente hanno installato una vm ubuntu e lanciano il server rails lì utilizzando l'editor da windows in una directory condivisa.\n\n
Un tool che risulta molto utile è irb (Interactive Ruby) che è una shell interprete del inguaggio in cui si possono definire classi moduli variabili e ispezionare subito il risultato delle nostre operazioni. La shell è molto molto comoda per imparare o per comprendere come funzioni uno stralcio di codice particolarmente ostico. \n\n
Quando si approccia Rails il problema è dato dal fatto che non si conosce nè il liguaggio nè il framework. La parte positiva è che il framework è più un DSL e quindi ha un processo di apprendimento a cipolla ovvero si può cominciare ad utilizzarlo conoscendolo poco e scoprendo volta per volta quello che è necessario scoprire.\n\nhttp://guides.rubyonrails.org/\nsimpatico http://railsforzombies.org/\n\nLe guides molto ben fatte permettono di creare la classica applicazione di blogging. E permettono di fare una carrellata di molte delle parti di rails.\n\n
Rails è una gemma che si basa su altre gemme. Rack è la gemma che assolve alla comunicazione web e che costituisce la base di molti framework web. \n\nRails si basa sul pattern model view controller con un'architettura RESTful. Utilizza la gemma ActiveRecord come orm ed un sistema di migrazioni che permettono di versionare i cambiamenti del database (simile a liquidbase per java per chi lo conoscesse). \nUtilizza bundler per gestire le dipendenze un po' come maven non sovraingegnerizzato.\nBisogna dire che ruby parte avvantaggiato perché ha il package manager rubygems embedded nel linguaggio che java non ha mai avuto. Inoltre le gemme vengono tutte storate nel file https://rubygems.org/ senza la necessità di fare il setup di mille repository. Chiunque può creare ed uplodare gemme e quindi rilasciarle.\nAltra gemma importante è rake: ovvero ruby make. con essa si possono lanciare task (simili a quelli di ant) scritti sempre in ruby. \nRails ne ha alcuni di default che si possono listare andando nella directory di progetto e lanciando\n\nrake -T\n\n
Rails è una gemma che si basa su altre gemme. Rack è la gemma che assolve alla comunicazione web e che costituisce la base di molti framework web. \n\nRails si basa sul pattern model view controller con un'architettura RESTful. Utilizza la gemma ActiveRecord come orm ed un sistema di migrazioni che permettono di versionare i cambiamenti del database (simile a liquidbase per java per chi lo conoscesse). \nUtilizza bundler per gestire le dipendenze un po' come maven non sovraingegnerizzato.\nBisogna dire che ruby parte avvantaggiato perché ha il package manager rubygems embedded nel linguaggio che java non ha mai avuto. Inoltre le gemme vengono tutte storate nel file https://rubygems.org/ senza la necessità di fare il setup di mille repository. Chiunque può creare ed uplodare gemme e quindi rilasciarle.\nAltra gemma importante è rake: ovvero ruby make. con essa si possono lanciare task (simili a quelli di ant) scritti sempre in ruby. \nRails ne ha alcuni di default che si possono listare andando nella directory di progetto e lanciando\n\nrake -T\n\n
Rails è una gemma che si basa su altre gemme. Rack è la gemma che assolve alla comunicazione web e che costituisce la base di molti framework web. \n\nRails si basa sul pattern model view controller con un'architettura RESTful. Utilizza la gemma ActiveRecord come orm ed un sistema di migrazioni che permettono di versionare i cambiamenti del database (simile a liquidbase per java per chi lo conoscesse). \nUtilizza bundler per gestire le dipendenze un po' come maven non sovraingegnerizzato.\nBisogna dire che ruby parte avvantaggiato perché ha il package manager rubygems embedded nel linguaggio che java non ha mai avuto. Inoltre le gemme vengono tutte storate nel file https://rubygems.org/ senza la necessità di fare il setup di mille repository. Chiunque può creare ed uplodare gemme e quindi rilasciarle.\nAltra gemma importante è rake: ovvero ruby make. con essa si possono lanciare task (simili a quelli di ant) scritti sempre in ruby. \nRails ne ha alcuni di default che si possono listare andando nella directory di progetto e lanciando\n\nrake -T\n\n
Rails è una gemma che si basa su altre gemme. Rack è la gemma che assolve alla comunicazione web e che costituisce la base di molti framework web. \n\nRails si basa sul pattern model view controller con un'architettura RESTful. Utilizza la gemma ActiveRecord come orm ed un sistema di migrazioni che permettono di versionare i cambiamenti del database (simile a liquidbase per java per chi lo conoscesse). \nUtilizza bundler per gestire le dipendenze un po' come maven non sovraingegnerizzato.\nBisogna dire che ruby parte avvantaggiato perché ha il package manager rubygems embedded nel linguaggio che java non ha mai avuto. Inoltre le gemme vengono tutte storate nel file https://rubygems.org/ senza la necessità di fare il setup di mille repository. Chiunque può creare ed uplodare gemme e quindi rilasciarle.\nAltra gemma importante è rake: ovvero ruby make. con essa si possono lanciare task (simili a quelli di ant) scritti sempre in ruby. \nRails ne ha alcuni di default che si possono listare andando nella directory di progetto e lanciando\n\nrake -T\n\n
Rails è una gemma che si basa su altre gemme. Rack è la gemma che assolve alla comunicazione web e che costituisce la base di molti framework web. \n\nRails si basa sul pattern model view controller con un'architettura RESTful. Utilizza la gemma ActiveRecord come orm ed un sistema di migrazioni che permettono di versionare i cambiamenti del database (simile a liquidbase per java per chi lo conoscesse). \nUtilizza bundler per gestire le dipendenze un po' come maven non sovraingegnerizzato.\nBisogna dire che ruby parte avvantaggiato perché ha il package manager rubygems embedded nel linguaggio che java non ha mai avuto. Inoltre le gemme vengono tutte storate nel file https://rubygems.org/ senza la necessità di fare il setup di mille repository. Chiunque può creare ed uplodare gemme e quindi rilasciarle.\nAltra gemma importante è rake: ovvero ruby make. con essa si possono lanciare task (simili a quelli di ant) scritti sempre in ruby. \nRails ne ha alcuni di default che si possono listare andando nella directory di progetto e lanciando\n\nrake -T\n\n
Rails è una gemma che si basa su altre gemme. Rack è la gemma che assolve alla comunicazione web e che costituisce la base di molti framework web. \n\nRails si basa sul pattern model view controller con un'architettura RESTful. Utilizza la gemma ActiveRecord come orm ed un sistema di migrazioni che permettono di versionare i cambiamenti del database (simile a liquidbase per java per chi lo conoscesse). \nUtilizza bundler per gestire le dipendenze un po' come maven non sovraingegnerizzato.\nBisogna dire che ruby parte avvantaggiato perché ha il package manager rubygems embedded nel linguaggio che java non ha mai avuto. Inoltre le gemme vengono tutte storate nel file https://rubygems.org/ senza la necessità di fare il setup di mille repository. Chiunque può creare ed uplodare gemme e quindi rilasciarle.\nAltra gemma importante è rake: ovvero ruby make. con essa si possono lanciare task (simili a quelli di ant) scritti sempre in ruby. \nRails ne ha alcuni di default che si possono listare andando nella directory di progetto e lanciando\n\nrake -T\n\n
Rails è una gemma che si basa su altre gemme. Rack è la gemma che assolve alla comunicazione web e che costituisce la base di molti framework web. \n\nRails si basa sul pattern model view controller con un'architettura RESTful. Utilizza la gemma ActiveRecord come orm ed un sistema di migrazioni che permettono di versionare i cambiamenti del database (simile a liquidbase per java per chi lo conoscesse). \nUtilizza bundler per gestire le dipendenze un po' come maven non sovraingegnerizzato.\nBisogna dire che ruby parte avvantaggiato perché ha il package manager rubygems embedded nel linguaggio che java non ha mai avuto. Inoltre le gemme vengono tutte storate nel file https://rubygems.org/ senza la necessità di fare il setup di mille repository. Chiunque può creare ed uplodare gemme e quindi rilasciarle.\nAltra gemma importante è rake: ovvero ruby make. con essa si possono lanciare task (simili a quelli di ant) scritti sempre in ruby. \nRails ne ha alcuni di default che si possono listare andando nella directory di progetto e lanciando\n\nrake -T\n\n
Rails è una gemma che si basa su altre gemme. Rack è la gemma che assolve alla comunicazione web e che costituisce la base di molti framework web. \n\nRails si basa sul pattern model view controller con un'architettura RESTful. Utilizza la gemma ActiveRecord come orm ed un sistema di migrazioni che permettono di versionare i cambiamenti del database (simile a liquidbase per java per chi lo conoscesse). \nUtilizza bundler per gestire le dipendenze un po' come maven non sovraingegnerizzato.\nBisogna dire che ruby parte avvantaggiato perché ha il package manager rubygems embedded nel linguaggio che java non ha mai avuto. Inoltre le gemme vengono tutte storate nel file https://rubygems.org/ senza la necessità di fare il setup di mille repository. Chiunque può creare ed uplodare gemme e quindi rilasciarle.\nAltra gemma importante è rake: ovvero ruby make. con essa si possono lanciare task (simili a quelli di ant) scritti sempre in ruby. \nRails ne ha alcuni di default che si possono listare andando nella directory di progetto e lanciando\n\nrake -T\n\n
Rails è una gemma che si basa su altre gemme. Rack è la gemma che assolve alla comunicazione web e che costituisce la base di molti framework web. \n\nRails si basa sul pattern model view controller con un'architettura RESTful. Utilizza la gemma ActiveRecord come orm ed un sistema di migrazioni che permettono di versionare i cambiamenti del database (simile a liquidbase per java per chi lo conoscesse). \nUtilizza bundler per gestire le dipendenze un po' come maven non sovraingegnerizzato.\nBisogna dire che ruby parte avvantaggiato perché ha il package manager rubygems embedded nel linguaggio che java non ha mai avuto. Inoltre le gemme vengono tutte storate nel file https://rubygems.org/ senza la necessità di fare il setup di mille repository. Chiunque può creare ed uplodare gemme e quindi rilasciarle.\nAltra gemma importante è rake: ovvero ruby make. con essa si possono lanciare task (simili a quelli di ant) scritti sempre in ruby. \nRails ne ha alcuni di default che si possono listare andando nella directory di progetto e lanciando\n\nrake -T\n\n
Rails è una gemma che si basa su altre gemme. Rack è la gemma che assolve alla comunicazione web e che costituisce la base di molti framework web. \n\nRails si basa sul pattern model view controller con un'architettura RESTful. Utilizza la gemma ActiveRecord come orm ed un sistema di migrazioni che permettono di versionare i cambiamenti del database (simile a liquidbase per java per chi lo conoscesse). \nUtilizza bundler per gestire le dipendenze un po' come maven non sovraingegnerizzato.\nBisogna dire che ruby parte avvantaggiato perché ha il package manager rubygems embedded nel linguaggio che java non ha mai avuto. Inoltre le gemme vengono tutte storate nel file https://rubygems.org/ senza la necessità di fare il setup di mille repository. Chiunque può creare ed uplodare gemme e quindi rilasciarle.\nAltra gemma importante è rake: ovvero ruby make. con essa si possono lanciare task (simili a quelli di ant) scritti sempre in ruby. \nRails ne ha alcuni di default che si possono listare andando nella directory di progetto e lanciando\n\nrake -T\n\n
Quando si approccia Rails il problema è dato dal fatto che non si conosce nè il liguaggio nè il framework. La parte positiva è che il framework è più un DSL e quindi ha un processo di apprendimento a cipolla ovvero si può cominciare ad utilizzarlo conoscendolo poco e scoprendo volta per volta quello che è necessario scoprire.\n\nhttp://guides.rubyonrails.org/\nsimpatico http://railsforzombies.org/\n\nLe guides molto ben fatte permettono di creare la classica applicazione di blogging. E permettono di fare una carrellata di molte delle parti di rails.\n\n
Rails è una gemma che si basa su altre gemme. Rack è la gemma che assolve alla comunicazione web e che costituisce la base di molti framework web. \n\nRails si basa sul pattern model view controller con un'architettura RESTful. Utilizza la gemma ActiveRecord come orm ed un sistema di migrazioni che permettono di versionare i cambiamenti del database (simile a liquidbase per java per chi lo conoscesse). \nUtilizza bundler per gestire le dipendenze un po' come maven non sovraingegnerizzato.\nBisogna dire che ruby parte avvantaggiato perché ha il package manager rubygems embedded nel linguaggio che java non ha mai avuto. Inoltre le gemme vengono tutte storate nel file https://rubygems.org/ senza la necessità di fare il setup di mille repository. Chiunque può creare ed uplodare gemme e quindi rilasciarle.\nAltra gemma importante è rake: ovvero ruby make. con essa si possono lanciare task (simili a quelli di ant) scritti sempre in ruby. \nRails ne ha alcuni di default che si possono listare andando nella directory di progetto e lanciando\n\nrake -T\n\n
Rails è una gemma che si basa su altre gemme. Rack è la gemma che assolve alla comunicazione web e che costituisce la base di molti framework web. \n\nRails si basa sul pattern model view controller con un'architettura RESTful. Utilizza la gemma ActiveRecord come orm ed un sistema di migrazioni che permettono di versionare i cambiamenti del database (simile a liquidbase per java per chi lo conoscesse). \nUtilizza bundler per gestire le dipendenze un po' come maven non sovraingegnerizzato.\nBisogna dire che ruby parte avvantaggiato perché ha il package manager rubygems embedded nel linguaggio che java non ha mai avuto. Inoltre le gemme vengono tutte storate nel file https://rubygems.org/ senza la necessità di fare il setup di mille repository. Chiunque può creare ed uplodare gemme e quindi rilasciarle.\nAltra gemma importante è rake: ovvero ruby make. con essa si possono lanciare task (simili a quelli di ant) scritti sempre in ruby. \nRails ne ha alcuni di default che si possono listare andando nella directory di progetto e lanciando\n\nrake -T\n\n
Rails è una gemma che si basa su altre gemme. Rack è la gemma che assolve alla comunicazione web e che costituisce la base di molti framework web. \n\nRails si basa sul pattern model view controller con un'architettura RESTful. Utilizza la gemma ActiveRecord come orm ed un sistema di migrazioni che permettono di versionare i cambiamenti del database (simile a liquidbase per java per chi lo conoscesse). \nUtilizza bundler per gestire le dipendenze un po' come maven non sovraingegnerizzato.\nBisogna dire che ruby parte avvantaggiato perché ha il package manager rubygems embedded nel linguaggio che java non ha mai avuto. Inoltre le gemme vengono tutte storate nel file https://rubygems.org/ senza la necessità di fare il setup di mille repository. Chiunque può creare ed uplodare gemme e quindi rilasciarle.\nAltra gemma importante è rake: ovvero ruby make. con essa si possono lanciare task (simili a quelli di ant) scritti sempre in ruby. \nRails ne ha alcuni di default che si possono listare andando nella directory di progetto e lanciando\n\nrake -T\n\n
Rails è una gemma che si basa su altre gemme. Rack è la gemma che assolve alla comunicazione web e che costituisce la base di molti framework web. \n\nRails si basa sul pattern model view controller con un'architettura RESTful. Utilizza la gemma ActiveRecord come orm ed un sistema di migrazioni che permettono di versionare i cambiamenti del database (simile a liquidbase per java per chi lo conoscesse). \nUtilizza bundler per gestire le dipendenze un po' come maven non sovraingegnerizzato.\nBisogna dire che ruby parte avvantaggiato perché ha il package manager rubygems embedded nel linguaggio che java non ha mai avuto. Inoltre le gemme vengono tutte storate nel file https://rubygems.org/ senza la necessità di fare il setup di mille repository. Chiunque può creare ed uplodare gemme e quindi rilasciarle.\nAltra gemma importante è rake: ovvero ruby make. con essa si possono lanciare task (simili a quelli di ant) scritti sempre in ruby. \nRails ne ha alcuni di default che si possono listare andando nella directory di progetto e lanciando\n\nrake -T\n\n
inizialmente abiutuati a fare testdriven ma non riuscivamo a causa del fatto che non conoscendo ruby non sapevamo se il test non funzionasse a causa di ruby o di rails \n\nPaura dell'effetto boiled frogs \n\n\n
inizialmente abiutuati a fare testdriven ma non riuscivamo a causa del fatto che non conoscendo ruby non sapevamo se il test non funzionasse a causa di ruby o di rails \n\nPaura dell'effetto boiled frogs \n\n\n
inizialmente abiutuati a fare testdriven ma non riuscivamo a causa del fatto che non conoscendo ruby non sapevamo se il test non funzionasse a causa di ruby o di rails \n\nPaura dell'effetto boiled frogs \n\n\n
\n
Abbiamo studiato abbiamo lavorato feature per feature scoprendo sempre cose nuove ogni giorno e tentando di convidirele il più possibile imparando molto da ruby dal progetto e dai noi stessi e abbiamo aggredito una feature alla volta tentando comunque dei ricicli nonostante i tempi fossero stretti dato che c'era di mezzo anche il natale. \nAbbiamo lavorato indefessamente non facendo quasi pause e facendo training on the job\n\n\n
Il giorno 4 Febbraio 2011 abbiamo deployato un'applicazione feature complete.\nPer cui un'applicazione stimata con un effort di 150gg uomo per un elapsed di tre mesi per tre sviluppatori è stato rilasciata in 200gg uomo con un elapsed di due mesi e 5 sviluppatori.\n\n\n\n
Il giorno 4 Febbraio 2011 abbiamo deployato un'applicazione feature complete.\nPer cui un'applicazione stimata con un effort di 150gg uomo per un elapsed di tre mesi per tre sviluppatori è stato rilasciata in 200gg uomo con un elapsed di due mesi e 5 sviluppatori.\n\n\n\n
Il giorno 4 Febbraio 2011 abbiamo deployato un'applicazione feature complete.\nPer cui un'applicazione stimata con un effort di 150gg uomo per un elapsed di tre mesi per tre sviluppatori è stato rilasciata in 200gg uomo con un elapsed di due mesi e 5 sviluppatori.\n\n\n\n
Il giorno 4 Febbraio 2011 abbiamo deployato un'applicazione feature complete.\nPer cui un'applicazione stimata con un effort di 150gg uomo per un elapsed di tre mesi per tre sviluppatori è stato rilasciata in 200gg uomo con un elapsed di due mesi e 5 sviluppatori.\n\n\n\n