[AVIS] Rubis & ROR

Statut
N'est pas ouverte pour d'autres réponses.

LEM01

Touriste
Hello,
J'ai dans l'idée de me plonger dans un nouveau langages web, histoire de découvrir de nouveaux horizons :p

J'ai entendu parlé de Ruby (qui n'est pas uniquement web entendons nous bien) et plus précisément de son framework Ruby On Rail, d'apres ce que j'ai pu lire jusque maintenant ça à l'air assez costaud, voir terrible en lisant certains commentaires. Je voulais simplement avoir votre avis la dessus.

Pensez vous que ce langage (prometteur) va percer, être accepter au niveau des entreprises? Si vous avez eu la chance de déjà y toucher qu'en avez vous penser? Performance, API, ... Et au passage tout ce que vous avez trouver comme points négatifs histoire d'être critique.

Enfin voila, j'attends vos avis :)
 
Je n'ai trouvé que un article interessant pour le moment : ICI

Perso ca m'a l'air d'être encore un peu jeune pour s'y mettre :p Et la question pour les gros projets, le niveau de la charge sur le serveur et ses performances.

Perso je reste sous PHP, et me remettrai bien à JAVA pour son JSP :)
 

Ahava

Revenant
J'en avais jamais entendu parler, je me lance à la recherche d'articles, vidéos & autres parce que le sujet du developpement web m'interesse :)
 

Ahava

Revenant
Hum ca a l'air assez mystique comme machin...


syntaxe totalement particulière, trop peu de compatibilité entre Ruby et Apache...


Jlaisserai bien mûrir un peu Ruby avant d'y gouter... :)
 
1er
OP
LEM01

LEM01

Touriste
trop peu de compatibilité avec apache ?? Ou t'as vu ça?
J'sais pas ça me semblait intéressante surtout le framework ROR.
 

neku

Codeur roumain
J'ai une connaissance, qui connait assez bien le ruby, il à pu me montrer une vidéo d'un gars faisant un site web de blog en 10mins en Ruby.

Je ne donnerai pas d'avis personnel sur le Ruby vu que je n'ai jamais essayé.
Mais il est pas rare de tomber sur des pages web proposant de l'aide ou des sources en Ruby, je dirais même trop souvent :/
Le Ruby est un langage qui semble savoir faire parler de lui.
 

Ahava

Revenant
LEM01 a dit:
trop peu de compatibilité avec apache ?? Ou t'as vu ça?
J'sais pas ça me semblait intéressante surtout le framework ROR.
J'ai simplement recherché un peu sur le net voir s'il était possible d'avoir Ruby en meme temps que PHP sur son serveur Apache de sorte à gérer les deux...

Ca doit surement etre faisable mais j'ai pas plus de temps pour le moment pour m'y consacrer...
 

Ezekiel !

Elite
Ca fait perpette que ce langage est sorti et fonctionnel mais il est toujours loin derriere PHP.
Perso j'ai regardé un peu ce qu'il en était à la sortie de ce langage et c'est clair qu'il a des avantages.
En fait ce qui est vraiment chiant c'est de mettre 20 min pour afficher un "Hello world".
Par contre niveau productivité, si tu "t'entraines" un peu à utiliser ce langage, tu gagneras vraiment beaucoup par rapport au PHP.
Sinon le site de j0k3r a quand même pas mal de ressources pour Ruby :
http://www.j0k3r.net/faire-une-recherche.html?q=ruby
Si jamais tu fais qqchose en ruby poste les ici :p
 
W

whatever42

ex membre
Ez3kieL a dit:
Ca fait perpette que ce langage est sorti et fonctionnel mais il est toujours loin derriere PHP.
c'est celà, oui ...
le seul point vrai dans cette phrase ... c'est que Ruby fait aussi du fonctionnel


Ez3kieL a dit:
En fait ce qui est vraiment chiant c'est de mettre 20 min pour afficher un "Hello world".
$ rails myfirstapp
$ ./myfirst/script generate controller hello
$ vi ./myfirstapp/app/controller/hello_controller.rb
def say
render_text "Hello World!"
end
$ ./myfirstapp/script/server

faut vraiment pas être doué en dactylo pour prendre 20 minutes avec ça


Ez3kieL a dit:
Par contre niveau productivité, si tu "t'entraines" un peu à utiliser ce langage, tu gagneras vraiment beaucoup par rapport au PHP.
s/langage/framework/
 

Xou

I ♥ rien
Entre
Code:
$ rails myfirstapp
$ ./myfirst/script generate controller hello
$ vi ./myfirstapp/app/controller/hello_controller.rb
def say
 render_text "Hello World!"
