Recursive-Open-Struct
You may already know OpenStruct in Ruby. It's a data structure close to a hash which allows some nice syntaxt like that :
my_open_struct.data1 = 1
my_open_struct.data2 = 'something'
etc.
Recursive Open Struct is an extension, which allows even better things like that:
my_ros.stuff = 'something'
my_ros.group1.info = 'some other thing'
my_ros.group1.sub_group1.data = 'another thing'
my_ros.group2.info = 'yet another thing'
This makes it particularly great for storing settings ! That's exactly why I needed that, see the corresponding gem : settings-tree
I didn't wrote Recursive Open Struct (stumbled upon it thanks to google), I just packaged it into a gem for my (and now your) convenience.
Enjoy !
Gemmes
Je ne le fais pas suffisamment : je vais essayer de redistribuer du code.
Comme je fais actuellement du Ruby on Rails, je vais commencer par faire l'effort de packager certains bouts de code réutilisables en gemmes.
N'hésitez pas à commenter. (On va bien voir ce que ça donne...)
Installer Ruby On Rails
"Ruby on Rails", le célèbre framework web, évolue très vite et son installation n'est pas simple. Voici donc un petit tutoriel d'installation de RoR sous Windows pour les prochains à s'y frotter.
1) Choisir le type d'installation
RoR n'est pas fait pour Windows, mais plutôt pour les unix. Vous n'aurez jamais autant de fonctionnalités sous Windows.
Vous pouvez :
- Utiliser l'installeur Ruby pour Windows http://accidentaltechnologist.com/ruby-on-rails/running-rails-3-on-windows/
- Utiliser Cygwin et installer Ruby en tant que paquet Cygwin. http://wiki.rubyonrails.org/getting-started/installation/cygwin
- Utiliser une solution de virtualisation et faire tourner un unix dans votre Windows.
La 1ère solution est la plus simple et la plus rapide.
La 2ème solution est plus compliquée mais aussi plus puissante, car vous serez alors capable d'installer plus d'extensions ("gemmes") qu'avec la première méthode. Enfin, le peu de gemmes qui marchent sous windows...
La 3ème solution, si vous avez un bon processeur et plein de RAM, est la plus puissante, mais aussi la plus longue et la plus compliquée (quoique plus instructive). J'ai acheté 8Go de RAM justement pour ça, c'est donc cette solution que j'utilise. Cela fonctionne très bien.
Les problèmes que j'ai rencontrés :
1) Si vous bloquez à l'installation de RubyGems sous Windows comme moi :
ruby setup.rb
F:/- trie/Bulk/Ruby/rubygems-1.3.7/lib/rubygems/source_index.rb:68:in `installed_spec_directories': undefined method `path' for Gem:Module (NoMethodError)
from F:/- trie/Bulk/Ruby/rubygems-1.3.7/lib/rubygems/source_index.rb:58:in `from_installed_gems'
from F:/- trie/Bulk/Ruby/rubygems-1.3.7/lib/rubygems.rb:883:in `source_index'
from F:/- trie/Bulk/Ruby/rubygems-1.3.7/lib/rubygems/gem_path_searcher.rb:81:in `init_gemspecs'
from F:/- trie/Bulk/Ruby/rubygems-1.3.7/lib/rubygems/gem_path_searcher.rb:13:in `initialize'
from F:/- trie/Bulk/Ruby/rubygems-1.3.7/lib/rubygems.rb:841:in `new'
from F:/- trie/Bulk/Ruby/rubygems-1.3.7/lib/rubygems.rb:841:in `block in searcher'
from <internal:prelude>:10:in `synchronize'
from F:/- trie/Bulk/Ruby/rubygems-1.3.7/lib/rubygems.rb:840:in `searcher'
from F:/- trie/Bulk/Ruby/rubygems-1.3.7/lib/rubygems.rb:479:in `find_files'
from F:/- trie/Bulk/Ruby/rubygems-1.3.7/lib/rubygems.rb:983:in `load_plugins'
from F:/- trie/Bulk/Ruby/rubygems-1.3.7/lib/rubygems.rb:1139:in `<top (required)>'
from <internal:lib/rubygems/custom_require>:29:in `require'
from <internal:lib/rubygems/custom_require>:29:in `require'
from setup.rb:24:in `<main>'
Voici la solution : RubyGem est déjà installé ! Il est maintenant installé d'office avec Ruby : Il n'y a rien à faire en fait. La preuve : tapez "gem" et vous verrez.
rails new testrailscd testrailsrails server
et là, encore drame...
:
\My Dropbox\www\railtest>rails servercould not find gem 'sqlite3-ruby (>= 0, runtime)' in any of the gem sources listed in your Gemfile. try running `bundle install`.
Bon, et bien on installe la gemme manquante puisque ça le demande :
:\My Dropbox\www\railtest>gem install sqlite3-rubyEt là, rails server : encore drame ! Manque une petite dllEn fait, il faut la récupérer ici : http://www.sqlite.org/download.html
Et voilà, ça marche enfin !
Faire du Rails, ça se mérite on dirait ! Ou plutôt, vouloir faire du rails sous windows, c'est très bête ;-)
Offirmo *abandonne* le php
Bon bon bon...
Ceci nécessite quelques explications...Ce n'est pas que je n'aime pas le php. C'est même l'un des langages les plus agréables que j'ai utilisé jusqu'ici.Non. C'est juste que je veux développer des outils web (je ne dit pas "site", c'est trop restrictif). Et pour ça, je crois bien que j'ai fait une erreur en visant le php. Premièrement, on peut faire un serveur web dans n'importe quel langage : En C, en Java, en php, en Ruby... Mais il y a en réalité deux grandes tendances : php (+framework) et Ruby on Rails (Ruby + framework Rails).Si vous avez lu mon post précédent, vous avez du comprendre que je débutais en développement web. Je n'avais donc pas tout compris. Il y a même de grosses erreurs. Mais c'est normal. Quelques mois plus tard, j'en sais un peu plus. Ce que j'avais CRU comprendre, en cherchant sur le net quelle techno je devais apprendre :- php + Zend Framework est plus difficile au début, mais plus propre, plus souple et plus performant sur le long terme
- Ruby on Rails est plus facile au début, mais l'utilisateur est plus bridé à long terme et les performances sont moins bonnesVu comme ça, qu'auriez vous choisi ? J'ai pris php + Zend framework, évidemment, en me disant "RoR c'est pour les bébés, moi je vise le long terme". Erreur totale. C'est aussi faux que de dire que MacOS X est pour les bébés (ce que certains PC-istes pensent, troll inside ;-)J'ai galéré avec le Zend Framework. J'ai presque réussi à faire un exemple basique qui fonctionne proprement. Mais j'ai galéré, même si j'ai beaucoup appris en architecture de site web grâce à leur framework qui est bien pensé. J'ai galéré notamment sur cette *%¨*% de couche de persistence que je voulais à MA manière : évolutive et sécurisée. Mais ce n'est pas facile... Et là, je viens de visionner cette vidéo (qui est déjà périmée !!) : http://media.rubyonrails.org/video/rails_blog_2.movEt là j'ai vu la lumière... Non, RoR n'est pas un "framework plus facile", c'est une BIEN MEILLEURE ABSTRACTION, c'est un langage de BIEN PLUS HAUT NIVEAU, c'est un ensemble BEAUCOUP PLUS SOUPLE ! C'est 100 FOIS MIEUX FICHU ! Et tant pis si les perfs sont une petit peu plus faible ou si on ne peut pas faire certaines bidouilles. Oui, c'est comme l'assembleur contre le C. On peut faire mieux en assembleur mais cela prend 100 fois plus de temps à écrire. Qui développerait encore en assembleur de nos jours ? Ou même en C ? Bon, je suis un peu violent dans mes comparaisons, ne retenez que l'idée générale ^^ Oublié le php et Zend Framework ! Je ne rêve plus que de découvrir un peu plus RoR et de développer ENFIN mes idées d'outils web, plutôt que de galérer avec la tuyauterie sous-jacente.Stay tuned pour la suite !
Offirmo se met au PHP
[Note : ce post reflète l'état de mes mé-connaissances au moment où je l'ai écrit. Mourrez de rire à l'endroit où je dit que Ruby on Rails est un framework pour php ;-) ]
Nous vivons l'âge d'or d'internet. Ingénieux en plus d'être ingénieur, j'ai moi aussi des idées de sites qui seraient très utile. Certaines ont déjà été réalisées par d'autres (je n'ai pas le monopole...), certaines pas encore... C'est parti pour faire du "web 2.0" moi aussi !
Mais pour cela, il me faut ajouter quelques cordes à mon arc. Lesquelles ? En quoi est développé un site web 2.0 à l'heure actuelle ? Regardons les références : google et quelques autres. Et après quelques recherches sur le net, il me semble que l'association de technologies la plus répandue (juin 2010) est :- PHP avec un "framework" (comme Ruby on rails, etc.)
- une base de données SQL. Évidemment, il y a d'autres moyens, et le couple PHP+SQL n'est visiblement pas le plus innovant. Les technologies web sont en évolution très rapides actuellement. Il se crée 1 framework toutes les 5s apparemment, et j'entends parler de NOSQL. Mais ce couple PHP+SQL a l'air incontournable, donc utile à apprendre. Utile aussi pour le *CV* :-P Je m'attaque donc au PHP et au SQL standard. J'ai déjà abordé les technos web en école supérieure via un petit projet JSP+Oracle. À moi de prouver qu'un bon ingénieur sait apprendre rapidement n'importe quelle technologie. Je choisi d'apprendre PHP sans framework pour commencer pour des raisons éducatives. Je ne sous-estime pas les framework, mais j'ai un peu de mal à saisir précisément le concept et le périmètre. Je vais donc apprendre la base pour mieux comprendre ce qu'apporte la couche supplémentaire. Je passerai à un framework ensuite. Je compte vous faire partager ma quête de connaissance pour le(s) prochain(s) qui seront dans mon cas. Conseils et retours bienvenus ! Joyeux web 2.0 !
Liens :
- Simple entrepreneur (mon héros !) : Quelles technologies utiliser pour développer un site web 2.0 ?
Nerd pride day 2010 !
Posterous ça déchire
Belles cartes de loup-garou, gratuites !
Voici les personnages peu connus :





