1. #1
    Community Manager

    Inscrit en
    avril 2014
    Messages
    647
    Détails du profil
    Informations forums :
    Inscription : avril 2014
    Messages : 647
    Points : 2 337
    Points
    2 337

    Par défaut Contribuez - Création de ressources Ruby

    Bonjour à tous.

    Nous aimerions développer la section Ruby / RoR de developpez.com.
    L'idéal serait de pouvoir créer une FAQ ainsi que quelques tutoriels.

    Afin de créer une FAQ, n'hésitez pas à poster en enfilade les questions / réponses qui vous viennent à l'esprit, celles que vous auriez aimé trouver sur un forum, ...

    Si vous souhaitez rédiger des articles / tutoriels (initiation, installation, avancé, .....) n'hésitez pas à me contacter par MP.

    Vous pouvez également demander un blog sur Developpez.

    d'avance à tous, et n'hésitez pas si vous souhaitez plus de détails.
    Pour contacter les différents services du club (publications, partenariats, publicité, ...) : Contacts

  2. #2
    Membre expérimenté
    Avatar de kedare
    Homme Profil pro
    System Reliability Engineer
    Inscrit en
    juillet 2005
    Messages
    1 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Espagne

    Informations professionnelles :
    Activité : System Reliability Engineer

    Informations forums :
    Inscription : juillet 2005
    Messages : 1 506
    Points : 1 643
    Points
    1 643

    Par défaut

    j'ai fait un ptit script marrant pour "berner" les clients mails (testé sur thunderbird)
    en faite c'est un faux serveur smtp qui est compatible avec les clients mails , il recois le contenu du mail et l'ecrit dans un fichier
    codé en socket brute
    voila la source dans un fichier compressé :
    http://kedare.free.fr/Dist/smtp.tar.bz2

  3. #3
    Membre régulier

    Profil pro
    Inscrit en
    juillet 2007
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : juillet 2007
    Messages : 52
    Points : 101
    Points
    101

    Par défaut ActiveRecord::base empty?

    Rails

    Q: Définir "empty?" pour tous vos modèles

    R: "attribute_names" & "attribute_present?"

    Vous est-il arrivé de regretter de ne pouvoir écrire quelque chose du genre "@personne.empty?" ?

    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
    module ApplicationHelper
       ...
    end
    
    #surcharge ActiveRecord
    class ActiveRecord::Base
    	
    	
    	# renvoi true si aucun attribut n'est renseigné
    	def empty?
    	
    		attribute_names.each do |attribute|
    			return false if attribute_present?(attribute)
    		end  
    	
    		return true
    	end
    end
    - Dans "application_helper.rb" on ajoute la définition "empty?" à ActiveRecord::Base afin d'en faire bénéficier tous nos modèles de l'application sans autre intervention.
    - On itère sur la liste des attributs afin de tester la virginité de chacun.
    - On renvoi "false" dès rencontré le premier attribut renseigné

    A savoir, "attribute_present?" retourne "false" dans les cas suivants
    - l'attribut vaut "nil"
    - l'attribut est "empty"
    - l'attribut contient "0" (zéro)

    test :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    irb(main):042:0> @p = Personne.new
    => #<Personne:0x4767bb4 @attributes= ...@new_record=true>
    irb(main):043:0> @p.nom
    => nil
    irb(main):044:0> @p.nom = ''
    => ""
    irb(main):046:0> @p.empty?
    => true

    Pour info : La définition de "attribute_present?" se trouve dans "base.rb" de ActiveRecord (par exemple C:\InstantRails\ruby\lib\ruby\gems\1.8\gems\activerecord-1.15.3\lib\active_record)

    Eventuelles suggestions bienvenues

  4. #4
    Membre éclairé

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

    Informations forums :
    Inscription : mai 2005
    Messages : 657
    Points : 895
    Points
    895

    Par défaut

    Salut

    Citation Envoyé par Renaud° Voir le message
    Eventuelles suggestions bienvenues
    Plutôt que d'ajouter ça dans un helper, ne serait-t-il pas plus correct de créer un fichier dans lib/ puis d'en faire un require dans environment.rb ?

    D'autre part j'ai du mal à voir un cas d'utilisation où un modèle sauvé en BDD est vide. Notamment je ne vois pas comment son 'id' peut-être empty?. Et si il n'est pas sauvé, on peut utiliser new_record?.
    Est-ce que tu pourrais donner un exemple d'utilisation ?


    Sinon c'est un bon exemple d'extension d'AR::Base
    Toute la documentation Ruby on Rails : gotapi.com/rubyrails
    Mes articles :
    > HAML : langage de template pour Ruby on Rails

  5. #5
    Membre régulier

    Profil pro
    Inscrit en
    juillet 2007
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : juillet 2007
    Messages : 52
    Points : 101
    Points
    101

    Par défaut

    Salut Taum,

    Citation Envoyé par Taum Voir le message
    Salut

    Plutôt que d'ajouter ça dans un helper, ne serait-t-il pas plus correct de créer un fichier dans lib/ puis d'en faire un require dans environment.rb ?
    Effectivement, ce serait mieux, je ne m'y étais pas encore interessé, merci du tuyau.

    D'autre part j'ai du mal à voir un cas d'utilisation où un modèle sauvé en BDD est vide. Notamment je ne vois pas comment son 'id' peut-être empty?. Et si il n'est pas sauvé, on peut utiliser new_record?.
    "attribute_names" ne renvoi pas l'attribut "id", il n'est donc pas testé dans la boucle de l'"empty?" que je proposais, laquelle peut renvoyer "true" sur un enregistrement existant en BDD, quant à "new_record?" je m'en servirai pour supprimer l'enregistrement de la base si nécessaire.

    Est-ce que tu pourrais donner un exemple d'utilisation ?
    La structure de ma base veut que les adresses soient dans une table à part. Dans le formulaire de "personne" je propose la saisie des deux objets "personne" et "adresse". Ces deux modèles sont liés par une relation "belongs_to :adresse" / "has_one :personne" et je récupère les infos du formulaire sous cette forme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    def create
      @personne = Personne.new(params[:personne])
      @adresse   = Adresse.new(params[:adresse])
      @personne.adresse = @adresse unless @adresse.empty?
     
      if @personne.save 
        ... etc
    end
    La saisie de l'adresse n'est pas obligatoire, si j'affecte "@adresse" à "@personne.adresse" et que l'utilisateur laisse l'adresse vierge, un enregistrement vide sera inséré dans ma table adresses, c'est pourquoi un test est nécessaire. Une autre possiblité aurait été de tester "params[:adresse]" et de faire un "@personne.build_adresse..." sous condition, ce qui n'aurait pas été laid, mais j'ai d'autres ambitions : on peut voir cela plus comme une espèce de validation, donc ayant plus sa place dans le modèle que dans le controleur.

    Sinon c'est un bon exemple d'extension d'AR::Base
    Merci de ta critique

  6. #6
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    août 2007
    Messages
    24
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : août 2007
    Messages : 24
    Points : 30
    Points
    30

    Par défaut

    Bonjour à tous,

    j'ai débuter ruby depuis peu donc (2jours) j'ai commencé par faire une petite application de photos à l'aide d'un livre qui n'est d'ailleurs pas répertorié que je trouve très bien fait

    RUBY ON RAILS vite et efficace de Bruce A.Tate et Curt Hibbs (créateur d'instant rails qd meme merci à lui )

    le livre n'est pas un gros pavé, il est très agréable à lire on nous explique bien tous les détails, l'annexe est fournie c'est que du bonheur ^^

    il faut cependant connaitre les bases d'ajax et des CSS pour bien comprendre et le principe du modèle vue controleur meme si cela est reexpliqué ca s'adresse donc à des développeurs qui connaissent déja l'objet c'est un bon prérequis...

    j'ai fait une démo de ce que l'on peut faire en 2jours tranquillement en decortiquant ce que l'on essaye de faire je peux vous la fournir ou l'heberger si vous voulez ... on y voit les vues de echaffaudages refaites et améliorées, la gestion d'un modele avec recursivité pour les catégories en gérant les "ancetres" parents etc... les listes de diapositives contenant des photos qui peuvent etre lues grace à lajax avec un changement de photos toutes les 2sec et l'utilisation du drag and drop pour changer l'ordre des photos...(qui est vraiment facile à mettre en oeuvre).
    enfin l'utilisation des vérifications directement dans le modele pour le nom d'une photo qui se doit d'être renseigné, dans la vue d'ajout si l'on ne renseigne pas le champs cela génère automatiquement le message d'erreur.

    à ce propos si quelqu'un sait comment personnaliser ces messages d'erreurs je veux qu'il m'exlique en anglais c'est pas top de meme pour les champs de type date les jours en anglais c'est pas super ^^

    je pense améliorer l'application avec un upload + redimensionnement avec rmagick comme plugin et essayer d'inserer une authentification avec plugin authentif restful comme ca cela sera assez complet

    EDIT : j'ai mis le lien de démo mais c pas fameux je peux la faire passer au besoin par mp contactez moi

    http://www.dailymotion.com/leken11/v...v4mp_demo_tech

  7. #7
    Membre éclairé

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

    Informations forums :
    Inscription : mai 2005
    Messages : 657
    Points : 895
    Points
    895

    Par défaut

    Hello,

    Citation Envoyé par leken11 Voir le message
    à ce propos si quelqu'un sait comment personnaliser ces messages d'erreurs je veux qu'il m'exlique en anglais c'est pas top de meme pour les champs de type date les jours en anglais c'est pas super ^^
    Y'a qu'a demander

    Comment françiser une application Rails (avec l10n-simplified) ?

    l10n-simplified (LocalizationSimplified) est un plugin très simple pour changer la langue d'une application Rails. Contrairement à Globalize, ce plugin ne permet pas de faire une application multilingue ! (mais il est beaucoup plus simple à utiliser).

    1) Installation du plugin :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    liv:~/Rails/asleep.fr taum$ script/plugin install svn://rubyforge.org/var/svn/l10n-simplified
    A    /Users/taum/Rails/asleep.fr/vendor/plugins/l10n-simplified
    [...]
    Exporté à la révision 92.
    2) Ouvrez le fichier vendor/plugins/l10n-simplified/init.rb. Commentez la ligne require 'lang_da' et décommentez celle correspondant à votre langue (lang_fr pour le français).

    3) Et non, il n'y a pas de 3 ...


    Votre application est maintenant en français. Messages d'erreurs, Dates, Nombres, Helpers (Array#to_sentence ) ...

    N'hésitez pas à editer le fichier vendor/plugins/l10n-simplified/lib/lang_fr.rb si vous n'aimez pas une des traductions proposée
    N'oubliez pas de rédémarrer votre serveur de développement après chaque changement pour qu'il soit pris en compte.
    Toute la documentation Ruby on Rails : gotapi.com/rubyrails
    Mes articles :
    > HAML : langage de template pour Ruby on Rails

  8. #8
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    août 2007
    Messages
    24
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : août 2007
    Messages : 24
    Points : 30
    Points
    30

    Par défaut

    cool mci bcp jinstalle ca direct

    EDIT : c'est abusément simple à mettre en place

  9. #9
    Expert éminent
    Avatar de titoumimi
    Inscrit en
    décembre 2003
    Messages
    3 708
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : décembre 2003
    Messages : 3 708
    Points : 7 214
    Points
    7 214

    Par défaut

    sinon, tu peux lui préciser le message à la main :

    DEFAULT_VALIDATION_OPTIONS = { :on => :save, :allow_nil => false, :message => nil
    Globalement inoffensif
    Merci de respecter les règles du forum.
    Aucune question technique par MP !
    _______________________________________________________________________
    La rubrique Ruby / Rails recrute. Contactez moi !
    _______________________________________________________________________
    Cours Ruby et Ruby on Rails (RoR) - FAQ Ruby / Rails - Livres Ruby / Rails
    Ajax facile avec Ruby on Rails, Prototype, script.aculo.us et les RJS
    Tutoriaux HTML/CSS et PHP

  10. #10
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    août 2007
    Messages
    24
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : août 2007
    Messages : 24
    Points : 30
    Points
    30

    Par défaut

    tu met ca dans le modele ?

  11. #11
    Expert éminent
    Avatar de titoumimi
    Inscrit en
    décembre 2003
    Messages
    3 708
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : décembre 2003
    Messages : 3 708
    Points : 7 214
    Points
    7 214

    Par défaut

    FAQ Ruby

    Q : Comment ne conserver que les caractères alphanumériques dans une chaîne ?

    R : Il suffit d'utiliser l'expression régulière suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    a = "eegv 42 efef*/ezf*+ukujk+ 68@^\`|[{#*/+8*/_-+*/ ' dsgsdf 526 f4ze"
     
    puts a.gsub(/[^[:alnum:]]/, '')
    Résultat :

    eegv42efefezfukujk688dsgsdf526f4ze
    Globalement inoffensif
    Merci de respecter les règles du forum.
    Aucune question technique par MP !
    _______________________________________________________________________
    La rubrique Ruby / Rails recrute. Contactez moi !
    _______________________________________________________________________
    Cours Ruby et Ruby on Rails (RoR) - FAQ Ruby / Rails - Livres Ruby / Rails
    Ajax facile avec Ruby on Rails, Prototype, script.aculo.us et les RJS
    Tutoriaux HTML/CSS et PHP

  12. #12
    Expert éminent
    Avatar de titoumimi
    Inscrit en
    décembre 2003
    Messages
    3 708
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : décembre 2003
    Messages : 3 708
    Points : 7 214
    Points
    7 214

    Par défaut

    FAQ Rails / RJS :

    Q : Comment retarder un effet ?

    R : Rien de plus simple, il suffit d'utiliser page.delay comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    page.delay(3.0) do
       page.visual_effect(:highlight, "mon_element")
    end
    Pour effectuer des retards en cascade, il suffit d'imbriquer les page.delay.
    Globalement inoffensif
    Merci de respecter les règles du forum.
    Aucune question technique par MP !
    _______________________________________________________________________
    La rubrique Ruby / Rails recrute. Contactez moi !
    _______________________________________________________________________
    Cours Ruby et Ruby on Rails (RoR) - FAQ Ruby / Rails - Livres Ruby / Rails
    Ajax facile avec Ruby on Rails, Prototype, script.aculo.us et les RJS
    Tutoriaux HTML/CSS et PHP

  13. #13
    Expert éminent
    Avatar de titoumimi
    Inscrit en
    décembre 2003
    Messages
    3 708
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : décembre 2003
    Messages : 3 708
    Points : 7 214
    Points
    7 214

    Par défaut

    FAQ Rails / RJS :

    Q : Comment exécuter un effet au chargement de la page ?

    R : Il faut pour cela utiliser update_page_tag dans votre vue :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <%= update_page_tag do |page|
            page.visual_effect(:highlight, "mon_element")
        end
    %>
    Globalement inoffensif
    Merci de respecter les règles du forum.
    Aucune question technique par MP !
    _______________________________________________________________________
    La rubrique Ruby / Rails recrute. Contactez moi !
    _______________________________________________________________________
    Cours Ruby et Ruby on Rails (RoR) - FAQ Ruby / Rails - Livres Ruby / Rails
    Ajax facile avec Ruby on Rails, Prototype, script.aculo.us et les RJS
    Tutoriaux HTML/CSS et PHP

  14. #14
    Membre régulier Avatar de abir84
    Inscrit en
    mars 2007
    Messages
    214
    Détails du profil
    Informations personnelles :
    Âge : 33

    Informations forums :
    Inscription : mars 2007
    Messages : 214
    Points : 115
    Points
    115

    Par défaut

    FAQ Ruby
    Q : Comment convertir une String en Hash?

    R : Utiliser la fonction eval
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    str="{'s1'=>1,'s2'=>'v2'}"
    eval(str)
    et ça donne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    str.class
    => String
    eval(str)
    => {"s1"=>1, "s2"=>"v2"}
    eval(str).class
    => Hash

  15. #15
    Membre actif Avatar de rivsc
    Profil pro
    Inscrit en
    décembre 2008
    Messages
    213
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : décembre 2008
    Messages : 213
    Points : 253
    Points
    253

    Par défaut

    FAQ : ROR
    Q: Comment faire une liste déroulante simplement et sans écrire d'html dans un formulaire ?
    R: Avec Collection_select

    Détail :
    Liste déroulante pour les formulaires avec les helpers de base.

    Controller products
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    @list_families = Family.find(:all)
    @product = Product.find(params[:id])
    View edit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <% form_for(@product, :url => {:action => "update"} ) do |f| %>
    <%= f.collection_select :family_id,
              @list_families,
              :id,
              :name,
              {
                :include_blank => "Choississez une famille",
                :selected => @product.family.id.to_s
              } %>
            <%= f.submit "Mise à jour" %>
    <% end %>

Discussions similaires

  1. Participez à la création de ressources
    Par vermine dans le forum JavaScript côté serveur
    Réponses: 2
    Dernier message: 06/03/2013, 17h11
  2. Création fichier ressources
    Par michel71 dans le forum Débutant
    Réponses: 5
    Dernier message: 22/08/2012, 08h31
  3. création de ressource jms sous jboss5
    Par ndeyemaroc dans le forum JBoss
    Réponses: 0
    Dernier message: 24/12/2009, 18h59
  4. JMX - Création de ressources WTC
    Par Yux dans le forum Weblogic
    Réponses: 1
    Dernier message: 22/06/2009, 12h10
  5. Réponses: 7
    Dernier message: 11/12/2007, 10h08

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