SlideShare a Scribd company logo
1 of 39
1 Rake as build management tool for developers and project managers Denis Lutz
Rake for Developers 	The Hyphothesis  about Ant 	“Hello World” from Rake 	Ant Hypothesis proove 1 Rake for Project Managers 	Ant Hypothesis proove 2 	Case Study “The Perfect Build” 	Riskmanagement	 	3 Improvements you can make with rake 2
3 Ant  We use ant in java projects ,[object Object]
 deployments
 initial project setup / configurations
 product data load,[object Object]
5 Rake What is Rake (from JRuby) ? ,[object Object]
 domain specific language (DSL) for builds based on ruby
 rake for ruby is like ant for java “the build management tool”
 existing rake version in jruby
 rake from jruby is able to call any other ant task or target (!),[object Object]
7 What is rake? Calling a core ant task…  rake is a plain mapping to the ant java classes ! We can call any task or target that ant has!
8 What is rake? Create a task that is dependent on the unzip task It should create a folder and move the unzipped file into it
9 Ant is not sufficient for what we want to do Back to Hypothesis… Ant is not sufficient for what we want to do. Not anymore since we have better choices. It was created as no scripting languages were supporting java. What are we usually doing with Ant?
10 Ant is not sufficient for what we want to do ,[object Object]
 deployments
 initial project setup
 data load (csv, fixtures)
 cron job execution
 moving / copying / deleting files or directories
 writing to files
 processing data sets
 building dependencies on coditions
11 Ant is not sufficient for what we want to do moving / copying / deleting files and directories Ant: Looks pretty simple right? Just couple lines, markup was always easy… Rake: I want to do operations as would it be in a unix environment, and rake realizes it:
12 Ant is not sufficient for what we want to do processing a data set (Array) in a loop Ant: See, for anything that a normal language has, ant has a markup version of it Ant: So you will be always fine and be able to write what you want Rake: Well lets just take a scripting language then… like ruby  Rake: and by the way, can you use unique ant syntax somewhere else ouside the build scripts?
13 Ant is not sufficient for what we want to do Ant: Yea, conditions are definded on the tasks themselves, since its all about tasks.
14 Ant is not sufficient for what we want to do Rake: that’s all we wanted:
15 Ant is not sufficient for what we want to do Rake: How about some methods to don’t repeat yourself in the build?  Ant: Methods??? Your kidding me right? Targets are your methods, or create a macrodef Ant: If it gets too complicated soo create your java class and call it from ant… Ant: Here is the macrodef syntax Rake: Dude, I just want a method ok? So attribute is clear … that’s what I need Whats the deal with the <element  /> ? What is the <sequential/> suppose to mean? So I predefine what tasks I will call inside my new macro ? Should I always use sequential ?
16 Ant is not sufficient for what we want to do Rake: Watch, that’s what I want..
17 Ant is not sufficient for what we want to do Rake: I want to create some objects in my script…  Ant: Objects??? Lets not exagerrate here ok?  Ant: If its that complicated just create a custom ant task with a java class Rake: Yea, its like object orientation = elegance , so we should use it directly in the script…
18 Ant is not sufficient for what we want to do Ant: LOL, it should not be that complicated   Ant: unless you really want to fly to the moon… Rake: Well lets say I have a deployment script and I deal with servers… Rake: This is what I could do with object orientation, all this in one file, within mins
19 Ant is not sufficient for what we want to do ,[object Object]
 powerful
 maintable
 easy understanble
 no external classes to do it,[object Object]
21 Ant is not sufficient for what we want to do 2. We don’t use  Ant often enough to learn it properly ,[object Object]
 its mostly done by one dedicated person
 everyone else is not familiar with  ant and the build script

More Related Content

What's hot

Spring-batch Groovy y Gradle
Spring-batch Groovy y GradleSpring-batch Groovy y Gradle
Spring-batch Groovy y GradleAntonio Mas
 
Django Seminar 08/17/2013
Django Seminar 08/17/2013Django Seminar 08/17/2013
Django Seminar 08/17/2013Trinh Nguyen
 
