When you’re looking to create charts in Ruby, you might spend quite some time searching a cool tool.
I’ve been, for example, falling on gruff this morning.

But the graphs created with that kind of tools are always dependant of some libraries, and many times, they don’t look very nice.
So I’ve been working on something new, using something not new :mrgreen:
You’ve probably already heard of Google Charts, which allows you to create some cute charts.

Now you can use it with Ruby and Rails with my new plugin, Ruby on GChart.
You provide your datas, the type of graph you want and it gives you the URL to see the graph :)
You can even save this graph to a file and use it locally.

Here’s an example of what you can do :

GoogleChart::Chart.new({
    :type => :line,
    :height => 200,
    :width => 500,
    :encoding => :simple,
    :datas => [70, 25, 50, 35, 150],
    :labels => ['First Label', 'Second Label']
}).to_url

It supports simple and text encoding (with the parameters :simple and :text). No extended encoding for now.

However it supports muliple graphs in multi levels array.
Example :

:datas => [[5, 10, 15], [10, 15, 5]]

You can put as mush graphs as you wish of course.

So what do you think of it ?

Je viens de publier mon premier plugin pour rails.
Bon son intérêt est limité. Mais au moins maintenant, j’ai réussi à utiliser Git sous Windows (cela fera l’objet d’un article un petit peu plus tard).
Et puis je me suis pas mal amusé à développer ce plugin (ainsi que ses tests).

L’intérêt en est très simple. Une fois installé, vous aurez une méthode de validation de plus, « validates_uri_existence_of ».
Celle-ci, une fois assignée à l’un des champs de votre base de données exigera de ce champ une condition :

Être un lien valide.

Mais pas seulement valide du point de vue du format du lien. Cela serait trop facile et ne nécessiterait pas de méthode spécifique.
Non. Ce plugin va aller vérifier que le lien ne retourne pas d’erreur (dns, 404, …).
Si il en retourne une, cela ne valide pas. Sinon, c’est cool ça valide :)

Je vous invite, pour plus d’informations, à voir la page du projet. Ainsi que sa documentation (sur la même page).

Comme tout framework qui se respecte, Ruby on Rails ne possède aucun système d’identification en natif. Chose naturelle vu que ce genre de choses est trop dépendant de vos besoins en fonction de l’application et est difficilement réalisable de manière générique (quoi que …)

Il existe cependant divers plugins permettant de mettre en place un système d’identification de manière aisée. Je vais ici vous présenter Restful Authentication.
Pour l’installation, je vous invite à lire ce tutoriel sur railforum.

Une fois que c’est mis en place, c’est très simple ! Vos pages d’inscription, d’identification, de déconnexion, de rappel de mot de passe et de mise à jour des informations sont faites. Il n’y a plus qu’à les personnaliser. Vous les trouverez :

  • contrôleur « users », action « new » : page d’inscription
  • contrôleur « sessions », action « new » : page d’identification
  • contrôleur « passwords », action « new » : rappel de mot de passe
  • contrôleur « users », action « edit » : modification des informations de l’utilisateur

Maintenant, tentons de personnaliser un peu cela :

Ajouter un rôle

Par défaut, seul le rôle « administrateur » existe. Mais vous pouvez avoir besoin de créer d’autres rôles. Supposons ici « redactor ».

Ouvrir le fichier /lib/authenticated_system.rb

Aux alentours de la ligne 70, vous verrez :

def check_administrator_role
check_role('administrator')
end

Ajoutez une fonction pour chacun des rôles que vous désirez en la nommant « check_xx_role » et en remplacant « admin » par le nom de votre rôle dans la base de donénes.
Si vous désirez forcer un utilisateur à avoir le rôle redactor pour visualiser l’action « publish » du contrôleur « edit », placez, en haut de votre contrôleur :

before_filter :check_redactor_role, :o nly => [:publish]

Il peut cependant vous arrivez d’avoir à manipuler les données de l’utilisateur dans votre contrôleur. Ou à vérifier le niveau de l’utilisateur dans celui-ci. Pour n’autoriser un rédacteur que à mettre des articles en brouillon mais l’empêcher de les publier.
Pour permettre cela, vous avez accès à l’objet current_user dans toute votre application. Il s’agit d’une instanciation du modèle User. Toutes les fonctions définies dans ce modèle y sont donc disponibles.
Vérifions donc que notre utilisateur est bien administrateur pour l’autoriser à mettre un article en état « publié ». Sinon, laissons-le en état « brouillon »

if !current_user.has_role?('administrator')
@billet.published = false
end

Ainsi, si l’utilisateur n’est pas administrateur, il pourra modifier un billet. Mais celui-ci se retrouvera alors remis hors ligne.

Restful Authentication peut permettre énormément de personnalisations, que ce soit avec des rôles ou non. La seule limite est votre imagination ! :-)

 
Fork me on GitHub