Développeur Web RoR

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

mercredi 25 janvier 2012

Ouvrir un tunnel SSH

Qu'est ce qu'un tunnel ssh ?

Un tunnel ssh est un conduit qui permet de faire transiter tout ce que l'on veut à travers ssh.

Voici un schema explicatif :

Pourquoi utiliser un tunnel ssh ?

L'intérêt principal est la sécurité. Seul le port 22 est écoute par le serveur en question (ssh est crypté et sécurisé). D'autre part (intérêt pour le fainéant) en utilisant des tunnels ssh ça vous permet de ne pas ouvrir des ports pour tout et n'importe quoi.

Comment le mettre en place ?

ssh -L port_local:localhost:port_sur_le_serveur -XC user@serveur

Exemples : 

pour VNC (port 5900) :

ssh -L 5900:localhost:5900 -XC me@example.com

pour SVN (port 3690) :

ssh -L 3690:localhost:3690 -XC me@example.com

Une fois le tunnel ssh ouvert vous pouvez sur votre poste faire comme si le service et sur localhost. Donc pour pouvez vous connecter avec vinagre (client VNC) sur localhost pour prendre la main sur example.com :

vinagre localhost:5900

D'une manière générale, si vous configurez vino (VNC server) pour écouter sur le port 5987 vous pourrez faire :

ssh -L Y:localhost:5987 -XC me@example.com

vinagre localhost:Y

Y étant un port quelconque n'étant pas déjà utilisé par localhost.

Sur windows y a pas de soucis vous pouvez ouvrir votre tunnel ssh en utilisant putty. (voir le Wiki de korben pour la config de putty : http://free.korben.info/index.php/Tunnel_SSH)

Il est également possible de changer le port de ssh...


mardi 6 décembre 2011

Changer une colonne (champ) de toutes les lignes d'une table (instances de model) avec rubyonrails

Il peut être avantagieux de changer une colonne dans toute une table :

MonModel.update_all(:attribut_en_question => valeur)

Exemple :

Product.update_all(:price => 10.0)

C'était la petite astuce du jour !

dimanche 27 novembre 2011

Rails 3 default_scope et unscoped

Rails 3 a apporté un petit truc sympa le default_scope. Il permet d'appeler un scope par défaut sur un model. Par contre il peut être sympa dans certain cas d'éviter d'utiliser le default_scope. C'est pour cette raison qu'il existe unscoped

Exemple :

class Product < ActiveRecord::Base

  default_scope :order_by_name, order(:name)

end

# Ordonné par name

# SELECT * FROM products ORDER BY name;

Product.all 

# SELECT * FROM products;

Product.unscoped.all

A retenir ! En même temps c'est pas très compliqué !