end
$ ./myfirstapp/script/server
et
Code:
echo "Hello World!";
Outre les 20 minutes, est-ce que ça ne parait pas sensiblemenet plus long ? :roll:
Ca s'appelle jouer avec les mots tout simplement.
Ca ne parait pas pratique du tout de devoir faire une vingtaine de ligne pour un simple affichage, j'ai peur de voir une requete SQL, 50 lignes ? :-D
J'extrapole ne connaissant pas de langage, mais bon.

Pour le moment, ça n'a pas l'air au point, maintenant il peut être interessant ce langage.
 
W

whatever42

ex membre
bon, un exemple vu que plein de gens en parlent sans jamais en avoir vu

dans ta migration
les articles
Code:
create_table :articles do |t|
	  t.column :title, :string, :null => false
	  t.column :text, :text, :null => false
end
et les commentaires
Code:
create_table :comments do |t|
	  t.column :author, :string, :null => false
	  t.column :title, :string, :null => false
	  t.column :text, :text, :null => false
	  t.column :article_id, :integer, :null => false
end
on édite le fichier de config pour les paramètres d'accès à la DB (login, mot de passe, host, ...) et puis pour générer automatiquement les tables :
$ rake db:migrate

on passe maintenant à la modélisation de données
les articles
Code:
class Article < ActiveRecord::Base
  has_many :comments, :dependent => true

  validates_presence_of :title, :message => '^Il faut un titre'
  validates_presence_of :text, :message => '^Il faut du texte'
  validates_length_of :title, :minimum => 5, :message => '^Mettez un titre plus étoffé'
  validates_length_of :text, :minimum => 20, :message => '^Et vous appelez ça un article ?'
et pour les commentaires
Code:
belongs_to :article
enfin, le controlleur et la vue d'une liste d'article
Code:
def list
  @articles_page, @articles = paginate :articles, :order => 'id', :per_page => 5
end
def new
	@article = Article.new
  end
def create
  @article = Article.new(params[:article])
  if @article.save
	flash[:notice] = "Article créé"
	redirect_to :action => 'list'
  else
	render :action => 'new'
  end
end
def destroy
  begin
	Article.find(params[:id]).destroy
  rescue Exception => excep
	flash[:notice] = excep
  ensure
	redirect_to :action => 'list'
  end
end
et la vue qui affiche les articles avec leurs commentaiers
Code:
<p class="notice"><b><%= flash[:notice] %></b></p>

<% for article in @articles %>
<h3><%= h article.title %></h3>
<p><%= textilize article.text %></p>
  <h4>Commentaires - <%= link_to "Ajouter un commentaire", :action => 'addcomment', :id => article %></h4>
  <% for commitem in article.comments %>
  <dl>
	<dt><u><%= h commitem.title %></u></dt>
	<dd><%= textilize commitem.text %>
	  <b>Auteur : <%= h commitem.author %></b>
	</dd>
  </dl>
  <% end %>
  <%= "<dl><dt>Aucun</dt></dl>" if article.comments.blank? %>
</div>
<% end %>
alors donc nous n'avons vu aucune ligne de SQL

la suppression récursive article -> commentaires associés est automatique, c'est le modèle qui détermine si oui ou non il faut procéder ainsi, il peut aussi lancer une exception qui affichera un joli message d'avertissement

c'est de l'OO de a à z, Article.find:)first, :conditions => [ 'title = ?', var_titre ]).comment[2].author
avec ça on cherche le premier article qui a pour titre la variable var_titre, et on récupère le nom de l'auteur du 3ème commentaire de cet article
remarquez aussi que Ruby On Rails va échapper tous les caratères pour var_titre et la rendre 'safe', qui a dit SQL injection ?

remarquez aussi 'textilize' ... ça permet d'avoir du html avec une syntaxe Wiki, et 'h' qui échappe tous les caractères pour en faire des html entities

enfin, tous les messages qu'on a au niveau du modèles peuvent être affichés (en gros) au moment de la création / modification d'un article si les paramètres ne correspondent pas aux conditions demandées.
Code:
<%= error_messages_for 'contact' %>
enfin, le 'paginate' permet d'automatiquement avoir, ici, 5 articles par page, avec tout le support pour changer de page et afficher la suite, par exemple pour avoir le numéro des 5 pages précédentes et suivantes (à la google)
Code:
<%= pagination_links(@articles_page, { :window_size => 10 } )
alors j'ai sûrement encore oublié mille chose comme les test intégrés, de l'ajax à gogo facile (pour ceux qui aiment), une console pour tester en live, le support des breakpoint pour débugguer, une classe pour gérer les mailings en qques lignes, un loggueur intégré avec différent niveau d'alerte et de formatage, le scaffolding pour générer rapidement un prototype d'essai, un système de gestion de plugins avec des 100 aines de disponibles en une ligne de commande, du caching performant et simple, une sécurité accrue (SQL injection, XSS), bla bla bla ...
 