Machine Learning on Your Hand - Introduction to Tensorflow Lite Preview
Machine Learning on Your Hand - Introduction to Tensorflow Lite PreviewMachine Learning on Your Hand - Introduction to Tensorflow Lite Preview
Machine Learning on Your Hand - Introduction to Tensorflow Lite PreviewModulabs
 
eXo EC - Groovy Programming Language
eXo EC - Groovy Programming LanguageeXo EC - Groovy Programming Language
eXo EC - Groovy Programming LanguageHoat Le
 
Understanding how concurrency work in os
Understanding how concurrency work in osUnderstanding how concurrency work in os
Understanding how concurrency work in osGenchiLu1
 
C++ vs java which is best for future
C++ vs java which is best for futureC++ vs java which is best for future
C++ vs java which is best for futurecalltutors
 
Python for IoT, A return of experience
Python for IoT, A return of experiencePython for IoT, A return of experience
Python for IoT, A return of experienceAlexandre Abadie
 

What's hot (11)

Spring-batch Groovy y Gradle
Spring-batch Groovy y GradleSpring-batch Groovy y Gradle
Spring-batch Groovy y Gradle
 
Hack Rio/OS
Hack Rio/OSHack Rio/OS
Hack Rio/OS
 
Django Seminar 08/17/2013
Django Seminar 08/17/2013Django Seminar 08/17/2013
Django Seminar 08/17/2013
 
Machine Learning on Your Hand - Introduction to Tensorflow Lite Preview
Machine Learning on Your Hand - Introduction to Tensorflow Lite PreviewMachine Learning on Your Hand - Introduction to Tensorflow Lite Preview
Machine Learning on Your Hand - Introduction to Tensorflow Lite Preview
 
Groovy android
Groovy androidGroovy android
Groovy android
 
Golang
GolangGolang
Golang
 
eXo EC - Groovy Programming Language
eXo EC - Groovy Programming LanguageeXo EC - Groovy Programming Language
eXo EC - Groovy Programming Language
 
Multiprocessing in python
Multiprocessing in pythonMultiprocessing in python
Multiprocessing in python
 
Understanding how concurrency work in os
Understanding how concurrency work in osUnderstanding how concurrency work in os
Understanding how concurrency work in os
 
C++ vs java which is best for future
C++ vs java which is best for futureC++ vs java which is best for future
C++ vs java which is best for future
 
Python for IoT, A return of experience
Python for IoT, A return of experiencePython for IoT, A return of experience
Python for IoT, A return of experience
 

Viewers also liked

Viewers also liked (6)

ANT
ANTANT
ANT
 
Flex Proto Type
Flex  Proto  TypeFlex  Proto  Type
Flex Proto Type
 
Maven
MavenMaven
Maven
 
Imj2902
Imj2902Imj2902
Imj2902
 
Maven
MavenMaven
Maven
 
Icefaces Proto Type
Icefaces Proto TypeIcefaces Proto Type
Icefaces Proto Type
 

Similar to From Ant to Rake

JRuby in Java Projects
JRuby in Java ProjectsJRuby in Java Projects
JRuby in Java Projectsjazzman1980
 
DiUS Computing Lca Rails Final
DiUS  Computing Lca Rails FinalDiUS  Computing Lca Rails Final
DiUS Computing Lca Rails FinalRobert Postill
 
EuRuKo JRuby Talk 2008
EuRuKo JRuby Talk 2008EuRuKo JRuby Talk 2008
EuRuKo JRuby Talk 2008geraldbauer
 
Consistent Development Environment using Vagrant and Chef
Consistent Development Environment using Vagrant and ChefConsistent Development Environment using Vagrant and Chef
Consistent Development Environment using Vagrant and ChefGerald Villorente
 
System design for Web Application
System design for Web ApplicationSystem design for Web Application
System design for Web ApplicationMichael Choi
 
Go After 4 Years in Production - QCon 2015
Go After 4 Years in Production - QCon 2015Go After 4 Years in Production - QCon 2015
Go After 4 Years in Production - QCon 2015Travis Reeder
 
30 Skills to Master to Become a Senior Software Engineer
30 Skills to Master to Become a Senior Software Engineer30 Skills to Master to Become a Senior Software Engineer
30 Skills to Master to Become a Senior Software EngineerSean Coates
 
