Grande nouvelle le gem will paginate pour la pagination des données dans rails 3 vient de sortir en version 3 ! Au menu plusieurs sortes de pagination : voir ici : http://mislav.uniqpath.com/will_paginate/ sinon voici le lien des sources du gem sur github : https://github.com/mislav/will_paginate/
Tag - rails 3
mardi 9 août 2011
Will_paginate v3.0 pour rails 3.0 et rails 3.1 est sortie !
Par rivsc le mardi 9 août 2011, 23:14
lundi 11 juillet 2011
Ruby Enterprise Edition erreur certificate verify failed avec Open-uri
Par rivsc le lundi 11 juillet 2011, 10:12
Si vous avez cette erreur et que vous faites un open sur une url en https (avec ruby Enterprise Edition ou ruby 1.8.7 parfois), rassurez-vous vous n'êtes pas seul :
SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed (OpenSSL::SSL::SSLError)
Voici une solution (bien crade soit-dit en passant, et de plus je me fiche de vérifier les certificats ici) :
- Créer un fichier dans config/initializers, je l'appelle bypass_ssl_verification_for_open_uri.rb
- On y mets OpenSSL::SSL::VERIFY_PEER = OpenSSL::SSL::VERIFY_NONE #<< C'est bien crade hein !
Voilà si vous avez une meilleur solution n'hésitez pas !
jeudi 7 juillet 2011
Mettre des headers personnalisés dans les requêtes des tests fonctionnels et d'intégration de rubyonrails
Par rivsc le jeudi 7 juillet 2011, 10:38
Il peut être intéressant de spécifier des headers personnalisés pour les requêtes des tests fonctionnels (functional test) et des tests d'intégration (integration test). J'ai cherché assez longtemps.
Voilà comment procéder pour les tests d'intégration :
post(:create, {:user => {:name => "Jack"}}, {"CUSTOM_HEADER" => "bar"})
Et comme ceci pour les tests fonctionnels :
@request.env["CUSTOM_HEADER"] = "bar"
post(:create, {:user => {:name => "Jack"}})
Sources : http://twobitlabs.com/2010/09/setting-request-headers-in-rails-functional-tests/ , http://guides.rubyonrails.org/testing.html#instance-variables-available
vendredi 24 juin 2011
RubyOnRails 3 ActiveRecord un cas d'utilisation d'has_many/belongs_to
Par rivsc le vendredi 24 juin 2011, 15:51
Bon voici un bon cas bien complexe de relation à gérer avec rubyonrails 3 et ActiveRecord :
Le but est de représenter les relations familiales (family_relationship) de personne (contact).
- Table contacts (qui représente un être humain avec ses coordonnées).
- Table family_relationships (qui représente une relation entre deux êtres humains, lien de père, mère, frère, soeur), avec deux clés étrangères qui pointent vers contacts : master_id et slave_id et un champ type (integer : 1 : fils, 2 : fille, 3 : père, 4 : mère).
On lit la relation comme suit : Master a pour {père|mère|fils|fille} slave.
Nous voulons pouvoir faire :
contact.fathers
=> [#<Contact id: 7.....>]
contact.mothers
=> [#<Contact id: 9.....>]
contact.daughters
=> [#<Contact id: 11.....>, #<Contact id: 8......> ]
contact.sons
=> [#<Contact id: 12.....>, #<Contact id: 13......> ]
Ici on ne s'occupera pas de gérer la contrainte UN SEUL père et UNE SEULE mère.
Voici comment définir nos models :
Ici le model Contact
class Contact < ActiveRecord::Base has_many :family_relationship_as_masters, :foreign_key => "master_id", :class_name => "FamilyRelationship" has_many :family_relationship_as_slaves, :foreign_key => "slave_id", :class_name => "FamilyRelationship" has_many :sons, :through => :family_relationship_as_masters, :source => :slave, :conditions => ['"family_relationships"."type_relationship" = ?',1] has_many :daughters, :through => :family_relationship_as_masters, :source => :slave, :conditions => ['"family_relationships"."type_relationship" = ?',2] has_many :fathers, :through => :family_relationship_as_masters, :source => :slave, :conditions => ['"family_relationships"."type_relationship" = ?',3] has_many :mothers, :through => :family_relationship_as_masters, :source => :slave, :conditions => ['"family_relationships"."type_relationship" = ?',4] end
Et là le model FamilyRelationship
class FamilyRelationship < ActiveRecord::Base belongs_to :master, :foreign_key => "master_id", :class_name => "Contact" belongs_to :slave, :foreign_key => "slave_id", :class_name => "Contact" end
Je crois qu'il s'agit de la relation la plus compliquée que j'ai faite dans une application RubyOnRails (enfin qui utilise de plus d'options aux méthodes de jointure has_many et belongs_to en tout cas)
vendredi 10 juin 2011
Surcharger les accesseurs par défaut dans les models de rails3
Par rivsc le vendredi 10 juin 2011, 14:57
Il peut être intéressant de surcharger des accesseurs, par exemple changer le comportement d'un attribut et éviter de changer tout son code.
Voici un petit exemple :
class Product < ActiveRecord::Base # setter, ici ce code ne sert à rien, car le comportement # par défaut est conservé, mais c'est pour l'exemple def name=(name) write_attribute(:name, name) end # getter, ici on ajoute " qui poutre" lors le l'appel du # nom du produit def name return read_attribute(:name) + " qui poutre" end end
Avant la surcharge :
p = Product.new(:name => "Banania en poudre")
p.name # retourne "Banania en poudre"
Après la surcharge :
p = Product.new(:name => "Banania en poudre")
p.name # retourne "Banania en poudre qui poutre"
jeudi 24 février 2011
RubyOnRails 3.1 : Un lot de nouveautés bien sympatique
Par rivsc le jeudi 24 février 2011, 11:24
Voici quelques nouveautés croustillantes à propos de Rails 3.1 :
- Génération de sprites css automatique
- Partage de scope intermodel
- Compilation de template erb js et css
- "Auto Flushing" : envoie au navigateur de quoi traiter les css et js avant que la fin de la compilation de la vue (amélioration des performances)
J'ai hate de tester tout ça !
Source : http://hemju.com/2011/02/23/rails-3-1-release-rumors-and-news-about-features/
mercredi 23 février 2011
Jquery ujs : bug du link_to confirm dialog toujours executé
Par rivsc le mercredi 23 février 2011, 17:48
Avec le helper link_to vous avez la possibilité d'utiliser l'option :confirm => "Etes vous sur ?" qui permet d'afficher une belle boite de dialogue de confirmation (utilisé pour une suppression généralement). Et bien si vous avez le bug qui fait que quoique vous fassiez la requête se fait, c'est que vous n'avez pas la bonne version du connecteur jquery-ujs :
Pour Jquery 1.4 , jquery 1.4.1 , jquery 1.4.2 : https://github.com/rails/jquery-ujs/blob/v1.4/src/rails.js
Pour jquery 1.4.3 , jquery 1.4.4 : http://github.com/rails/jquery-ujs/raw/master/src/rails.js
Là encore j'espère que ça peut aider !
« billets précédents - page 1 de 3