Développeur Web RoR

Aller au contenu | Aller au menu | Aller à la recherche

mercredi 25 janvier 2012

Créer une application rubyonrails avec une version spécifique de rails

Comment faire pour utiliser une version spécifique de rails ? Ce n'est pas très compliqué : rails _VERSION_.

Exemples 

rails _3.0.7_ new myapp

rails _3.1.3_ new myapp

rails _3.2.0_ new myapp

Pour connaitre les versions de rails installées sur le système il suffit de faire :

gem list rails

Le but était pour moi de vérifier les différences entre des squelettes d'appli rails sous différentes versions. N'oubliez pas : "meld" pour faire des diff de fichiers sous linux c'est top.

vendredi 9 décembre 2011

FakeWeb : un gem qui permet de simuler une réponse via Net::http en ruby

Le gem est apparu dans un railscast, il n'y a pas longtemps.

Voici la doc : http://fakeweb.rubyforge.org/ qui est très bien faites d'ailleurs. Pratique pour les tests unitaires et fonctionnels de méthode qui utilise une API distante.

Article à lire sur les mocks (http://fr.wikipedia.org/wiki/Mock_(programmation_orient%C3%A9e_objet)).

Bon code.

dimanche 27 novembre 2011

Rails 3 default_scope et unscoped

Rails 3 a apporté un petit truc sympa le default_scope. Il permet d'appeler un scope par défaut sur un model. Par contre il peut être sympa dans certain cas d'éviter d'utiliser le default_scope. C'est pour cette raison qu'il existe unscoped

Exemple :

class Product < ActiveRecord::Base

  default_scope :order_by_name, order(:name)

end

# Ordonné par name

# SELECT * FROM products ORDER BY name;

Product.all 

# SELECT * FROM products;

Product.unscoped.all

A retenir ! En même temps c'est pas très compliqué !

mercredi 2 novembre 2011

Rails i18n - Mettre un texte de remplacement si la traduction n'existe pas

Après lecture du code source du module i18n de rails j'ai trouvé. Donc pour mettre un texte de remplacement si une traduction n'existe pas (translation missing), il faut utiliser l'option default pour la méthode t (translate).

Exemple avec une traduction présente :

t(:hello)

#=> "hello"

Exemple avec une traduction absente :

t(:test)

#=> "<span class=\"translation_missing\" title=\"translation missing: en.test\">Test</span>"

Donc si vous faites ceci vous n'avez plus d'erreur :

t(:test, :default => "texte par défaut")

#=> "texte par défaut"

Pour tester en console il faut créé une instance ActionView et précéder la fonction t de cette instance, comme suit : 

av = ActionView::Base.new

av.t(:hello)

Sinon sur le net, un développeur propose une super idée : personnaliser l'exception levé  et faire appel à l'API de Google traduction

Voici le code pour cette 2ème solution (enfin vue que l'API va devenir payante) :


module I18n
  class << self
    def raise_custom_exception(exception, locale, key, options)
      if MissingTranslationData === exception
        # do something with the missing translation
        return translation
      else
        raise exception
      end
    end
  end
end
I18n.exception_handler = :raise_custom_exception
Url de la discussion : http://www.ruby-forum.com/topic/220355

jeudi 20 octobre 2011

Gem prawn pdf pour rails : enfin une vrai documentation

Vous avez dû remarquer que j'ai récemment écrit quelques posts sur prawn la librairie ruby (et rails) pour générer des documents pdf je suis en train (pour une application) de passer de prawn 0.7.1 à prawn 1.0.0.rc1 et oui il y a du chemin et comme chez prawn ils aiment bien tout changer souvent c'est un peu compliqué, il faut revoir tout son code. Mais voilà une vrai doc est dispo : http://prawn.majesticseacreature.com/manual.pdf

Bon si jamais la doc générée ne fonctionne pas (comme la semaine dernière voici une copie) : prawn pdf documentation

On peut tout faire avec cette dernière version (ah bon j'ai l'air enthousiaste ?), styliser les tableaux comme vous l'avez rêvé (background color d'une cellule particulière, mettre du texte dans le tableau, un image, un texte incliné, bordure padding, height, width), faire une mise en page en colonne... enfin tout quoi. Parcourez la doc il y a plein d'exemples et du rendu correspondant.

Je rappelle que prawn est sous licence GPLv2 et GPLv3.

vendredi 14 octobre 2011

Rails Prawn pdf : undefined method for #<Prawn::Document...>

Bon après quelques temps de recherche dans la doc de prawn sur github et sur majesticseacreature, j'ai trouvé par hasard. 
Donc si vous avez cette erreur :

undefined method `XXX' for #<Prawn::Document...>

Essayez voir de faire :

pdf.bounds.VOTRE_METHODE

Dans mon cas, je voulais ajouter un padding à une bounding_box en fait le padding s'applique à bounds.

J'ai donc changer mon code de :

pdf.VOTRE_METHODE

En :

pdf.bounds.VOTRE_METHODE

Bon code !

mercredi 5 octobre 2011

Rails generate scaffold_controller

La commande "rails generate scaffold_controller" permet de générer les vues / routes / controller associés à un model déjà existant. Malheureusement il ne va pas chercher les attributs du model, mais c'est tout de même bien pratique pour créer deux controllers pour un seul model. 

Du coup il faut l'utiliser de la même manière que rails generate model :

rails generate model nom_du_model attribut:type attribut:type

rails generate scaffold_controller nom_du_model attribut:type attribut:type

- page 1 de 7