Développeur Web RoR

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

mercredi 17 juin 2015

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'utiliser quand on a de bonnes raisons (un order systèmatique)...

En cas de nécessité absolu de ne pas utiliser le default_scope (c'est là qu'on doit légitimement se poser des questions, hein), il existe une méthode : unscoped. Elle vire tous les scopes précédemment utilisés, donc attention à l'ordre dans lequel vous le chaînez.

Documentation officielle sur ces deux méthodes : http://api.rubyonrails.org/classes/ActiveRecord/Scoping/Default/ClassMethods.html#method-i-default_scope

vendredi 5 juin 2015

Commentaire multiligne en Ruby

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

=begin

def une_methode_en_commentaire

  puts "Bidule"

end

=end

La petite subtilité que je n'avais peut-être pas saisi à l'époque est qu'il ne faut pas mettre d'espace avant les "=" sinon ça ne fonctionne pas !

vendredi 29 mai 2015

Transformer votre CSS en SCSS

Il peut arriver de vouloir migrer un "vieux" CSS en SCSS pour factoriser les variables et centraliser les urls des ressources par exemple.

Voici un outil complet qui contient pas mal de paramêtre : http://sebastianpontow.de/css2compass/

Plus d'excuses, hein ;)

mardi 14 avril 2015

Utiliser Meld sous linux pour voir un diff git sur un fichier local avec sa précédente version.

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 (attention c'est d'une grande complexité ^^).

Donc pour résumer l'article, il faut écrire un script qui renvoie deux paramètres au lieu de sept.

nano /home/sylvain/diff.rb

Mettre les deux lignes ci-dessous dans le script (attention il s'agit d'anti-quote) :

#!/usr/bin/env ruby

`meld #{ARGV[0]} #{ARGV[1]}`

sudo chmod +x /home/sylvain/diff.rb

git config --global diff.external /home/sylvain/diff.rb

git diff monfichier.rb

Ça permet quand même d'avoir un diff plus visuel.

dimanche 5 avril 2015

Texte illisible dans RubyMine sur Ubuntu

Les textes de l'éditeur de Rubymine sont illisibles (font des menus et éditeur...) ?

Pas de panique il faut ajouter les lignes en gras ci-dessous dans le fichier RubyMine-7.0.4/bin/rubymine64.vmoptions

-Xms128m

-Xmx512m

-XX:MaxPermSize=250m

-ea

-Dsun.io.useCanonCaches=false

-Djava.net.preferIPv4Stack=true

-Djsse.enableSNIExtension=false

-XX:+UseConcMarkSweepGC

-XX:SoftRefLRUPolicyMSPerMB=50

-Dawt.useSystemAAFontSettings=lcd

-Dswing.aatext=true

-Dsun.java2d.xrender=true

vendredi 30 janvier 2015

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 application-bs.js et application-bs.css) : 

= require jquery.ui.all 

Par  

= require jquery-ui

Bon code.

mercredi 28 janvier 2015

MiniMagick Composite : composition de deux images en préservant la transparence

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, je me suis mis à tester image magick en ligne de commande. J'avais vraiment un exemple minimaliste et en ligne de commande, ça fonctionnait : la transparence était conservée. 

Fatigué de la différence en mini_magick et image magick j'ai lu le code source de mini_magick et je suis tombé sur ça : 

https://github.com/minimagick/minimagick/blob/master/lib/mini_magick/image.rb#L427

Tiens mais on peut spécifier un format dans la méthode composite (après coup j'ai un peu honte c'était dans la doc : http://www.rubydoc.info/github/minimagick/minimagick/MiniMagick/Image) le fait de choisir png en format de sortie, minimagick va conserver la transparence.

Bref voici un exemple concret (vous noterez la qualité et la précision de mes peintures numériques ^^) :


require 'mini_magick'
# composite -compose Dst-Over -gravity Center fond.png pochoir.png test.png
image = MiniMagick::Image.open("pochoir.png")
image2 = MiniMagick::Image.open("fond.png")
result = image.composite(image2, 'png') do |c|
c.compose "dst-over"
c.gravity "Center"
end
result.write("result.png")

- page 1 de 47