JeuWeb - Crée ton jeu par navigateur
Un avis sur Rails - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : Un avis sur Rails (/showthread.php?tid=2523)

Pages : 1 2


RE: Un avis sur Rails - srm - 17-09-2010

Tu as vu d'ailleurs j'ai commit le split tout à l'heure ? lol
Comme ça tu vois comment moi je le fais, je trouve que c'est plus simple que ta façon ^^

http://pastie.org/1165407


RE: Un avis sur Rails - gameprog2 - 17-09-2010

Ils essaient tous (les copies) de se rapprocher de Rail, donc y a pas photo sur le meilleur actuellement Wink


RE: Un avis sur Rails - srm - 17-09-2010

Tout est relatif, ceux qui disent que Play copie Rails, ça me fait rire, hormis la couche MVC pareil, je ne vois pas ce qu'il y a de pareil Smile


RE: Un avis sur Rails - atra27 - 18-09-2010

Comment on peut copier sachant que c'est pas le méme language???


Reprendre les principes pourquoi pas mais si on part de ça tout le monde reprend un peu tout le monde non?


RE: Un avis sur Rails - Sephi-Chan - 18-09-2010

Bien sûr, c'est trop facile de dire qu'untel copie untel. C'est normal qu'il y ai des similitudes sans pour autant avoir à parler de plagiat.

Par exemple, Zend Framework ne copie absolument pas Rails, c'est l'opposé en terme de framework. En revanche, Symfony s'en inspire pas mal.

CakePHP s'en inspire énormément (enfin, dans la limite de ce que PHP peut faire pour ressembler à du Ruby), voici un modèle issu d'un projet Rails et son plus proche penchant avec CakePHP.


class HeaderPastie < ActiveRecord::Base

EXPIRATION_DELAYS = {
:never => nil,
:ten_minutes => 10.minutes,
:one_hour => 1.hour,
:one_day => 1.day,
:one_month => 1.month
}.with_indifferent_access


has_many :pasties, :class_name => 'Pastie' # By default, Pasty is inferred.
has_many :taggings
has_many :tags, :through => :taggings


before_create Confusedet_expiration_date
before_create Confusedet_private


def expiration_delay=(expiration_delay)
if EXPIRATION_DELAYS.has_key?(expiration_delay)
@expiration_delay = EXPIRATION_DELAYS[expiration_delay]
else
@expiration_delay = :never
end
end


def expired?
expire_at && expire_at.past?
end


private

def set_expiration_date
self.expire_at = @expiration_delay && @expiration_delay.from_now
self
end


def set_private
self.private = private? ? generate_private_key : nil
self
end


def generate_private_key
private_key_elements = [ Pasteque::Application.config.secret_token, Time.now.usec ]
Digest::MD5.hexdigest(private_key_elements.join('*'))
end

end


Le modèle le plus proche en PHP, avec CakePHP :


<?php

class HeaderPastie extends AppModel {

const EXPIRATION_DELAYS = array(
'never' => null,
'ten_minutes' => 10 * 60,
'one_hour' => 60 * 60,
'one_day' => 24 * 60 * 60,
'one_month' => 30 * 24 * 60 * 60
);

public $hasMany => array(
'Tagging' => array(
'ClassName' => 'Pastie'
)
);
public $hasAndBelongsToMany => array(
'Tag' => array(
'joinTable' => 'taggings'
)
);


public function expired(){
if($this->expireAt && $this->expireAt < time()){
return true;
}

return false;
}


public function setExpirationDelay(expirationDelay){
if(array_key_exists(expirationDelay, self::EXPIRATION_DELAYS){
$this->expirationDelay = self::EXPIRATION_DELAYS[expirationDelay];
}
else {
$this->expirationDelay = 'never';
}
}


// On ne peut pas définir plusieurs filtres, donc on fait tout dans le même filtre.
public function beforeSave(){
// Set expiration date.
if($this->expirationDelay){
$this->expireAt = time() + $this->expirationDelay;
}
else {
$this->expireAt = null;
}

// Set private.
$this->private = $this.private == true ? $this->generatePrivateKey() : null;

return true;
}


private function generatePrivateKey(){
$private_key_elements = array('a_secret_token', microtime());
return md5(implode('*', $private_key_elements);
}

}

Alors Atra, convaincu des similitudes ? Le problème c'est qu'en PHP, on ne peut pas appeler des méthodes dans le corps des classes (comme je le fais en Ruby avec has_many, before_create, etc.), donc CakePHP utilise des attributs.


Un autre point qui n'est pas mis en avant mais qui est pourtant un gros avantage de Rails : la documentation. Elle est vraiment géniale, grâce aux guides et à l'API très documentée. Quand tu vois celle de Symfony, par exemple, c'est une autre paire de manche pour trouver l'information (exemple, trouver la documentation pour les vues partielles pour Symfony 1.4).


Sephi-Chan


RE: Un avis sur Rails - srm - 18-09-2010

Et bien reprendre le même principe, la même structure, etc
De toute façon c'est à le mode de dire que "machin copie machin" Smile


RE: Un avis sur Rails - Sephi-Chan - 18-09-2010

Le fait est qu'avant Rails, les frameworks n'avaient pas cette gueule là. Smile


Sephi-Chan


RE: Un avis sur Rails - srm - 18-09-2010

Il a ouvert la voie assurément, comme les Beatles dans la musique, maintenant en partant de Rails tout le monde suit sa voie Smile