Roof j'aurai du mal à m'y mettre à ce language vu la syntaxe :pfiou:
 

guslinux

Gamerz'ien
.Xyo a dit:
Entre
Code:
$ rails myfirstapp
$ ./myfirst/script generate controller hello
$ vi ./myfirstapp/app/controller/hello_controller.rb
def say
 render_text "Hello World!"
end
$ ./myfirstapp/script/server
et
Code:
echo "Hello World!";
Outre les 20 minutes, est-ce que ça ne parait pas sensiblemenet plus long ? :roll:
Ca s'appelle jouer avec les mots tout simplement.
Ca ne parait pas pratique du tout de devoir faire une vingtaine de ligne pour un simple affichage, j'ai peur de voir une requete SQL, 50 lignes ? :-D
J'extrapole ne connaissant pas de langage, mais bon.

Pour le moment, ça n'a pas l'air au point, maintenant il peut être interessant ce langage.
L'exemple est très mal choisis.

C'est clair que au début ca semble lourd ... mais quand tu dois faire de la gestion de bd c'est bluffant !! cherche de la doc sur scaffold :-D
 

Ezekiel !

Elite
Je voulais dire que RoR est sorti depuis longtemps mais qu'il est encore très peu utilisé.
De plus pour les 20 min, certes c'est exagéré mais j'ai vraiment eu cette impression de "lenteur".
Entre un easyPHP qui s'installe en 2 minutes et ou il faut à peine configurer le php.ini et un server ruby un peu plus "difficile" à mettre en place ainsi que le nombre plus élevé de ligne de code à faire pour afficher un bete "hello world" m'ont un peu repousser.
 

Xou

I ♥ rien
guslinux a dit:
L'exemple est très mal choisis.

C'est clair que au début ca semble lourd ... mais quand tu dois faire de la gestion de bd c'est bluffant !! cherche de la doc sur scaffold :-D
Disons que quand tu vois cet exemple, et puis l'agressivité dû à une expression incomprise, j'ai trouvé ça fort. :-D

Mais clairemement, ça a l'air beaucoup plus facile à vue de nez comme ça.
Sans doute je m'y laisserai tenter quand j'aurai un peu de temps, quoique ma priorité pour le moment c'est l'action script :-D
'fin j'avoue que je me tate entre les deux
 

guslinux

Gamerz'ien
.Xyo a dit:
Disons que quand tu vois cet exemple, et puis l'agressivité dû à une expression incomprise, j'ai trouvé ça fort. :-D

Mais clairemement, ça a l'air beaucoup plus facile à vue de nez comme ça.
Sans doute je m'y laisserai tenter quand j'aurai un peu de temps, quoique ma priorité pour le moment c'est l'action script :-D
'fin j'avoue que je me tate entre les deux
En fait la philosophie de ruby on rails est vraiment pas mal. Mais il y a tellement d'autres langages ... Flex, PHP,ASP,MACH II... moi je commence à m'y prerdre :pfiou:

Quelque chose d'hyper intéressant avec Ruby, c'est qu'on peut faire un package avec le programme et rendre les sources innacessibles. Intéressant lors de la vente d'un logiciel :-D
 
W

whatever42

ex membre
un petit aperçu des fonctionnalités et de la tête du code nécessaire pour les mettre en application : http://www.rubyonrailsblog.com/files/RoRblog-CheatSheet.pdf
il s'agit d'une cheatsheet, un pense bête, et donc pas une introduction, mais ça donne de bons exemples

pour une introduction au ruby toute en douceur :
http://www.ruby-doc.org/docs/ApprendreProgrammer/Apprendre_%E0_Programmer.pdf
et c'est même en Français

et enfin, pour réellement vous attaquer à Ruby on Rails
http://www.railsfrance.org et leurs quelques articles de documentation si vous voulez essayer sans débourser un sous
ou l'excellent bouquin "Agile Web Development with Rails", sortie en deuxième édition il y a pas si longtemps que ça

pour ceux qui auraient des peurs d'installation : http://blog.slainer68.org/1/3/2007/easyrails
le nom n'est pas innocent

et pour ceux qui sont sous un OS du bien, ruby, rubygems et rails sont packagés, ajoutez-y un postgresql/mysql et un lighttpd/apache et vous voilà prêts à faire de la production


PS: et je suis agress^Wint-aigre-iste si je veux d'abord
 

guslinux

Gamerz'ien
whatever42 a dit:
ou l'excellent bouquin "Agile Web Development with Rails", sortie en deuxième édition il y a pas si longtemps que ça
lol il va seulement arriver en Belgique ... chez Agora ils ne l'ont toujours pas :roll:
 
Statut
N'est pas ouverte pour d'autres réponses.
Haut