Développement Web Ruby
par Sylvain CLAUDEL

Derniers posts

RubyOnRails 3, mettre des index sur les clés primaires et étrangères dans une migration

Date d'édition 2011-01-11 à 08:45

Personne n'ignore que poser des index sur les clés primaires et étrangères augmente les performances des requêtes du sgbd.

https://fr.wikipedia.org/wiki/Index_(base_de_donn%C3%A9es)

Voici une migration magique. Elle ne gère pas les clés étrangères sur les tables de jointure (je n'ai pas pris le temps de le faire, mais si vous le faites postez-moi un commentaire)

class AddIndexes < ActiveRecord::Migration

  def self.up

    c = ActiveRecord::Base.connection

    ts = c.tables

    ts = ts - ["schema_migrations"]

    ts.each do |t|

      begin

        tablefields = eval(t.camelize.singularize + '.column_names')

      

        for ff in tablefields

          if ff == 'id' or not (ff =~ /.*_id/).nil? then

            add_index t, ff, :name => "index_#{t}_on_#{ff}"

          end

        end

      rescue

        puts "Erreur sur les tables de jointure"

      end

    end

  end


  def self.down

    c = ActiveRecord::Base.connection

    ts = c.tables

    ts = ts - ["schema_migrations"]

    ts.each do |t|

      begin

        tablefields = eval(t.camelize.singularize + '.column_names')


        for ff in tablefields

          if ff == 'id' or not (ff =~ /.*_id/).nil? then

            remove_index t, :name => "index_#{t}_on_#{ff}"

          end

        end

      rescue

        puts "Erreur sur les tables de jointure"

      end

    end

  end

end

Récupérer la liste des tables de la base de données dans une application rubyonrails 3 ActiveRecord::Base.connection.tables

Date d'édition 2011-01-10 à 14:12

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

=> ["schema_migrations", "sessions", "products", "families", .....]

 

Après suivant les besoins vous pouvez lister le schema complet :


    ts = 
ActiveRecord::Base.connection
.tables
    ts.delete("schema_migrations")
    ts.delete("sessions")
    ts.each do |t|
      begin
        # Récupère la liste des champs pour le model en cours
        tablefields = eval(t.camelize.singularize + '.column_names')
      rescue
        # On a affaire à une table de jointure
        puts "Table de jointure : #{t}"
      end
    end

Générer des graphiques et schemas de données à partir d'une application rubyonrails 3 avec RailRoady

Date d'édition 2011-01-05 à 10:40

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.

Dans votre gemfile :


gem 'railroady'

Sous votre distrib, (issu de la doc railroady) tapez :

sudo port install graphviz

Ensuite dans le répertoire de l'application rails 3 :

bundle install
rake diagram:all

Les graphiques sont générés dans le répertoire doc de votre application.

Source et site officiel : https://railroady.prestonlee.com/

Selection verticale ou rectangulaire avec NetBeans 6.9

Date d'édition 2011-01-03 à 13:29

Il existe un plugin netbeans pour faire de la selection verticale ou rectangulaire.

Télécharger le plugin (fichier nbm) à cette adresse : 

https://plugins.netbeans.org/PluginPortal/faces/PluginDetailPage.jsp?pluginid=33497

Dans netbeans : outils => plug-ins => Onglet "Téléchargés" => Bouton "Ajouter des Plug-ins" => Selectionner le fichier "nbm" => puis cliquez sur installer.

Ensuite des nouveaux boutons apparaissent dans l'éditeur...

Comparatif des ruby gems par categorie

Date d'édition 2011-01-03 à 10:28

Bon je fais un billet là dessus parce que à chaque fois que j'ai besoin de ce site je ne le trouve pas !

Il s'agit d'un site qui trie les gems ruby par categorie.

Donc voilà le lien pour par exemple gérer les versions d'enregistrement en base de données (ma solution pour le retrouver a été de chercher sur Yahoo plutôt que Google)

https://ruby-toolbox.com/categories/activerecord_versioning.html

Développement ruby et geekeries - rivsc