How fast can you onboard a new team member with VAGRANT ?
How fast can you onboard a new team member with VAGRANT ?How fast can you onboard a new team member with VAGRANT ?
How fast can you onboard a new team member with VAGRANT ?Vivek Parihar
 
Top 10 web development tools in 2022
Top 10 web development tools in 2022Top 10 web development tools in 2022
Top 10 web development tools in 2022intouchgroup2
 
Java And Community Support
Java And Community SupportJava And Community Support
Java And Community SupportWilliam Grosso
 
Clustered PHP - DC PHP 2009
Clustered PHP - DC PHP 2009Clustered PHP - DC PHP 2009
Clustered PHP - DC PHP 2009marcelesser
 
Ruby On Rails Presentation
Ruby On Rails PresentationRuby On Rails Presentation
Ruby On Rails PresentationPaul Pajo
 
How To be a Backend developer
How To be a Backend developer    How To be a Backend developer
How To be a Backend developer Ramy Hakam
 
Rails Vs CakePHP
Rails Vs CakePHPRails Vs CakePHP
Rails Vs CakePHPGautam Rege
 
The Development History of PVS-Studio for Linux
The Development History of PVS-Studio for LinuxThe Development History of PVS-Studio for Linux
The Development History of PVS-Studio for LinuxPVS-Studio
 
Architecturez votre projet créez une application react complète - open clas...
Architecturez votre projet   créez une application react complète - open clas...Architecturez votre projet   créez une application react complète - open clas...
Architecturez votre projet créez une application react complète - open clas...Ahmed276865
 
Modern web dev_taxonomy
Modern web dev_taxonomyModern web dev_taxonomy
Modern web dev_taxonomykevin_donovan
 

Similar to From Ant to Rake (20)

JRuby in Java Projects
JRuby in Java ProjectsJRuby in Java Projects
JRuby in Java Projects
 
DiUS Computing Lca Rails Final
DiUS  Computing Lca Rails FinalDiUS  Computing Lca Rails Final
DiUS Computing Lca Rails Final
 
EuRuKo JRuby Talk 2008
EuRuKo JRuby Talk 2008EuRuKo JRuby Talk 2008
EuRuKo JRuby Talk 2008
 
Consistent Development Environment using Vagrant and Chef
Consistent Development Environment using Vagrant and ChefConsistent Development Environment using Vagrant and Chef
Consistent Development Environment using Vagrant and Chef
 
System design for Web Application
System design for Web ApplicationSystem design for Web Application
System design for Web Application
 
Go After 4 Years in Production - QCon 2015
Go After 4 Years in Production - QCon 2015Go After 4 Years in Production - QCon 2015
Go After 4 Years in Production - QCon 2015
 
30 Skills to Master to Become a Senior Software Engineer
30 Skills to Master to Become a Senior Software Engineer30 Skills to Master to Become a Senior Software Engineer
30 Skills to Master to Become a Senior Software Engineer
 
How fast can you onboard a new team member with VAGRANT ?
How fast can you onboard a new team member with VAGRANT ?How fast can you onboard a new team member with VAGRANT ?
How fast can you onboard a new team member with VAGRANT ?
 
Top 10 web development tools in 2022
Top 10 web development tools in 2022Top 10 web development tools in 2022
Top 10 web development tools in 2022
 
Java And Community Support
Java And Community SupportJava And Community Support
Java And Community Support
 
Clustered PHP - DC PHP 2009
Clustered PHP - DC PHP 2009Clustered PHP - DC PHP 2009
Clustered PHP - DC PHP 2009
 
Ruby On Rails Presentation
Ruby On Rails PresentationRuby On Rails Presentation
Ruby On Rails Presentation
 
How To be a Backend developer
How To be a Backend developer    How To be a Backend developer
How To be a Backend developer
 
Rails Vs CakePHP
Rails Vs CakePHPRails Vs CakePHP
Rails Vs CakePHP
 
The Development History of PVS-Studio for Linux
The Development History of PVS-Studio for LinuxThe Development History of PVS-Studio for Linux
The Development History of PVS-Studio for Linux
 
