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...
Démarrer un serveur http sur un dossier local Avec les collègues, on s'est lancé quelques défis d'intégration html/css, du coup nous avions besoin d'avoir un serveur http, voici que...
Pluck Pluck permet de récupérer dans un Array, la totalité des champs spécifiés correspondant au scope ActiveRelation, dans l'exemple ci-dessous les noms et les ids. Article.all.p...
I18n.t et paramètres Voici la syntaxe pour envoyer des paramètres à une chaine traduite : ci-dessous 'username' dépend de la personne connectée mais la chaine de bienvenue est commu...
S’auto-former à ruby 1 - Installer ruby avec rvm https://rvm.io/rvm/install 2 - Regarder la doc ruby Regardez essentiellement la colonne Methods, quand vous cliquez dessus, v...
Trier des objets suivant un modèle en Ruby # Ordre à respecter modele_tri = ["b","o","x","y","a","z"] donnees_a_trier = ["x","y","z","a","b","i"] # Les données qui ne sont pas spéc...
Comment lancer un script ssh sur plusieurs machines en même temps ? SSHKIT à l'aide SSHKIT est un gem maintenu par les créateurs de Capistrano (et la communauté OpenSource). Il pe...
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...
Il peut être nécessaire d'interpréter une séquence unicode en ruby. Voici un exemple : puts 's\u00E9par\u00E9' # Affiche "s\u00E9par\u00E9" Là vous pourriez dire qu'il suffit de do...
Bon à chaque fois que je dis ça, je m'attire des enemies, voici un cas pénible en syntaxe 1.9 : # Clé integer 2.3.3 :054 > { 4 => 'truc' } => {4=>"truc"} 2.3....
Ok j'ai craqué, certe un peu plus tard que tout le monde mais j'ai craqué : j'ai acheté un raspberrypi. A la base je compte faire un photomaton mais j'ai pas mal d'autres projets a...
Hier un collège me dit, je comprends pas j'ai une erreur quand j'itère sur mon array. Exemple simplifié du code : arr = [03,09,42,57] Voici l'erreur : Invalid octal digit En fait...
Une fois la console rails démarrée (rails c), il suffit de faire : ActiveRecord::Base.logger = Logger.new STDOUT
Hello, Il existe une forme raccourci de begin rescue Au lieu de faire begin mon_objet.bidule rescue nil end on peut utiliser : (mon_objet.bidule rescue nil)
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...
Je me souviens avoir cherché, il y a quelques temps sans jamais avoir trouvé une réponse qui fonctionne. Un peu la honte après 5-6 ans de Ruby... Heureusement que ça ne tue pas la ho...
L'article d'origine est situé ici : https://nathanhoad.net/how-to-meld-for-git-diffs-in-ubuntu-hardy Je me permets ici juste d'écrire le bout de script en ruby au lieu de python (att...
J'ai joué un peu avec MiniMagick ces derniers temps. Je cherchais à faire une composition de deux images en préservant la transparence. Après quelques heures de recherche et de test,...
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...
Tous les midi, materiel.net (merci à eux) lance un concours : trouver une vignette parmi les pages de leur site. Pourtant chaud-bouillant, tous les midi, je me fais battre à plates ...
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...
Je compare ici ruby 1.8.7 et ruby 1.9.3 (je pense que l'on peut généraliser à rb 1.8 vs rb 1.9). Ce post sera mis à jour au fur et à mesure de ces découvertes ! Le parsing des dates ...
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 d'avoir ce genre de code : command.contact_delivery.name Ici vous êtes obligé de tester que command et contact_delivery ne sont pas nil. RubyOnRails a ajouté une méth...
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 ...
Bon j'ai déjà fait pas mal de post sur le sujet voici la méthode qui marche (sur ubuntu / debian) sudo apt-get install libmagickwand-dev sudo gem install rmagick -v '2.13.1' Si ça ne...
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...
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...
J'utilise ActiveResource entre deux applications web. Je suis en train de migrer l'application de rails 3.0 vers rails 3.2 et là j'ai une erreur : ActiveResource::ClientError: Failed...
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...
Bon à la suite d'une discussion avec BobMaerten et PagedeGeek, voici le fruit de mes recherches (merci c'est plus clair dans ma tête :-) Donc en fait les integer sont traités différe...
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...
Vous avez installé ruby avec RVM, et quand vous faites : sudo ruby -v Vous obtenez ceci : sudo: ruby: command not found Il est temps d'utiliser rvmsudo ! Essayez : rvmsudo ruby -v ...
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...
Voici les quelques ressources que j'ai trouvé intéressante ces derniers jours (ça fait office de post-it en ce qui me concerne). Framework html / css / js : https://www.99lime.com/ j...
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...
Donc le petit code cadeau du jour : faire un zip d'une arborescence en ruby (1.8 et 1.9) avec rubyzip. require 'rubygems' require 'zip/zip' require 'zip/zipfilesystem' # Dossier ...
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...
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...
Le gem est apparu dans un railscast, il n'y a pas longtemps. Voici la doc : https://fakeweb.rubyforge.org/ qui est très bien faites d'ailleurs. Pratique pour les tests unitaires et f...
J'ai dans mes contacts deux entreprises qui cherchent des développeur Web RubyOnRails. Wype, une jeune Web Agency Parisienne est à la recherche d'un développeur web RubyOnRails (CDI,...
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...
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...
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...
Bon voilà dans rubyonrails, il y a un helper : number_to_human, qui est bien intéressant : https://api.rubyonrails.org/classes/ActionView/Helpers/NumberHelper.html#method-i-number_t...
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 l...
Il existe un gem qui colorise votre code, il permet de mettre en évidence la syntaxe de votre code. Installation : sudo aptitude install python-setuptools sudo easy_install pygments ...
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 utilisez les hash pour stocker tout et n'importe quoi, vous allez perdre en performance. L'intérêt d'un hash est comme il se définit d'ailleurs un tableau indexé. Il vous per...
Cramp est un framework d'application asynchrone et temps réel, bon je vous laisse le lien et le soin de matter un peu la doc. Au programme WebSocket et Streaming API. Il est distrib...
ERB est le moteur de template utilisé par RubyOnRails. Il peut être intéressant de l'utiliser avec ruby seulement. Je vous préviens ce n'est pas très compliqué, mais il y a une petit...
Voici la fonction ruby équivalent à la fonction php gethostbyaddr() qui permet de faire du reverse DNS (renvoie le PTR record ou pointer record associé à une ip) require 'socket' put...
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...
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...
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 (cont...
Bon après 1h30 de recherche à deux, on a trouvé une bonne partie, il manque un petit quelque chose (qu'on réussi à deviner avec un peu de bon sens), ce qui nous manque doit être réso...
Vous connaissez certainement tor (https://www.torproject.org/index.html.fr), le réseau décentralisé qui permet de se connecter anonymement. Pour l'installer sous linux accrochez-vous...
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...
Bon voilà si vous souhaitez le support du debugger pour ruby dans redcar : allez voter : https://redcar.uservoice.com/forums/69985-feature-requests/suggestions/1641385-ruby-debugger...
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...
J'étais en train de terminer un script ruby qui construit un sitemap pour les gandi blog, et lors de la recherche de la spécification du sitemap xml je suis tombé dessus ce générateu...
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 des petites actuces pour rubyonrails 3. Obtenir le controlleur courant controller.controller_name Obtenir la méthode courante controller.action_name Récupérer l'host request.en...
Bon le to_json c'est cool mais il vous manque des informations dans votre sérialisation ? Pas de soucis il existe des options à to_json : :include => :model_a_inclure(s) ou pour u...
Voici deux fonctions qui permettent d'afficher du JSON joliement. Elles nécessitent le gem json donc dans le Gemfile : gem 'json', '>= 1.2.0' Donc ensuite : bundle install Ensuit...
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...
Voici de simples exemples de cas d'utilisation de la class net::http de ruby; tout est sur github à cette adresse : https://github.com/augustl/net-http-cheat-sheet - Post de form - U...
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 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 =...
Partie 4 – Rails3 - ActiveRelation et scopes N’hésitez à mettre des commentaires / à corriger mes fautes / à rajouter des choses ! Vous avez vu dans la partie 2 : post = Post....
Les websockets (protocole : ws) permettent d'avoir une communication en mode connecté avec le serveur (alors que http est déconnecté) La lib websocket se trouve ici avec les exemples...
Voici comment on peut télécharger un fichier distant en ruby : require 'open-uri' newf = File.open('recup.sh','w') open('https://blog.escarworld.com/assets/images/install-ree-nginx-...
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 ! ...
Sondage sur les langages web coté server : https://www.developpez.net/forums/d990473/webmasters-developpement-web/general-conception-web/langage-serveur-prefere-web/ Allez voter pou...
Un gem vient de sortir, il utilise les librairies espeak et lame. Il génére un MP3 correspondant à du texte : https://rors.org/2010/10/21/espeak-ruby.html Essayez la demo c'est terri...
Vous êtes sous debian ou une vieille ubuntu et vous avez ce problème : sqlite3-ruby only supports sqlite3 versions 3.6.16+, please upgrade! Pas de panique, il faut compiler sqlite3 p...
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...
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...
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 ...
Un joli slideshow sur les différences entre ruby 1.8 et ruby 1.9. C'est ici que ça se passe (flèche droite pour aller à la "diapo" suivante) https://slideshow.rubyforge.or...
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...
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...
Comment installer la plus rapide implémentation de ruby du moment ? sudo aptitude install libreadline-dev git clone git://github.com/evanphx/rubinius.git cd rubinius ./configure rake...
Bon il y a pas mal de choses qui changent entre rails 2.3 et rails 3, voici une liste de vidéos histoire de connaitre les nouveautés et de gagner du temps. https://rubyonrails.org/s...
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...
Et oui pour utiliser la nouvelle version de rmagick (2.13.1) il faut une version plus récente d'imagemagick que ce qu'il y a sur les dépots d'ubuntu et de debian. Il faut donc se tap...
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...
Un compilateur css kesako ? Vous réviez d'utiliser des variables dans vos css, les fichiers qui passent par les compilateurs css supportent les variables mais aussi les mixins (liste...
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...
Pour parser du JSON deux méthodes : Utiliser les composants de base de rubyonrails : mon_hash = ActiveSupport::JSON.decode(ma_chaine_json) Cette manière de faire est moins performan...
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 en avez marre des vilaines erreurs 500 des applications rails ? Non je ne vais pas vous montrer comment utiliser CSS avec le fichier "public/500.html". BIen mieux : l...
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...
Comment archiver un répertoire complet en zip en ruby ? De nouveau ça vient de hidalgoemmanuel : Tout le code ce trouve sur le lien suivant (n'oubliez pas le gem rubyzip) : https://h...
Comment envoyer un fichier en ruby sur un serveur ftp ? Et bien une fonction simple mais efficace, même si les conventions minuscule/MAJUSCULE ne sont pas respectées on ne lui en vo...
Vous avez besoin d'une regexp en ruby (expression régulière) et la tester sur des données particulières ? Si vous lisez ce billet c'est que vous ne connaissez pas encore rubular. Ce...
Bon voilà j'avais envie de parler de cette fonction : column_names Product.column_names Ceci renvoie la liste des colonnes de la table dans la base de données : => "name"...
Un peu de calcul. Voilà ce que me donne IRB la console Ruby : irb(main):002:0> 1.16*100 => 116.0 irb(main):003:0> (1.16*100).truncate => 115 irb(main):004:0> (116.0).t...
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...