On a pas toujours besoin d'une application complète, un simple script suffit à automatiser la plupart de nos tâches.
Le Ruby a le vent en poupe depuis quelques années et pour cause, Yukihiro Matsumoto, son fondateur, disait en 2008:
"I hope to see Ruby help every programmer in the world to be productive, and to enjoy programming, and to be happy. That is the primary purpose of Ruby language."
S'il est certain que la pléthore de gem (librairies) nous aide à être productifs, pour le bonheur il faut venir se faire sa propre idée ;)
Louis Kottman nous montrera comment réaliser des scripts simples et tirer parti de la pléthore de gem disponible.
2. Contenu
⦿Le Ruby… ?
⦿Une syntaxe minimaliste
⦿Fonctionnalités
⦿S’installer en 10 minutes
⦿Les gems & bundler
⦿4-5 scripts ensembles
2013-03-08 Ca va être du bonheur 2
3. Le Ruby… ?
1995: première publication
Yukihiro « matz » Matsumoto
2004: Ruby on Rails
Aujourd’hui: 11ème sur TIOBE
Ruby c’est aussi, une communauté
"I hope to see Ruby help every programmer in the world to be productive, and to enjoy programming, and to be
2013-03-08 3
happy. That is the primary purpose of Ruby language.“ Yukihiro Matsumoto
4. Une syntaxe minimaliste
Script
if en fin de ligne
Pas d’accolades Pas de parenthèses
Pas de return
« Dans quelque domaine que ce soit, la perfection est enfin atteinte non pas lorsqu'il n'y a plus rien à ajouter mais lorsqu'il n'y a plus rien à enlever »
2013-03-08 4
Antoine de Saint-Exupéry
5. Fonctionnalités
⦿Open source
⦿« Plus puissant que Perl, et plus
orienté objet que Python »
Mixins
Typed Exception handling
Dynamic
Duck typed
Reflective
Garbage collected
Cross-platform
RubyGems Boolean coercion
2013-03-08 Chuck Norris m’a aidé à faire les animations 5
6. S’installer en 10 minutes
⦿On a besoin de:
⦿rubyinstaller.org
⦿DevKit
⦿MySysGit
⦿Ou plus simplement:
⦿RailsInstaller
⦿IDE: RubyMine, EMACS, TextMate…
⦿Bonus RubyMine: thème VS
2013-03-08 Ce message pas très subliminal te suggère fortement d’utiliser railsinstaller 6
7. 2013-03-08 Si il n’y a pas de questions, on passe donc directement à la métaprogrammation dynamique 7
8. Les gems & bundler
⦿ Les gem, ces librairies distribuées
⦿ http://rubygems.org
Nom Plateforme
Version
⦿ gem help commands & gem environment
⦿ Recherche -> gem install nokogiri -> require ‘nokogiri’
⦿ bundle install & bundle update
2013-03-08 Non, tu peux pas les offrir à ta femme 8
9. « Ask me no questions, and I'll tell you no lies. »
2013-03-08 Oliver Goldsmith 9
10. 5 scripts
1. Appels système
2. Notifications RATP
=> nokogiri & ruby_gntp (growl)
3. Proxification (métaprogrammation)
4. Organiseur de séries
5. Cra client
=> nokogiri & mechanize
2013-03-08 L’heure de la pizza n’a jamais été aussi proche 10
11. LouisKottmann/PrezRuby (git)
RubyKoans
Desining ruby APIs
RailsTutorial
Ruby-toolbox
Thor & Rake
SelectorGadget / GrowlForWindows
2013-03-08 Qui fait un caps’? 11
Rails: David HeinemeeierHanssonTIOBE: http://www.tiobe.com/index.php/content/paperinfo/tpci/index.htmlGIT de ruby: https://github.com/ruby/ruby git clone git://github.com/ruby/ruby.git
Ce qu’il est important de noter ici, c’est qu’on a pas besoin de créer de classes (script), ni de compiler (dynamique). Une simple ligne dans un fichier texte peut constituer un programme entier.Pas besoin de checker explicitement si le paramètre est nil, puisque par défaut seuls nil et false valent false (booleancoercion).
Ruby est totalement libre. Il est non seulement gratuit, mais son utilisation, sa copie, sa modification et sa distribution sont également libres.toute donnée est un objet, y compris les types; toute fonction est une méthode; toute variable est une référence à un objet.Dynamic: pas compiléTuring complete: il peut simuler une machine de turingReflective: un programme en ruby peut modifier sa propre structure et son comportement au runtimeDucktyping: « si ca marche comme un canard, nage comme un canard et cancane comme un canard, alors j’appelle cet oiseau un canard »Cross-platform: certaines gem sont différentes ou non disponibles selon les OSBooleancoercion: tout est « true » sauf « false » et « nil »RubyGems: tout le monde peut participer
Impossible de couvrir les spécificités, ceci est un cloud de mots clés relatifs à Ruby.L’audience en choisit quelques uns