IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Ruby on Rails Discussion :

Cherche cours particuliers de RoR


Sujet :

Ruby on Rails

  1. #1
    Membre régulier Avatar de Blaede
    Profil pro
    Inscrit en
    Août 2007
    Messages
    120
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2007
    Messages : 120
    Points : 82
    Points
    82
    Par défaut Cherche cours particuliers de RoR
    Hello,

    alors voilà, j'ai un projet à remettre pour le 5 juin en RoR
    et je ne m'en sors vraiment pas.

    Si qqun peut m'aider à avancer dans ce projet (qui est
    conceptuellement très simple !), je me ferai un plaisir
    de le rémunérer. Je pense qu'il est tout à fait possible
    d'organiser cela via mails et msn.

    Si l'un de vous est intéressé, qu'il n'hésite pas à me
    contacter rapidement. Je précise qu'il ne s'agit pas de
    faire le projet à ma place (puisque de toute façon je dois
    être capable de le défendre oralement) mais simplement
    de m'aider à surmonter les difficultés que je rencontre.

    D'avance merci !
    Nicolas
    Y a des jours, faut pas me chercher... et y a des jours tous les jours !

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    172
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 172
    Points : 219
    Points
    219
    Par défaut
    Bonjour,

    Et pourquoi ne posterais tu pas tes questions au fur et à mesure ici sur ce forum. En ciblant correctement tes questions, tu auras des réponses précises, plusieurs "professeurs particuliers" et tout ça gratuitement ;-)

    Ça pourrait nous amuser aussi de réfléchir en commun sur un projet Rails si il est assez simple.

    Côme

  3. #3
    Membre régulier Avatar de Blaede
    Profil pro
    Inscrit en
    Août 2007
    Messages
    120
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2007
    Messages : 120
    Points : 82
    Points
    82
    Par défaut
    Je vais essayer d'expliquer clairement la nature du projet
    et la principale raison de mon découragement

    Je suis en dernière année informatique de gestion dans une
    école supérieure à Bruxelles (une fois). Dans le cadre de
    ce graduat, je dois réaliser un projet internet/intranet.
    J'ai décidé de réaliser un site qui servirait de support à mon
    travail de fin d'études : un jeu de plateau multijoueur.


    Le jeu en question est l'adaptation d'un best seller des jeux
    de plateau : Caylus.
    Ce travail de fin d'étude est presque terminé et je dois donc
    maintenant me consacrer à cet autre projet. Le prof désire
    absolument que ce dernier soit "original" et c'est pourquoi
    j'ai choisi RoR plutôt que php.

    Le site web devrait servir de lien entre mon serveur java et
    les clients java du jeu. Le serveur java tourne en permanence
    et attend la connexion avec les clients (les joueurs donc).
    Lorsque le nombre de joueurs désiré est atteint, il lance une
    partie.

    J'aurai entre autre dans ma DB une table "Game" qui contient
    la liste des parties créées en attente de joueurs et une table
    "Player" qui contient la liste des joueurs en attente d'une partie
    ainsi qu'un champs (foreign key) indiquant la partie dans la table
    Game qu'ils ont choisi de rejoindre.

    Sur le site j'aurai évidement les pages classiques, page d'accueil,
    page d'enregistrement du joueur (login, password), une page avec
    les règles du jeu, ...
    J'aurai également une page affichant la liste des parties disponibles
    (déjà créées donc) que les joueurs peuvent rejoindre (il s'agit donc
    d'afficher simplement le contenu de la table Game). Deux boutons,
    create et join, au bas de la page permettront aux joueurs soit de créer
    une nouvelle partie, soit d'en rejoindre une déjà existante.

    Si il sélectionne une partie et click sur join son adresse ip ainsi que son
    pseudo devraient être stockés dans la table Player.
    Régulièrement, le serveur java ira lire cette table pour prendre les ip
    et lancer la partie quand le nombre de joueurs requis est atteint.

    Si le joueur click sur create, une nouvelle page contenant un formulaire
    devrait s'afficher. Le joueur pourra choisir le nombre de joueurs (entre 2 et 5),
    le nom de la partie, le temps alloué à chacun pour joueur son tour avant
    d'être éliminé et idéalement un password (pour joueur avec ses amis
    uniquement mais bon ça c'est facultatif).
    Une fois ces infos validées, un tuple sera ajouté dans la table Game et
    la nouvelle partie ainsi créée sera donc visible sur la page.

    Enfin, j'aurai une page affichant les infos d'une autre table "Stat" reprenant
    le nom des joueurs ayant obtenu les meilleurs scores, la date de la partie,
    etc. (ceci est également facultatif, pas indispensable pour le bon déroulement
    du jeu).

    Mon problème pour l'instant :

    Le pont entre mon application java et le site web est donc la base de données. Hors dans les différents tuto que j'ai lus et dans le livre que j'ai
    acheté "Pratique de Ruby on Rails - Eric Sarrion - O'Reilly" il m'a semblé
    comprendre que Rails générait seul une bonne partie du code lié aux tables
    de la db qui est rattachée au projet, tel que create, remove, update, delete
    (CRUD). Hélas je n'arrive pas à générer ce code ! Lorsque je fais un generate
    scaffold ou un generate model, il ne génère que des classes vides...

    J'espère avoir été plus ou moins clair
    Je suis dispo pour répondre aux éventuelles questions bien entendu !

    Merci d'avance,
    Nicolas
    Y a des jours, faut pas me chercher... et y a des jours tous les jours !

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    172
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 172
    Points : 219
    Points
    219
    Par défaut
    Citation Envoyé par Blaede Voir le message
    Mon problème pour l'instant :

    Le pont entre mon application java et le site web est donc la base de données. Hors dans les différents tuto que j'ai lus et dans le livre que j'ai
    acheté "Pratique de Ruby on Rails - Eric Sarrion - O'Reilly" il m'a semblé
    comprendre que Rails générait seul une bonne partie du code lié aux tables
    de la db qui est rattachée au projet, tel que create, remove, update, delete
    (CRUD). Hélas je n'arrive pas à générer ce code ! Lorsque je fais un generate
    scaffold ou un generate model, il ne génère que des classes vides...
    Il est normal que les classes générées dans "app/models" soient créées vides par le générateur. Les requêtes SQL d'accès sont générées dynamiquement à la volée.

    Par contre, lorsque tu génères un scaffold, tu dois trouver un contrôleur dans "app/controllers" qui, lui, contient le code relatif aux actions create, remove, etc... Ces actions apparaissent sous la forme de méthodes classe.

    Lorsque tu as généré un scaffold pour une table existante (tu as dû constater que Rails pouvait aussi créer ces tables pour toi à l'aide des migrations), tu dois déjà pouvoir lancer un service Web (ruby script/server start) et te connecter à ton site sur le port 3000 (valeur par défaut en général). Il faut bien sûr ajouter à l'URL saisie le nom de ton contrôleur.

    Par exemple si tu veux une table "joueurs" avec un champ "name" de type string (par exemple), tu te places à la racine de ton répertoire rails que tu as créé avec la commande "rails" et tu génères ton scaffold par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ruby script/generate scaffold joueur name:string
    Tu crées ensuite ta table dans la base avec :

    Ceci a pour but de jouer la migration générée par le scaffold (tu trouves la migration dans app/db/migrate/001_create_joueurs.rb, si tu as fais les mêmes actions que moi).

    Tu as le model dans app/models : "joueur.rb". C'est une classe vide, mais ça marche déjà.

    Ton contrôleur est dans app/controlleurs : joueurs_controller.rb. Il ne doit pas être vide et contenir les actions create, delete, etc...

    Côme

  5. #5
    Membre régulier Avatar de Blaede
    Profil pro
    Inscrit en
    Août 2007
    Messages
    120
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2007
    Messages : 120
    Points : 82
    Points
    82
    Par défaut
    Merci beaucoup pour ta réponse Côme.

    J'ai fait un ruby script/generate scaffold player mais je n'ai pas donné de paires attribut:type en paramètre pensant que RoR irait chercher tout seul dans la table Player (il a le lien vers la DB dans le fichier database.yml) la liste des champs.

    D'ailleurs dans tous les exemples de première application que j'ai vu, tout ce qu'ils disent de faire c'est le generate scaffold nomdelatable et puis quand on lance le server webrick et qu'on test en localhost:300/players, ça fonctionne.

    Moi j'ai bien la page Liste des joueurs avec les liens show, edit, delete et le bouton new player mais quand je click sur new player j'arrive sur une page qui
    contient juste le bouton create mais sans formulaire pour pouvoir remplir les champs de la table.

    Donc il crée bien le scafforld avec les actions dans le contrôleur mais il ne va pas chercher les champs dans la table et donc il ne crée pas le formulaire dans la vue

    Hors dans les exemples ça paraît extrêmement simple il suffit d'indiquer où se trouve la db dans le fichier database.yml, de faire le generate/scaffold nomdelatable et puis de lancer le serveur et on a la page avec le formulaire de création etc. (cf d'ailleurs le tuto d'initiation à RoR qui se trouve sur ce site).

    Ils ne parlent nulle part de faire un db:migrate ou de fournir les champs lors du scaffold (d'ailleurs je trouve ça un peu dommage de devoir le faire, ça limite quand même fort l'intérêt du framework je trouve). Ce que je trouvais justement génial avec RoR c'est qu'il allait lire la structure de la table et en déduisait le formulaire nécessaire pour la vue et les actions de CRUD.

    Ai-je raté une finesse ou me suis-je simplement fait des illusions sur la puissance de RoR ?

    Je vais de toute façon essayer la méthode que tu m'as donnée Côme,
    merci !

    Nicolas
    Y a des jours, faut pas me chercher... et y a des jours tous les jours !

  6. #6
    Membre régulier Avatar de Blaede
    Profil pro
    Inscrit en
    Août 2007
    Messages
    120
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2007
    Messages : 120
    Points : 82
    Points
    82
    Par défaut
    Voilà je viens d'essayer.

    je fais un ruby script/generate scaffold player name:string city:string date_of_birth:date password:string

    ensuite je fais un rake db:migrate et voici ce que j'ai comme message sur ma console :



    C'est désespérant de ne pas pouvoir faire une chose aussi simple que l'exemple de départ du chapitre 2 de mon livre
    Y a des jours, faut pas me chercher... et y a des jours tous les jours !

  7. #7
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    172
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 172
    Points : 219
    Points
    219
    Par défaut
    Citation Envoyé par Blaede Voir le message
    Ai-je raté une finesse ou me suis-je simplement fait des illusions sur la puissance de RoR ?

    Tu n'as pas raté de finesse: si ta table existe déjà avec des colonnes, tu n'as pas besoin de passer les arguments nom_colonne:type_colonne au générateur. Ni même de faire de "rake db:migrate".
    Cependant, il faut adapter peut être un peu ta table pour la rendre conforme aux conventions Rails : l'une des colonnes doit s'appeler "id" et contient l'identifiant d'un objet/ligne. Les relations entre les tables se traduisent par des colonnes "nom_table_id".
    A part ça : tout devrait rouler.

    Par ailleurs, pour le post que tu as écris pendant que je te répondais : il est normal d'obtenir cette erreur car tu ne peux pas recréer de table "players" si tu en as déjà une. Le message d'erreur que tu obtiens est déjà rassurant car cela montre que Rails accède bien à ta base de données.

    Que renvoie chez toi la comande suivante ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    D:\CaylusWebsite>irb
    irb(main):001:0> require "config/environment"
    => true
    irb(main):002:0> Player.column_names
    => ["id", "... .???
    Côme

  8. #8
    Membre régulier Avatar de Blaede
    Profil pro
    Inscrit en
    Août 2007
    Messages
    120
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2007
    Messages : 120
    Points : 82
    Points
    82
    Par défaut
    Voilà ce que j'obtiens :




    Contenu de schema.rb

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    ActiveRecord::Schema.define(:version => 0) do
     
      create_table "games", :primary_key => "ID", :force => true do |t|
        t.string  "Game",    :limit => 20, :default => "", :null => false
        t.integer "Players", :limit => 10,                 :null => false
        t.integer "Timer",                                 :null => false
        t.string  "Host",    :limit => 20, :default => "", :null => false
      end
     
      add_index "games", ["Host"], :name => "Host"
     
      create_table "players", :primary_key => "ID", :force => true do |t|
        t.string "Name",          :limit => 20, :default => "", :null => false
        t.string "City",          :limit => 20, :default => ""
        t.date   "Date of birth"
        t.string "Password",      :limit => 20,                 :null => false
      end
     
      add_index "players", ["Name"], :name => "Name"
     
      create_table "scores", :primary_key => "ID", :force => true do |t|
        t.string  "Nom",     :limit => 20, :default => "", :null => false
        t.integer "Score",   :limit => 10,                 :null => false
        t.integer "Players", :limit => 10,                 :null => false
        t.date    "Date",                                  :null => false
      end
     
    end
    Y a des jours, faut pas me chercher... et y a des jours tous les jours !

  9. #9
    Membre éprouvé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    657
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 657
    Points : 910
    Points
    910
    Par défaut
    Salut,

    Donc il crée bien le scafforld avec les actions dans le contrôleur mais il ne va pas chercher les champs dans la table et donc il ne crée pas le formulaire dans la vue
    Non : ça ne fonctionne plus comme ça. Depuis Rails 2.0, ce qui s'appellait avant "scaffold resource" est devenu le scaffold classique et l'ancien à disparu. Les sources auxquelles tu fais référence utilisent probablement la version 1.x du framework.
    On a déjà souvent discuté de ce changement sur ce forum, je pense que tu trouveras facilement ces topics en utilisant la fonction de recherche


    Ai-je raté une finesse ou me suis-je simplement fait des illusions sur la puissance de RoR ?
    Oui et non
    La raison pour laquelle le scaffold a été supprimé est justement que trop de personnes le considéraient injustement comme une interface d'admin utilisable en production. Or il n'a pas été conçu pour ça, mais bien comme un "échafaudage" (d'où le nom), afin de créer rapidement une structure fonctionnelle pour batir un véritable site derrière.

    Le nouveau scaffold t'obliges à donner les champs du modèle que tu vas créer, mais génére bien le code du formulaire. Au lieu de créer le formulaire dynamiquement à chaque requête, le nouveau scaffold agit plutôt comme un template que tu vas modifier.
    Quant au fichier de migration, tu n'es pas obligé de l'utiliser si tu n'en as pas l'utilité.
    Toute la documentation Ruby on Rails : gotapi.com/rubyrails
    Mes articles :
    > HAML : langage de template pour Ruby on Rails

  10. #10
    Membre régulier Avatar de Blaede
    Profil pro
    Inscrit en
    Août 2007
    Messages
    120
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2007
    Messages : 120
    Points : 82
    Points
    82
    Par défaut
    Bon, mon bouquin date de 2006 et les tuto ne doivent pas être à jour non plus et forcément je ne pouvais pas deviner que quelque chose avait changé...

    C'est bien dommage qu'ils aient supprimé ce qui m'a poussé à choisir ce framework. J'ai pris RoR pour gagné du temps et au lieu de ça je vais en perdre.

    Je vais donc de ce pas écumer le forum à la recherche des modifications du scaffold dont tu parles.

    Merci beaucoup pour ta réponse en tout cas,
    j'aurais encore pu chercher longtemps pourquoi ça ne fonctionnait pas.
    Y a des jours, faut pas me chercher... et y a des jours tous les jours !

  11. #11
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    172
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 172
    Points : 219
    Points
    219
    Par défaut
    Bonjour,

    Citation Envoyé par Taum Voir le message
    Non : ça ne fonctionne plus comme ça. Depuis Rails 2.0, ce qui s'appellait avant "scaffold resource" est devenu le scaffold classique et l'ancien à disparu. Les sources auxquelles tu fais référence utilisent probablement la version 1.x du framework.
    On a déjà souvent discuté de ce changement sur ce forum, je pense que tu trouveras facilement ces topics en utilisant la fonction de recherche
    Effectivement, depuis Rails 2 on est en scaffold resource, mais cela ne change pas grand chose pour ce que veut faire notre amis dans l'immédiat : créer un formulaire pour créer son joueur: Cela fonctionne toujours. En tous cas chez moi en Rails 2.0.2.

    Côme

  12. #12
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    172
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 172
    Points : 219
    Points
    219
    Par défaut
    Citation Envoyé par Blaede Voir le message
    Voilà ce que j'obtiens :
    OK, j'ai essayé de refaire ta table à l'identique. Je suis parvenu à le faire en 30 secondes mais il faut modifier le code généré.

    Nom : creer joueur.png
Affichages : 41
Taille : 14,1 Ko

    Les espaces dans le nom de la colonne "Date of birth" font que le code généré n'est pas exécutable. Je ne met jamais d'espace pour ma part. Si tu veux absolument des espaces, il faut que tu remplaces partout dans ton code ate of birth par :"Date of birth".

  13. #13
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    172
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 172
    Points : 219
    Points
    219
    Par défaut
    Citation Envoyé par Blaede Voir le message
    Bon, mon bouquin date de 2006
    En effet c'est un peu vieillot pour une technologie en plein développement comme Rails. Il serait préférable de le réactualiser. Surtout si le prof qui vous juge connait aussi Rails: Si tu lui parle d'élément dépréciés, tu vas perdre en crédibilité.

    Citation Envoyé par Blaede Voir le message
    C'est bien dommage qu'ils aient supprimé ce qui m'a poussé à choisir ce framework. J'ai pris RoR pour gagné du temps et au lieu de ça je vais en perdre.
    Attention au fait que Rails est un outil très puissant si on le maîtrise quand même. Il n'y a pas de magie en fin de compte.
    Si tu es un as du PHP, tu trouveras toujours que tu aurais pu faire plus vite en PHP. Si tu veux te lancer dans Rails et Ruby, il est indispensable d'apprendre et de lire quelques bouquins avant de commencer.

    Côme

  14. #14
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 10
    Points : 13
    Points
    13
    Par défaut
    Citation Envoyé par Blaede Voir le message
    C'est bien dommage qu'ils aient supprimé ce qui m'a poussé à choisir ce framework. J'ai pris RoR pour gagné du temps et au lieu de ça je vais en perdre.
    Attend le scaffold c'est pour faire du prototypage rapide c'est tou. Le code qu'il sort est pas génial en production, mais pour du prototypage c'est très bien.

    Perso je n'utilise plus aucun générateur fournit avec Rails.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2007] Cherche cours particulier
    Par ICETEA54 dans le forum Access
    Réponses: 5
    Dernier message: 16/11/2009, 09h31
  2. Cherche prof particulier cours sur les regex à Paris
    Par zegilooo dans le forum Demandes
    Réponses: 0
    Dernier message: 23/10/2007, 14h14
  3. cherche cours particulier concernant les includes
    Par giova_fr dans le forum MFC
    Réponses: 6
    Dernier message: 27/01/2006, 14h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo