Derniers Posts

  • Debian : monter une partition windows

    On suppose que la partition à monter est /dev/sda1. Dans tous les cas, il faut créer un point de montage : # mkdir /windows Montage à la volée : # mount /dev/sda1 /windows # mount /dev/sda2 on / type ext3 (rw,errors=remount-ro) tmpfs on /lib/init/rw type (...)

  • Reverse Proxy

    Un petit billet sur le Reverse Proxy d’Apache. Voici comment le mettre en place de manière très simple : la conf apache : ProxyRequests Off Order allow,deny Allow from all Order allow,deny Allow from all ProxyPass / http://127.0.0.1:8080/ (...)

  • Apache : dynamic virtual hosts

    Un court article sur la gestion dynamique de virtual hosts par Apache. Mon problème était le suivant : comment faire pointer tout mes vhost vers une seule et unique appli ? La solution est donnée par la documentation Apache sur le mass virtual hosting. mod (...)

  • Installation de Munin

    Munin, outil de monitoring système incroyablement simple d’installation et d’utilisation. Installation Personnellement je ne m’en sers que pour monitorer mon serveur, mais munin fonctionne sur le mécanisme client-serveur pour la remontée d’infos. Là mon (...)

  • Git via ssh

    "dumb" protocols Au départ, j’ai voulu tester Git over https. Après quelques recherches et problèmes en tout genre, il semblerait que cette méthode soit très peu utilisable en pratique : il faut exécuter la commande ’git-update-server-info’ dans le repository (...)

  • Démarrage de votre appli rails

    Petit article qui fait la lumière sur les sources de ruby et de ses gems. load path Le "load path" est soit $LOAD_PATH ou $ : % irb irb(main):001:0> $ : => ["/usr/local/lib/site_ruby/1.8", "/usr/local/lib/site_ruby/1.8/i486-linux", (...)

  • Rester à jour sur Ruby & Rails

    Cet article est le résultat d’un sondage qui tente de regrouper différentes sources d’information pour rester à jour sur les évolutions de technos autour de Ruby et Rails. Les sources énoncées ici sont toutes gratuites. RSS Énormément de sites parlent de Ruby (...)

  • Mémoire sous linux

    Cet article regroupe pas mal d’infos que j’ai pu récupérer de ci de là, autour de la mémoire en général (morte, vive, cache ...) Disque dur Un disque dur est la superposition de plusieurs surfaces magnétiques circulaires : Chaque "disque" est découpé en (...)

  • Mantis Bug Tracker sur Lenny

    Installation $ apt-get install mantis Configuration : fichiers Dans le fichier /etc/mantis/config_db.php, paramétrez les valeurs par défaut. Je crois que cette étape est optionnelle puisque ces informations vois seront demandées par un formulaire par la (...)

  • JDBC, JRuby et DBI

    Comment utiliser un driver Java en Ruby ? Dans mon cas, il s’agit d’une base de données Adabas. Le driver ruby n’existe pas encore, mais il existe le driver Java (de.sag.jdbc.adabasd.ADriver). Installer JRuby Première chose à faire : installer JRuby. (...)

  • Trac, Integrated SCM - Project Management

    Cet article détaille l’installation "normale" de Trac puis l’installation sur Debian Sarge à partir d’une archive stable, avec le plugin pour Mercurial. Installation de Trac Trac is a minimalistic approach to web-based management of software projects. Its (...)

  • Tutoriel Mercurial + SSL + Apache2

    Mercurial : a fast, lightweight Source Control Management system designed for efficient handling of very large distributed projects. Voici brièvement les éléments mis en oeuvre pour monter un serveur Mercurial sécurisé (ssl) avec restriction d’accès (...)

  • Tutoriel : Apache - SSL - Subversion

    Cet article va détailler comment paramétrer Apache et Subversion en HTTPS. C’est pas bien méchant, on y retrouve les grandes étapes indispensables : Création d’un dépot Créer un nom de domaine sécurisé (Apache+SSL) Relier les deux avec libapache2-svn (webdav) (...)

  • Conseils simples pour un Windows stable

    Cet article s’adresse aux personnes qui ont un ordinateur et qui veulent configurer Windows pour qu’il fonctionne « correctement ». Tous les logiciels proposés sont gratuits. Cet article est en fait destiné à mon entourage et qui me demande souvent de réparer (...)

  • Des outils pour Ruby

    De la documentation au tests, Ruby fourmille d’outils qui aide les développements au quotidien. Cette liste n’est pas exhaustive mais je penses qu’elle permet d’avoir un bon aperçu. Cette liste est largement inspirée de l’article anglais (...)

  • Ajax.updater et Ajax.SlideUp

    Voici un petit article qui détaille la réalisation d’un appel Ajax qui va apparaître avec un petit effet. Le tout est réalisé avec Prototype et Scriptaculous. L’appel au serveur Dans notre code HTML, on va préparer un DIV qui va recevoir le contenu HTML renvoyé (...)

  • Mémo Ruby

    Après la conférence de Paris on Rails 2007, je penses que Ruby a de gros avantages, surtout en terme de temps de développement, alors je m’y mets une fois pour toutes. Cet article trace les grandes lignes des spécificités de Ruby, soit en terme de convention de (...)

  • FeedBurner avec SPIP

    Cet article détaille les étapes pour intégrer FeedBurner à un SPIP existant. Inscription à FeedBurner Créez un compte, renseignez le nom de l’url que vous souhaitez pour votre site, du type : Référencez ensuite sur votre site web un fil RSS avec l’URL de (...)

  • Stats : Awstats sur Debian Sarge

    Awstats est un soft qui a fait ses preuves en tant que analyseur de logs et qui va pouvoir vous sortir la fréquentation de votre site de manière extrêmement détaillée. Installation # apt-get install awstats Configuration Awstats D’abord allez dans (...)

  • Paris on Rails 2007

    Je reviens de la conférence sur Ruby on Rails (RoR) le 10 Décembre à la Villette : "Paris on Rails". J’ai beaucoup entendu parler de RoR, toujours en bien, j’ai eu à programmer rapidement quelques scripts pour récupérer des informations dans une BDD mais je ne (...)

  • Générer un sitemap SPIP

    Plugin Il y a un plugin tout prêt pour ça disponible sur SPIP zone au nom de sitemap_x_x.zip. Prenez la dernière version et décompressez le contenu dans le répertoire "plugins/" à la racine du SPIP (créez le si besoin). Vous aurez alors accès au lien vers la (...)

  • Fetchmail pour recevoir son Gmail

    Voila un petit article pour dire à Fetchmail de récupérer les emails stockés sur son compte Gmail. Installation # apt-get install fetchmail Configuration de Gmail Dans Gmail, allez dans "Settings", puis dans l’onglet "Forwarding and POP/IMAP". Dnas la (...)

  • Cryptographie : comprendre SSL

    Rivest Shamir Adleman, ce sont les noms des 3 grands mathématiciens qui ont conçus le très utilisé algorithme RSA. Le RSA s’est imposé comme réponse fiable aux problématiques de sécurité grandissantes. Le principe de la clef symétrique C’est la technique la plus (...)

  • Analyser ses logs avec Logcheck

    Logcheck est un petit outils très pratique de la Debian qui va vous éviter de devoir consulter vos fichiers de log régulièrement, il va vous envoyer un rapport par mail. # apt-get install logcheck syslog-summary Configuration Rajoutez simplement les (...)

  • Configurer Spamassassin pour Postfix

    Voici comment installer et configurer Spamassassin pour Postfix sur un Debian sarge. Spamassassin va scanner tous les mails entrant et les marquer ou non comme des spams. Installation Installez simplement Spamassassin : # apt-get install spamassassin (...)

  • Sécuriser Postfix avec Amavis et Clamav

    Vous voila donc avec un Postfix de configuré, et vous voulez maintenant mettre un antivirus pour filtrer les mails qui contiennent des virus, c’est article est pour vous. Amavis Amavis est un scanner de mail. Ce n’est pas un antivirus mais un outil qui (...)

  • Debian : Serveur de mail Postfix et Dovecot

    Le but de ce tutoriel est de faire le premier pas vers la configuration d’un serveur de mail. Il est fortement conseillé de lire l’article sur Amavis et Clamav pour la partie antivirus, puis l’article sur Spamassassin pour l’anti-spam. La sécurisation d’un (...)

  • Gérer ses backups sous Debian : backup-manager

    Une manière simple et rapide de mettre en place un système de sauvegarde automatique de ses données est d’utiliser le paquet "backup-manager". Installation Je suis sous Debian Sarge et j’utilise un dépot particulier (backport) pour backup-manager qui va me (...)

  • Backbone où est tu ?

    Backbones Quels sont les grosses architectures physiques qui gère le transport de données à travers le monde ? Qui a les liens très hauts débits qui constituent l’Internet mondial ? Voici quelques exemples de backbones dans le monde : Telia (Tele2...) : (...)

  • Une appli qui dessine

    Je vais vous décrire la manière dont je m’y suis pris pour reproduire approximativement des "dessins" genre motifs tribaux que je griffonne un peu partout, et qui (je n’ai pas honte de le dire), me plaisent beaucoup. Je fais des formes tentaculaires, qui (...)

  • XSS : Cross Site Scripting

    Les attaques par XSS consistent à réussir à passer les validations des filtres des applications web. Elles sont souvent à base de déspécialisations et d’encoding de code malicieux. Consultez une compilation de code à injecter qui peut passer ces filtres sur (...)

  • Mémo sur les scripts shell

    Petit mémo, cette fois sur le shell script. Ce sont donc quelques manipulations assez pratiques : Faire des opérations mathématiques $ a=1 ;echo $[a+1] 2 Créer un répertoire temporaire % mktemp /tmp/tmp.BHVdwY6358 Générer un timestamp timestamp=`date (...)

  • Une manière d’intégrer des vidéos dans SPIP

    Cet article n’est pas LA méthode unique et meilleure que les autres pour l’encodage et la publication de vidéos, c’est juste celle que j’ai été amené à utilisé dans le cadre d’un de mes projets. Le script D’abord un petit script qui va se charger de lister les (...)

  • Mémo mySQL

    Voici un petit mémo sur mySQL. Ce n’est pas un cours, seulement des exemples de requêtes utiles diverses. Je les met en vrac sans trop les détailler car elles sont explicites. Manipulation de date Cette requête sélectionne les enregistrements où la date et (...)

  • SQuirreL : un client SQL pour bases JDBC

    Voici une présentation rapide du client SQL « SQuireL » qui est un gestionnaire de connexion au bases de données avec des fonctionnalités avancées : interface intuitive, historique des requêtes SQL, création automatique de graph de relations entre les tables, ... (...)

  • Bind9 pour un cache DNS local

    Cet article est en fait la suite de la configuration d’un serveur DNS avec Bind9. Je vais partir de cette configuration classique pour modifier le serveur DNS en serveur cache DNS local. Organiser ses fichiers Dans un premier temps, je vais réorganiser ma (...)

  • DNS : Bind9 sur une dedibox

    Ce tutoriel détaille les étapes à suivre pour configurer Bind9 sur sa dedibox. Je vais décrire ma configuration pour un serveur qui héberge le serveur DNS et le serveur Web. Pour cet article, la dedibox en question est la "sd-10602.dedibox.fr", son IP : (...)

  • Tutoriel : OpenVPN

    La configuration d’un VPN est souvent d’une très grande utilité pour la sécurité de vos équipements mais aussi pour une facilité d’accès accrue. Cet article va vous présenter comment mettre en place un serveur VPN en utilisant OpenVPN, ainsi que la configuration des (...)

  • Jointure sur tables SQL

    Situation de départ On a 2 tables ’Account’ et ’User’ : mysql> create database test ; Query OK, 1 row affected (0.17 sec) mysql> use test ; Database changed mysql> CREATE TABLE Account ( id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, login VARCHAR(100) ) ; (...)

  • Howto Cacti : Créer un graph à partir d’un script

    Avec un compte admin, accédez à l’interface web de cacti, puis allez dans Console. Le script d’exemple On va simplement créer un petit script qui va pinguer un hôte : # !/bin/sh HOST=10.8.0.14 ping -q -W 1 -c 1 $HOST > /dev/null 2>&1 echo $ ? Ce (...)

  • p6spy : log des requêtes JDBC

    Le site de p6spy propose une méthode pour garder une trace des requêtes SQL, ce qui dans certains cas peut être très pratique quand vous voulez vérifier que votre application fait des appels corrects à la base de données. Installation Vous disposez donc d’un (...)

  • NAT Traversal

    Le problème du NAT traversal se rencontre lorsque 2 personnes qui sont toutes les deux derrière un NAT veulent communiquer entre elles. Principe du NAT en quelques mots A --- RA ---------------------- C A est derrière son routeur RA C ne peut pas parler (...)

  • Mémo sur les regex

    Quelques notions sur les regex Sélection de mots commencant par "toto" : $ echo -e "totoa\natoto" ; egrep "^toto" totoa Sélection de mots finissant par "toto" : $ echo -e "totoa\natoto" ; egrep "toto$" atoto Sélection de mots commencant et finissant par (...)

  • ies4linux : IE pour Linux

    ies4linux est un projet de portage de Internet Explorer pour Linux. L’application s’appuie sur wine et sur des fichiers téléchargés depuis le site de Microsoft ( !!) pour faire tourner un vrai petit IE sur votre bon vieux nunux, et ceci dans l’unique interêt (...)

  • Denial of Service sur une freebox

    Ceci est une petite remarque autours d’une attaque un peu spéciale et pas très dangeureuse pour laquelle je ne vais pas vous donner de contre mesures car elles sont assez lourdes. C’est donc juste à titre informatif. Le Denial of Service est une technique qui (...)

  • Connaître les faiblesses du wifi

    La spécificité du wifi est sa portée étendue. Le wifi peut être accessible par des récepteurs étrangers. Il n’est donc pas physiquement conscrit à des machines comme le permet l’ethernet filaire. Le wifi est bien prévu pour gérer ce phénomène en ajoutant une (...)

  • Première approche du buffer overflow

    Près de la moitié des failles de sécurité connues sont dues à des buffer overflow. Les buffer overflow exploitent une défaillance dans le code d’une application qui n’alloue pas un espace mémoire assez grand pour l’utilisation qui va en être faite. Le C par (...)

  • La formidable histoire du petit paquet ICMP qui voyage à travers le grand méchant Internet

    Nous verrons dans cet article comment un paquet IMCP (un "ping") trace sa route pour arriver sur une machine à l’autre bout du monde, et revenir - le tout en quelques milllisecondes. Étude de cas Nous n’aborderons pas toutes les possibilités de types de (...)

  • Tutoriel : Envoyer des SMS de notification via Nagios

    Nous allons voir comment configurer Nagios pour être notifié automatiquement par envoi de SMS qu’un Apache n’est plus accessible. Pour des raison de simplicité, On va monitorer un Apache local, ce qui, il est vrai, n’a pas de grande utilité pratique sinon de (...)

  • Configurer Smstools

    Configuration de SmsTools apt-get install smstools Configuration d’un mobile avec cable USB. La prise en charge des mobiles récents ne devrait poser aucun problème. Laissez la plupart des options par défaut. Vous pouvez désactiver la réception des SMS et il (...)

  • 2

    Démarrage de votre appli rails

    Petit article qui fait la lumière sur les sources de ruby et de ses gems.

    load path

    Le "load path" est soit $LOAD_PATH ou $ :

    % irb
    irb(main):001:0> $:
    => ["/usr/local/lib/site_ruby/1.8", "/usr/local/lib/site_ruby/1.8/i486-linux", "/usr/local/lib/site_ruby/1.8/i386-linux", "/usr/local/lib/site_ruby", "/usr/lib/ruby/1.8", "/usr/lib/ruby/1.8/i486-linux", "/usr/lib/ruby/1.8/i386-linux", "."]

    Le "load path" est l’ensemble des répertoires dans lesquels ruby va aller chercher les fichiers required.

    Ruby sources

    Les sources de ruby sont dans un des réportoires de $ :. Apparement, les sources de Ruby 1.8 se trouvent dans le répertoire "/usr/lib/ruby/1.8" :

    % ls /usr/lib/ruby/1.8
    abbrev.rb             cmdparse2.rb  digest        forwardable.rb   io            mkmf-gnome2.rb  pango.rb        rdoc               scanf.rb       time.rb     xmlrpc
    atk.rb                complex.rb    digest.rb     ftools.rb        ipaddr.rb     mkmf.rb         parsearg.rb     readbytes.rb       set.rb         tmail       xsd
    base64.rb             csv.rb        dl            gconf2.rb        irb           monitor.rb      parsedate.rb    resolv.rb          sha1.rb        tmail.rb    yaml
    benchmark.rb          daemonize.rb  drb           gdk_pixbuf2.rb   irb.rb        mutex_m.rb      pathname.rb     resolv-replace.rb  shell          tmpdir.rb   yaml.rb
    bigdecimal            daemons       drb.rb        generator.rb     jcode.rb      ncurses.rb      ping.rb         rexml              shell.rb       tracer.rb
    binding_of_caller.rb  daemons.rb    e2mmap.rb     getoptlong.rb    kconv.rb      net             pkg-config.rb   rinda              shellwords.rb  tsort.rb
    breakpoint_client.rb  date          English.rb    getopts.rb       libglade2.rb  observer.rb     pp.rb           RMagick.rb         singleton.rb   ubygems.rb
    breakpoint.rb         date2.rb      Env.rb        glib2.rb         log4r         open3.rb        prettyprint.rb  rss                soap           un.rb
    cairo                 date.rb       erb.rb        glib-mkenums.rb  log4r.rb      openssl         profile.rb      rss.rb             sync.rb        uri
    cairo.rb              DBD           eregex.rb     gserver.rb       logger.rb     openssl.rb      profiler.rb     rubygems           tempfile.rb    uri.rb
    cgi                   dbi           expect.rb     gtk2             mailread.rb   open-uri.rb     pstore.rb       rubygems.rb        test           weakref.rb
    cgi-lib.rb            dbi.rb        fileutils.rb  gtk2.rb          mathn.rb      optparse        racc            rubyunit.rb        thread.rb      webrick
    cgi.rb                debug.rb      finalize.rb   i486-linux       matrix.rb     optparse.rb     rational.rb     runit              thwait.rb      webrick.rb
    cmdparse              delegate.rb   find.rb       importenv.rb     md5.rb        ostruct.rb      rbconfig        rvg                timeout.rb     wsdl

    rubygems

    On constate la présence du fichier ’rubygems.rb’. Lorsque l’on fait un "require ’rubygems’", c’est ce fichier qui est visé.

    % head -10 /usr/lib/ruby/1.8/rubygems.rb
    # -*- ruby -*-
    #--
    # Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
    # All rights reserved.
    # See LICENSE.txt for permissions.
    #++

    require 'rubygems/rubygems_version'
    require 'rubygems/defaults'
    require 'thread'

    Le fichier "rubygems/defaults.rb" contient l’information sur l’emplacement des gems :

     # Default home directory path to be used if an alternate value is not
     # specified in the environment.
           #
           # Debian patch: search order of this directory.
           #   1. GEM_HOME enviroment variable
           #      (Using this, Gems are to be installed in any path as you like)
           #   2. /var/lib/gems/{ruby version} (This is the default path in Debian system)
           #
     def self.default_dir
       '/' + File.join('var', 'lib', 'gems', ConfigMap[:ruby_version])
     end

    les sources des gems

    On va aller voir dans le répertoire "/var/lib/gems/1.8" :

    % ls /var/lib/gems/1.8
    bin  cache  doc  gems  source_cache  specifications

    - le répertoire bin/ contient quelques programmes : rake rubyforge sow

    - le répertoire cache/ est utilisé pour le téléchargement des gems

    - le répertoire doc/ avec toutes les documentation des gems

    - le répertoire gems/ contient les sources des gems. C’est ici que vous pourrez consulter le code source de active_record, action_pack etc.

    Ce qu’il se passe lorsque vous démarrez le server

    Regardons le script de démarrage du serveur :

    % cat script/server
    #!/usr/bin/env ruby
    require File.dirname(__FILE__) + '/../config/boot'
    require 'commands/server'

    On utilise la syntaxe "/usr/bin/env ruby" pour travailler avec la version courante de ruby installé sur le système.

    "__FILE__" donne le chemin du fichier courant.

    Le premier require charge le fichier config/boot.rb :

    # Don't change this file!
    # Configure your app in config/environment.rb and config/environments/*.rb

    RAILS_ROOT = "#{File.dirname(__FILE__)}/.." unless defined?(RAILS_ROOT)

    module Rails
     class << self
       def boot!
         unless booted?
           preinitialize
           pick_boot.run
         end
       end

       def booted?
         defined? Rails::Initializer
       end

       def pick_boot
         (vendor_rails? ? VendorBoot : GemBoot).new
       end

       def vendor_rails?
         File.exist?("#{RAILS_ROOT}/vendor/rails")
       end

       # FIXME : Ruby 1.9
       def preinitialize
         load(preinitializer_path) if File.exists?(preinitializer_path)
       end

       def preinitializer_path
         "#{RAILS_ROOT}/config/preinitializer.rb"
       end
     end

     class Boot
       def run
         load_initializer
         Rails::Initializer.run(:set_load_path)
       end
     end

     class VendorBoot < Boot
       def load_initializer
         require "#{RAILS_ROOT}/vendor/rails/railties/lib/initializer"
       end
     end

     class GemBoot < Boot
       def load_initializer
         self.class.load_rubygems
         load_rails_gem
         require 'initializer'
       end

       def load_rails_gem
         if version = self.class.gem_version
           gem 'rails', version
         else
           gem 'rails'
         end
       rescue Gem::LoadError => load_error
         $stderr.puts %(Missing the Rails #{version} gem. Please `gem install -v=#{version} rails`, update your RAILS_GEM_VERSION setting in config/environment.rb for the Rails version you do have installed, or comment out RAILS_GEM_VERSION to use the latest version installed.)
         exit 1
       end

       class << self
         def rubygems_version
           Gem::RubyGemsVersion if defined? Gem::RubyGemsVersion
         end

         def gem_version
           if defined? RAILS_GEM_VERSION
             RAILS_GEM_VERSION
           elsif ENV.include?('RAILS_GEM_VERSION')
             ENV['RAILS_GEM_VERSION']
           else
             parse_gem_version(read_environment_rb)
           end
         end

         def load_rubygems
           require 'rubygems'

           unless rubygems_version >= '0.9.4'
             $stderr.puts %(Rails requires RubyGems >= 0.9.4 (you have #{rubygems_version}). Please `gem update --system` and try again.)
             exit 1
           end

         rescue LoadError
           $stderr.puts %(Rails requires RubyGems >= 0.9.4. Please install RubyGems and try again: http://rubygems.rubyforge.org)
           exit 1
         end

         def parse_gem_version(text)
           $1 if text =~ /^[^#]*RAILS_GEM_VERSION\s*=\s*["']([!~<>=]*\s*[\d.]+)["']/
         end

         private
           def read_environment_rb
             File.read("#{RAILS_ROOT}/config/environment.rb")
           end
       end
     end
    end

    # All that for this:
    Rails.boot!

    Donc on appelle seulement la méthode Rails.boot ! qui va appeler config/preinitialize.rb si le fichier existe dans votre projet rails.

    Ensuite, on va déterminer si la version de rails à utiliser est la version gem ou si une version spéciale de rails réside dans votre répertoire vendor/. La version trouvée est chargée.

    Dans mon cas, mon rails a été installé avec gem, donc c’est le ’GemBoot’ qui est utilisé. On fait donc un require ’rubygems’.

    Par acquis de conscience, vérifions que ce fichier est bien dans le load path :

    % irb
    irb(main):001:0> $:.each {|d| if File.exists?(d) then Dir.new(d).each {|f| p f if f =~ /rubygems\.rb/ } end }
    "rubygems.rb"
    => ["/usr/local/lib/site_ruby/1.8", "/usr/local/lib/site_ruby/1.8/i486-linux", "/usr/local/lib/site_ruby/1.8/i386-linux", "/usr/local/lib/site_ruby", "/usr/lib/ruby/1.8", "/usr/lib/ruby/1.8/i486-linux", "/usr/lib/ruby/1.8/i386-linux", "."]
    irb(main):002:0>

    Note : le "load path" est accessible par les variables $ : et $LOAD_PATH.

    ’rubygems’ est maintenant chargé. On va également charger la gem rails (en précisant la version de la gem si c’est indiqué dans environment.rb).

    Enfin, on require ’initializer’ (/var/lib/gems/1.8/gems/rails-2.0.2/lib/initializer.rb), puis :

    Rails::Initializer.run(:set_load_path)

    Comme précisé dans les commentaires de initializer.rb :

       # Runs the initializer. By default, this will invoke the #process method,
       # which simply executes all of the initialization routines. Alternately,
       # you can specify explicitly which initialization routine you want:
       #
       #   Rails::Initializer.run(:set_load_path)
       #
       # This is useful if you only want the load path initialized, without
       # incuring the overhead of completely loading the entire environment.

    Démarrage du serveur

    Ensuite, dans script/server :

    require 'commands/server'

    On va charger le fichier /var/lib/gems/1.8/gems/rails-2.0.2/lib/commands/server.rb qui effectue le choix du serveur à démarrer, puis le démarre en faisant :

    require "commands/servers/#{server}"

    ce qui va charger le fichier : /var/lib/gems/1.8/gems/rails-2.0.2/lib/commands/servers/webrick.rb

    0 message en réponse à l'article

    Ce forum est modéré à priori : votre contribution n'apparaîtra qu'après avoir été validée par un administrateur du site.

    Qui êtes-vous ? (optionnel)

    (Pour créer des paragraphes, laissez simplement des lignes vides.)