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...
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...
Supprimer (enfin plutôt remplacer) les caractères accentués avec I18n.transliterate de rails Voici un exemple : I18n.transliterate('Ærøskøbing') # => "AEroskobing" Plus info tr...
Voici 7 de mes alias pratiques et qui font gagner du temps Démarrer la console rubyonrails alias rac="rails c" Démarrer un serveur rubyonrails alias ras="rails s -b 0.0.0.0" Dém...
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é...
Une fois la console rails démarrée (rails c), il suffit de faire : ActiveRecord::Base.logger = Logger.new STDOUT
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...
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...
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...
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...
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...
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...
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...
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...
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 ...
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...
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...
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 est possible. Pensez d'abord à "rollbacker" la migration (identifiée par son numéro == date) si elle avait...
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...
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 ...
La solution ultime à tous mes problèmes de déploiement. 1) Mettre ceci dans environments/production.rb : config.assets.precompile += ["*.css", "*.js"] ça perme...
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...
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 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...
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...
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 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...
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...
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...
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 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...
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...
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...
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...
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 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...
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...
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...
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...
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...
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 est un générateur d'interface d'administration personnalisable pour application rubyonrails, au programme export xml, csv, json, filtre personnalisable, pagination, .... ...
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...
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...
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...
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...
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...
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...
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é...
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...
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 ...
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...
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...
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...
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...
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...
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...
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...
Vous avez un message du type : NoMethodError (undefined method `original_path' for #<ActionDispatch::Http::UploadedFile:0xb62975f0>): Ne cherchez plus : pour les objets de typ...
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...
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_...
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 ...
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...
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 =...
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...
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...
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...
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,...
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 Il s’agit de la première partie d’une série de tutorials rubyonrails 3 pour les novices qui ne ...
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...
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 é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 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 ...
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 ...
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 ...
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...
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 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...
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...
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...
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 ...
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...
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...
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...
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...
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...
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...
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...
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...
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...
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...
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...
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...
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...