Tag: rails

Utiliser Visual Studio Code pour développeur rubyonrails

Je regarde de temps en temps les alternatives à rubymine (J'ai eu pas mal de problème de lenteur avec le debuggeur sur MacOSX...). J'avais testé VS Code il y a quelques temps mais je...

Rails Panel

C'est pas tout récent mais je viens de découvrir : rails panel. Il s'agit d'un extension chrome bien pratique pour les développeurs rails. Elle rajoute un onglet à l'inspecteur d'élé...

Activer les logs sql dans la console rails

Une fois la console rails démarrée (rails c), il suffit de faire : ActiveRecord::Base.logger = Logger.new STDOUT

Comment connaitre les changements qu'il y a eu sur un objet ActiveRecord immédiatement après un save ?

Avant de faire un save il est possible de connaitre les changements/savoir si un objet ActiveRecord a changé en appelant .changes ou changed? Mais après un save ces fonctions renv...

Paranoia : suppression logique des objets ActiveRecord

Il peut être pratique de faire croire aux communs des mortels que vous supprimez réellement des objets quand ils cliquent sur le bouton de suppression et de ne pourtant pas supprimer...

Comment ne plus utiliser le default_scope ?

Le default_scope est un scope qui est appelé implicitement à chaque requête ActiveRecord sur le modèle en question. Le problème c'est qu'on l'oublie vite celui-là... Vaut mieux l'uti...

Sprockets::FileNotFound in Beautiful#dashboard : couldn't find file 'jquery.ui.all'

Pour corriger l'erreur Sprockets::FileNotFound in Beautiful#dashboard : couldn't find file 'jquery.ui.all' dans une application qui utilise beautiful_scaffold il faut remplacer (dans...

Transformer un array d'objet ActiveRecord en hash avec comme clé l'id et l'objet en valeur

La petite astuce du jour : Comment transformer un Array d'objet ActiveRecord en Hash avec comme clé l'id et l'objet en valeur ? Solution Hash[Family.all.map{ |f| [f.id,f] }] Ce qui d...

Chainer ses méthodes sans redouter un "NoMethodError" ou "undefined method for NilClass" avec try

Il peut être pratique de faire un : @voiture.roues.first.gonflage Voiture étant un objet de la classe Voiture. Roue est une classe et elle belongs_to Voiture gonflage est un attribut...

Utiliser hstore avec le gem Apartment

Il m'est arrivé d'avoir besoin de hstore (stockage key/value dans postgres) avec Apartment. La mise en place n'est pas très compliqué mais il ne faut rien oublier. Le readme de Apart...

Faire fonctionner l'API JSON de Devise 3.1.0 avec Rails 4

Lors de la migration d'une de mes applications rails 3 en rails 4 (et devise 2.0.1 en 3.1.0). J'ai eu des petits soucis, deux pour être précis, un lié à Devise >2.0.1 et un à Rail...

Interfacer RubyCas avec une application RubyOnRails et Devise

RubyCas gère exclusivement le Single Sign On (SSO). En aucun cas il ne gère la gestion des utilisateurs (création de compte, mot de passe oublié, compte verrouillé, etc) : pour tout ...

Single Sign On (authentification centralisée) avec RubyCas

RubyCas-Server est une application sinatra qui respecte la norme CAS (central authentification service). Elle permet le single sign on. (Wiki RubyCas : https://github.com/rubycas/rub...

ActionMailer : envoyer un email avec une adresse par défaut ou personnalisée

Il peut arriver qu'on veuille envoyer un email avec une adresse par défaut ou personnalisée. Pour cela, vous pouvez utiliser VotreMailer.default_params[:from] pour éviter de copier/c...

Sunspot : la recherche simple pour une application rubyonrails avec Solr

J'avais déjà parlé de UltraSphinx et ThinkingSphinx. Il y a mieux (enfin je trouve) : SunSpot qui utilise Solr. Pour l'utiliser il suffit de mettre ces gems dans votre Gemfile et de ...

Relancer une migration spécifique sur une application rubyonrails

Relancer une migration spécifique sur une application rubyonrails est possible. Pensez d'abord à "rollbacker" la migration (identifiée par son numéro == date) si elle avait...

2 tables de jointure différentes entre 2 mêmes models

Bon le titre est un peu capilo-tracté. L'explication qui va suivre presque tout autant. Imaginons vous avez un model User et un model Book. On veut modéliser une relation "à par...

Générer un sitemap au déploiement pour une application rubyonrails

Il peut être intéressant de générer des sitemaps dans le cas où toutes les pages ne sont pas linkée (comprendre qu'elles n'ont pas de lien). Le gem sitemap generator permet de faire ...

Assets pipeline : precompile assets avec Capistrano

La solution ultime à tous mes problèmes de déploiement. 1) Mettre ceci dans environments/production.rb : config.assets.precompile += ["*.css", "*.js"] ça perme...

Dessinez votre schema de base de données à la souris pour Rails et/ou beautiful-scaffold

J'avais "écrit" il y a quelque temps un petit bout de javascript à la suite de cette démo de Raphael.js : https://raphaeljs.com/graffle.html pour générer mes schémas de bas...

Comment éviter le DoubleRenderError dans rails 3 ?

Il va de soit qu'il est infiniment profitable de faire des conditions propres avec des render et des redirects qui vont bien. Mais dans certain cas il peut être intéressant d'annuler...

Hstore : le NoSql à la mode postgresql

hstore permet de stocker un tableau associatif dans une colonne. Voici une vidéo / screencast de présentation et d'utilisation : https://www.youtube.com/watch?feature=player_embedded...

Appartment : le gem qui permet de faire du multi-tenancy avec Postgresql

Le multi-tenancy revient à avoir une seule base de données avec les données de plusieurs clients (on aurait pu aussi mettre une clé étrangère sur tous les models mais c'est plus long...

Beautiful Scaffold version 0.1.1

Plein de nouveautés dans Beautiful Scaffold. Tout d'abord les versions ne sont pas compatibles entre elles, donc vous ne devez pas changer la version de beautiful-scaffold dans votre...

Beautiful-Scaffold : content_for :head et PJAX script et style

Beautiful-Scaffold utilise PJAX : Ajax avec PushState. Le problème est que lorsque l'on veut ajouter un script/style dans une page on se retrouve bloqué le content_for ne fait pas so...

content_for et yield ou capture

Comme d'habitude on vient me demander de changer des choses sur les interfaces au travail, comme d'habitude je cherche le compromis entre Ergonomie / Performance / Fainéantise.  J'av...

Appeler une classe à partir d'une chaine de caractère en ruby

Vous avez par exemple une classe Product, vous voudriez l'appeler à partir d'une chaine. Voici le bout de code qui vous permettra de le faire : "product".classify.constanti...

Liste des TimeZone de RubyOnRails

Voilà la commande magique qui renvoie la liste des TimeZone de Rails : ActiveSupport::TimeZone.all Si vous voulez les afficher en console : ActiveSupport::TimeZone.all.map(&:tzin...

Beautiful Scaffold est releasé

Beautiful Scaffold est un générateur rails 3 qui permet de créer une interface d'administration (un scaffold de rails) complet :  - Filtre et recherche - Pagination des données - Exp...

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_ n...

Text : le gem qui contient un liste d'algorithme de chaine (distance de levenshtein, Soundex, Metaphone,...)

Le gem ruby text rend disponible certains algorithmes pour les chaines de caractères (Soundex, levenshtein, Metaphone). Ce rubygem peut-être pratique pour connaitre les similitudes e...

Puts ne vous suffit plus, pretty print pp est là

Quand on n'utilise pas de débuggeur, Puts est très pratique. Il peut également être intéressant de pretty_printer dans un fichier : require 'pp' # Pour afficher en console (ou dans l...

Générer et parser des flux RSS avec Ruby 1.9.3 sans Gem !

Ruby 1.9.3 inclu de base (stdlib) un générateur et parser de flux RSS et ATOM :  Je vous laisse visiter ce lien : https://www.ruby-doc.org/stdlib-1.9.3/libdoc/rss/rdoc/RSS.html Les e...

Timecop : le gem qui permet de voyager dans le temps et le stopper comme Hiro Nakamura

Timecop est donc un gem qui permet de voyager dans le temps et le stopper. De la même manière que FakeWeb, j'ai découvert Timecop sur https://railscasts.com/episodes/276-testing-time...

Vos sessions sont trop grosses ! (Erreur : TypeError (can't dump File))

Voici l'erreur que j'ai obtenu sur du vieux code : TypeError (can't dump File):   activerecord (3.X.X) lib/active_record/session_store.rb:54:in `dump' Cela viendrait de la taille des...

Apprendre le langage de programmation ruby

Voilà vu récemment sur korben (Merci korben de faire la promotion de ruby)(https://korben.info/rubymonk-apprendre-le-ruby.html), je ne pouvais passer à coté d'une news sur ruby ! Don...

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'o...

Préparer MarkItup pour rails 3.1

Bon voilà dans l'attente d'un gros article, en voici un plus petit qui explique comment préparer markitup pour rails 3. Je pars du principe que vous êtes dans votre projet rails. Tél...

Création d'une application rubyonrails avec Devise CanCan et ActiveAdmin

Dans ce tutorial, nous partons du principe que vous connaissez déjà rubyonrails, nous utiliserons ici rails 3.1 et ruby 1.9.3 (à adapter pour rails 3 et rb 1.8). Nous allons créer le...

ActiveAdmin interface d'administration personnalisable pour application rubyonrails

ActiveAdmin est un générateur d'interface d'administration personnalisable pour application rubyonrails, au programme export xml, csv, json, filtre personnalisable, pagination, .... ...

Comment passer un hash de paramêtres à la méthode can de CanCan

Vous connaissez certainement CanCan le système de gestion des droits pour les applications rubyonrails. Can admet 2 paramêtres fixe : - Le premier est une action ou un alias de plusi...

Backports : le gem qui fait ce qu'il dit : utiliser les fonctions de ruby 1.9 avec ruby 1.8

Votre application n'est pas encore prête à passer à ruby 1.9, mais ça vous arrangerez bien d'avoir des nouvelles fonctions de ruby 1.9 pas de problème il existe le gem backports Voic...

Valium le gem qui allège votre CPU et votre mémoire lors d'une récupération limitée des champs d'un objet

Il arrive souvent que l'on ai besoin que de certains champs lors de la récupération d'objets sérialisés en base de données. Par exemple imaginons que nous ayons 10000 utilisateurs (a...

RubyOnRails was changed change pour les attributs des models

Dans les models rubyonrails il existe une tripotée de méthodes pour les attributs. Vous pouvez avoir un aperçu de ces méthodes dans le module ActiveRecord::Dirty (https://ar.rubyonra...

Ruby Enterprise Edition erreur certificate verify failed avec Open-uri

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 retur...

Varargs en ruby pour gérer les OR sql dans un ActiveRelation

J'ai eu besoin récemment de faire des "ou" (or) avec ActiveRecord, pas moyen de faire des ActiveRelation car à chaque méthode where() appelée, ActiveRecord fait un "et...

Mettre des headers personnalisés dans les requêtes des tests fonctionnels et d'intégration de rubyonrails

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é...

Conversion de base en ruby

Pour le puzzle 5 de Google Chromebook, j'ai eu besoin de changer de base pour faire des tests. (je n'ai pas trouvé l'énigme) La fonction to_s de ruby permet donc de convertir l'integ...

Surcharger les accesseurs par défaut dans les models de rails3

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 ...

Netbeans 7.0 pour faire du rubyonrails

Bon alors vous pouvez utilisé netbeans 7.0 pour faire du rubyonrails. 1) Téléchargez netbeans 7.0 ( https://netbeans.org/downloads/ ), elle n'existe pas encore en français, prenez l...

is_a, kind_of, connaitre la classe d'un objet ruby

Les objets ont tous la classe, euh pardon ont tous une classe. Il y a deux manières en ruby de trouver la classe d'un objet : is_a? et kind_of?  Exemple : irb(main):011:0> test1...

Activerecord-import le gem nécessaire pour les gros imports de données

Le Activerecord-import permet de faire des gros imports de données. Lors d'un gros import de données, au lieu de faire des saves à tire-larigot, il vaut mieux mettre les objets à sau...

Benchmark - Chronométrer son code Ruby avec Benchmark

Voici le code qui permet de mesurer l'execution de votre code ruby : require "benchmark" time = Benchmark.measure do   # Placer votre code à mesurer ici end    Rails.logger...

Ecrire dans le log de rails Rails.logger

Pour écrire dans le log de l'application rubyonrails, vous pouvez faire (n'importe où dans votre code Rails): Rails.logger.fatal("Message") Rails.logger.error("Message...

RubyOnRails 3.1 : Un lot de nouveautés bien sympatique

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  - &q...

Jquery ujs : bug du link_to confirm dialog toujours executé

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 (util...

De Rails 3.0.1 à Rails 3.0.3 : undefined method `original_path'

Vous avez un message du type :  NoMethodError (undefined method `original_path' for #<ActionDispatch::Http::UploadedFile:0xb62975f0>): Ne cherchez plus : pour les objets de typ...

Les petits bouts de code bogués dans les applications RubyOnRails 3

Voici quelques exemples de portion de code buggé : 1) Gestion des id et relations Exemple de mauvais code : family = Family.new(:name => "Bla") product = Product.new(:fa...

Une fonction pour vider les tables associées aux models - rubyonrails 3

Voici une fonction pour vider les tables associées aux models dans une application rubyonrails 3. Soit en console, soit dans votre code, vous pouvez faire : ActiveRecord::Base.class_...

Bundle install ou cap deploy - `initialize': not in gzip format (Zlib::GzipFile::Error)

Si vous rencontrez cette erreur `initialize': not in gzip format (Zlib::GzipFile::Error), en faisant un bundle install ou via capistrano (cap deploy), ce doit très certainement être ...

Rendu json avec rails 3

Si vous souhaitez faire un rendu json : voilà comment procéder : Dans routes.rb : get "show_product/:id(.:format)" => "products#show_product" Dans votre contro...

Récupérer la liste des tables de la base de données dans une application rubyonrails 3 ActiveRecord::Base.connection.tables

Comme d'habitude tout est dans le titre :  Voici comment récupérer la liste des tables de la base de données dans une application rubyonrails 3 ActiveRecord::Base.connection.tables =...

Générer des graphiques et schemas de données à partir d'une application rubyonrails 3 avec RailRoady

Comme toujours le titre est explicite : RailRoady (fork de railroad pour rails 2.3) permet de générer des graphiques et schemas de données à partir d'une application rubyonrails 3. D...

PassengerPreStart sur Nginx + Phusion Passenger 3, pré-chargement des applications rubyonrails

Depuis passenger 3, il existe une directive qui permet de dire à nginx de faire une requête sur le serveur spécifié au démarrage d'nginx. Du coup l'application se pré-charge pour que...

ssh et capistrano sur un long traitement (Connection reset by peer)

Avec capistrano il est fréquent que le déploiement prenne du temps, si le traitement est trop lourd capistrano "freeze". Exemple : cap deploy:cleanup (quand on a 50 release...

Script - Installation Ruby enterprise edition (REE) + Passenger + Nginx et Rmagick

Bon vous allez me dire encore... ouai c'est vrai, mais là le script est écrit ! Testé sur Debian et Ubuntu, il installe Ruby enterprise edition feb-2010, passenger 3.0, Nginx 0.8.53,...

Tutorial Rubyonrails 3 - Partie 3 - Création des relations entre les models (détail relation et migration)

Partie 3 – Rails3 -  Création des relations entre les models (détail relation et migration) N’hésitez à mettre des commentaires / à corriger mes fautes / à rajouter des choses ! ...

Tutorial Rubyonrails 3 - Partie 0 - Arborescence d'un projet rails3 et environnement

Tutorial Rubyonrails 3 - Partie 0 - Arborescence d'un projet rails3 et environnement Il s’agit de la première partie d’une série de tutorials rubyonrails 3 pour les novices qui ne ...

readline rvm ruby 1.8.7 ou ruby 1.9.2

Erreur : `require': no such file to load -- readline Pour résoudre cette erreur, il faut installer le package readline avec rvm puis réinstaller ruby avec rvm. Pas de panique ça p...

rubyonrails 3 Hash.from_xml il manque des données (xml attributes)

Il est bien pratique dans rails (2 et 3) d'importer un xml sous forme de hash grâce à Hash.from_xml("blabla xml") ! Problème cette méthode saute des éléments du xml en part...

Theme_support pour rails 2 et rails3 themeing

Theme support était à l'origine un plugin qui permettait d'avoir des thèmes pour son application ruby on rails 1.X ou 2.X. Voici comment cela fonctionne. Un répertoire themes à la r...

Resque, redis, bluepill, background job à la queue pour rails

Resque, Redis et bluepill pour rails2.X ou 3 Resque permet de mettre des backgrounds jobs dans des queues dans rails. https://github.com/defunkt/resque Redis est une base de données ...

openssl rvm ruby 1.8.7 ou ruby 1.9.2

Erreur : `require': no such file to load -- openssl Pour résoudre cette erreur, il faut installer le package openssl avec rvm puis réinstaller ruby avec rvm. Pas de panique ça prend ...

Rails3 : Comment utiliser les helpers AJAX de rails2 avec jquery

Il faut réinstaller les helpers : rails plugin install git://github.com/rails/prototype_legacy_helper Installer jrails qui surcharge les helpers pour utiliser jquery Dans le gemfile ...

Installer rubyonrails 3.0.0 et ruby 1.9.2 avec rvm sur ubuntu 10.04

Je suppose que vous avez déjà un ruby (1.8.7) qui fonctionne. Il faut installer curl et git, si vous ne les avez pas : sudo aptitude install curl git-core Installation de RVM (ruby...

Passer de rubyonrails 2.X à rails 3.0.0

Avant toute chose faites une sauvegarde de votre/vos projet(s) ! Je vous conseille d'installer le plugins rails-upgrade : script/plugin install git://github.com/rails/rails_upgrade.g...

Alwaysdata - Hébergement gratuit d'application rubyonrails

Alwaysdata permet d'héberger des applications rubyonrails gratuitement. Voici l'offre gratuite : Espace disque 10 Mo Trafic mensuel 1 Go Mémoire vive 40 Mo Les gem installées décompt...

RubyOnRails et la méthode "all?"

Cette méthode permet d'économiser quelques lignes de code... Elle permet faire une série de tests dans une boucle et renvoie true uniquement si tous les tests sont à true. Un exemple...

Installer Rmagick sur ubuntu 9.10 server sans encombre

Pour installer RMagick sur ubuntu 9.10 server : sudo aptitude install libmagick9-dev sudo gem install rmagick Plus recent : https://blog.escarworld.com/post/2010/05/19/Pas-possible-d...

underscore dans le nom de domaine (sous domaine) et internet explorer - erreur 422 - InvalidAuthenticityToken - Rubyonrails

Cela fait 1 journée complète que je cherche pourquoi je n'arrive pas à m'authentifier sur un sous-domaine. Erreur InvalidAuthenticityToken dans le log "production.log", et ...

Créer un projet rails avec une version spécifique du framework

Merci à mon chef de projet pour cette astuce... Si vous voulez créer un projet rails avec une version spécifique du framework rails : Par exemple pour une version 2.3.2 : rails _2.3...

Liens utiles sur le design web,intégration html css, javascript, rubyonrails et geek attitude à avoir dans ses flux rss

Voici les adresses des sites dont je suis l'actu : Design Web et intégration html/css https://www.smashingmagazine.com/ https://cssglobe.com/ https://webdesign.2803.com/ https://ww...

NetBeans 6.8 et débugguer du Ruby

Je viens du monde PHP avec la mauvaise habitude de débugguer mon code avec des "echo". Ce temps est révolu (j'aime bien cette phrase ^^). Voilà comment installer et utilis...

NetBeans 6.8 pour développer en ruby avec RubyOnRails

J'ai pas encore migré de NetBeans 6.7.1 à NetBeans 6.8 sur tous les postes (Portable, fixe, Boulot). Il n'y avait apparemment aucunes modifications intéressante pour moi. En fait il...

RubyOnRails 3 avant Mars 2010

Hé oui le développement de Rails 3 avance. Il parait que la version finale devrait sortir fin Février début Mars 2010. Excellente nouvelle ! Au rendez-vous la fusion avec Merb et un...

RubyOnRails, les fonctions et le calcul sur les dates

J'adore rubyonrails pour ses méthodes pour le traitement et le calcul des dates. Quelques unes de ces méthodes (à utiliser sans modération dans les named_scopes) t = Time.now t.mday...

Conversion d'encodage de caractères avec Iconv et Ruby

Vous voulez convertir simplement des caractères ISO-8859-1 vers UTF8 ou UTF8 vers ISO-8859-1. Et bien c'est pas compliqué : ISO-8859-1 vers UTF8 : @c = Iconv.new('utf-8','iso-8859-1...

Différence entre Destroy_all et delete_all pour les objets active_record de rubyonrails

C'est deux méthodes s'utilisent de la même manière : destroy_all(conditions = nil) delete_all(conditions = nil) La différence est que la méthode destroy_all instancie chaque objet, e...

Rails et gem pour la gestion des droits

Et voilà il s'agit du tout dernier railscast : celui du lundi 16 novembre... Il permet d'avoir une fine gestion des droits. Ca se passe ici. Mais pourquoi c'est toujours quand on a t...

Helper pour liste déroulante (select/option html) dans rails

Vous savez comment faire une liste déroulante avec rubyonrails ? La faire à la main ? L' helper Select ? Et non ! Il existe un helper spécifique bien plus intéressant mais il fallait...

Named_scope pour les performances

Quand on développe des applications web avec RubyOnRails le problème des performances se pose tôt où tard (d'ailleur souvent trop tard). Par exemple on veut connaitre la liste des pr...

Escarworld, le jeu d'escargot

Voilà mon projet qui est le plus vieux et oui plus d'un ans et demi maintenant. Il s'agit d'un jeu d'élevage d'escargots, il n'a pas la vocation d'être réaliste (en gros c'est pas p...

Un projet, deux projets, j'ai trop de projets

Depuis le milieu de mon stage à GDF (oui j'avais un peu de temps pour réfléchir), je me suis dit : "ho et puis si je faisais un petit jeu web." (autre que les petits othell...