Architecturez votre projet créez une application react complète - open clas...
Architecturez votre projet   créez une application react complète - open clas...Architecturez votre projet   créez une application react complète - open clas...
Architecturez votre projet créez une application react complète - open clas...
 
RobotStudiopp.ppt
RobotStudiopp.pptRobotStudiopp.ppt
RobotStudiopp.ppt
 
ie450RobotStudio.ppt
ie450RobotStudio.pptie450RobotStudio.ppt
ie450RobotStudio.ppt
 
Dean4j@Njug5
Dean4j@Njug5Dean4j@Njug5
Dean4j@Njug5
 
Modern web dev_taxonomy
Modern web dev_taxonomyModern web dev_taxonomy
Modern web dev_taxonomy
 

Recently uploaded

unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxBkGupta21
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfMounikaPolabathina
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxLoriGlavin3
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 

Recently uploaded (20)

unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptx
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdf
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 

From Ant to Rake

  • 1. 1 Rake as build management tool for developers and project managers Denis Lutz
  • 2. Rake for Developers The Hyphothesis about Ant “Hello World” from Rake Ant Hypothesis proove 1 Rake for Project Managers Ant Hypothesis proove 2 Case Study “The Perfect Build” Riskmanagement 3 Improvements you can make with rake 2
  • 3.
  • 5. initial project setup / configurations
  • 6.
  • 7.
  • 8. domain specific language (DSL) for builds based on ruby
  • 9. rake for ruby is like ant for java “the build management tool”
  • 10. existing rake version in jruby
  • 11.
  • 12. 7 What is rake? Calling a core ant task… rake is a plain mapping to the ant java classes ! We can call any task or target that ant has!
  • 13. 8 What is rake? Create a task that is dependent on the unzip task It should create a folder and move the unzipped file into it
  • 14. 9 Ant is not sufficient for what we want to do Back to Hypothesis… Ant is not sufficient for what we want to do. Not anymore since we have better choices. It was created as no scripting languages were supporting java. What are we usually doing with Ant?
  • 15.
  • 18. data load (csv, fixtures)
  • 19. cron job execution
  • 20. moving / copying / deleting files or directories
  • 21. writing to files
  • 23. building dependencies on coditions
  • 24. 11 Ant is not sufficient for what we want to do moving / copying / deleting files and directories Ant: Looks pretty simple right? Just couple lines, markup was always easy… Rake: I want to do operations as would it be in a unix environment, and rake realizes it:
  • 25. 12 Ant is not sufficient for what we want to do processing a data set (Array) in a loop Ant: See, for anything that a normal language has, ant has a markup version of it Ant: So you will be always fine and be able to write what you want Rake: Well lets just take a scripting language then… like ruby Rake: and by the way, can you use unique ant syntax somewhere else ouside the build scripts?
  • 26. 13 Ant is not sufficient for what we want to do Ant: Yea, conditions are definded on the tasks themselves, since its all about tasks.
  • 27. 14 Ant is not sufficient for what we want to do Rake: that’s all we wanted:
  • 28. 15 Ant is not sufficient for what we want to do Rake: How about some methods to don’t repeat yourself in the build? Ant: Methods??? Your kidding me right? Targets are your methods, or create a macrodef Ant: If it gets too complicated soo create your java class and call it from ant… Ant: Here is the macrodef syntax Rake: Dude, I just want a method ok? So attribute is clear … that’s what I need Whats the deal with the <element /> ? What is the <sequential/> suppose to mean? So I predefine what tasks I will call inside my new macro ? Should I always use sequential ?
  • 29. 16 Ant is not sufficient for what we want to do Rake: Watch, that’s what I want..
  • 30. 17 Ant is not sufficient for what we want to do Rake: I want to create some objects in my script… Ant: Objects??? Lets not exagerrate here ok? Ant: If its that complicated just create a custom ant task with a java class Rake: Yea, its like object orientation = elegance , so we should use it directly in the script…
  • 31. 18 Ant is not sufficient for what we want to do Ant: LOL, it should not be that complicated Ant: unless you really want to fly to the moon… Rake: Well lets say I have a deployment script and I deal with servers… Rake: This is what I could do with object orientation, all this in one file, within mins
  • 32.
  • 36.
  • 37.
  • 38. its mostly done by one dedicated person
  • 39. everyone else is not familiar with ant and the build script
  • 40. developers tend to do fast adjustments to the script using the ant api
  • 41. you are good with ant if you worked with it for a longer time
  • 42. the ant knowledge can not be used somewhere else
  • 43. developers have no motivation to learn it properly
  • 44.
  • 45. jruby can be declared as the core scripting language in each (java) project anyways
  • 46. because we need ruby for: data import, front end, parsing, any scripting language tasks
  • 47. the knowledge of rake ( = ruby ) is a good investment for developers
  • 48. ruby is a great, simple, elegant and powerfull language
  • 49.
  • 50. ruby knowledge is reused much more in projects with ruby if declared as scripting language
  • 51. front ends can be written in ruby on rails
  • 52. ruby knowledge can be reused much more on the US market
  • 53. java scripting languages = languages that are running on jvm
  • 54.
  • 55. 25 Ant is not sufficient for what we want to do Rails competes with JSF in the meanwhile, which indirectly shows the power and acceptance of the ruby language on the us market.
  • 56. 26 Improvements we could reach by using rake Which parts of your java project can be improved by using rake? 1. Setting up the project initially and for any new team member 2. Working with the project everyday 3. Deployment management
  • 57.
  • 58. knowledge is mostly party written on the wiki and outdated
  • 59. no one really knows what the project setup steps are
  • 60. the older the project the more out of sync is it
  • 61. the project setup takes usually the time of the new person and one team memberAt the end you loose a lot of time, instead of initially investing little bit more!
  • 62. 28 Improvements we could reach by using rake What the a new member feels at the project setup: What database do I need? What are the database properties? Where should I configure them? Who should I ask about it? Where is the wiki page about this project? I have a windows machine, are there any differences to a macs? What should I write into my “hosts” file? How do I start this special backend / front end / solr server?
  • 63.
  • 64. Local database setup (setting up mysql/oracle + create database)
  • 65. Unzipping of vendor files (commercial integrated systems, solr, patches)
  • 66. Cofiguration files setup: user setting + default + environment
  • 67. Build (starting automatically)
  • 68. Database initialization (without entering any client)
  • 69. different data imports (* n times)
  • 70. other step by a cronjob (* n times)
  • 71. server startup (front end, back end, solr, any other server)
  • 72. commercial integrated system configuration
  • 73.
  • 74. dedicated person in each project responsible for the build maintenance
  • 75. project planned time investment for a complete project setup by a build
  • 76. investment will immidiatelly pay off, with a new team member at the latest
  • 77. thinking in a perspective of a beginner who has no project knowledge
  • 78.
  • 79.
  • 80. Local database setup (setting up mysql/oracle + create database) (still potentially automatable)
  • 81. Unzipping of vendor files (solr, patches)  DONE
  • 82. Cofiguration files setup: user setting + default + environment  DONE
  • 83. Build (starting automatically)  DONE
  • 84. Database initialization (without entering the webclient)  DONE
  • 85. different data imports (* n times)  DONE
  • 86. other step by a cronjob (* n times)  DONE
  • 87. server start up / which beanshell script should I call?  DONE started, informed the user how to do it
  • 88.
  • 89.
  • 90. did he need to ask someone for something? No
  • 91. did he need to look up a wiki page and wait till his account on it is created? No
  • 92. even if there was a manual step we were exactly telling the user what to do at the right time
  • 93. our assumtion for now was: he works on a mac / unix system
  • 94. he had to be able to install mysql database by himself
  • 95.
  • 96. we have the old ant build.xml still inside the project
  • 97. we can go back to ant all the time, just by adding old ant targets
  • 98. jruby is used anyways if this is the official project scripting language
  • 99.
  • 100. the build is your source for any automation
  • 101. server starts (back end/ sorl/ front end/ any server)
  • 102. cronjob execution (instead of looking it up in a client and executing)
  • 103. repetitive data load (you work on a data load and need repetitive execution)
  • 104.
  • 105. same advantages as for the project setup apply
  • 106.
  • 107. rake => great new option to use, has a lot of synergies and is fun
  • 108. separate discussion needed for deployments strategy based on rake
  • 109. start saving money and time today
  • 110.