pg_explain

enviat per Ramon Salvadó el dimecres 19 de Desembre del 2007 a les 08:19 hores

He publicat un petit plugin de rails que afegeix als logs els “explain” o “explain analyze” de les consultes sql. Solament funciona si estem utilitzant una base de dades postgresql.

Podeu consultar-ne els detalls aquí.

Un exemple de la sortida als logs:

1
2
3
4
5
6
7
8
9
10
11
12
Component Load (0.039698)   SELECT components.* FROM components INNER JOIN web_module_components ON components.id = web_module_components.component_id WHERE ((web_module_components.web_module_id = 5)) ORDER BY web_module_components.order ASC

  Explain Component Load
   
  Sort  (cost=42.37..42.38 rows=5 width=565)
    Sort Key: web_module_components."order"
    ->  Hash Join  (cost=30.48..42.31 rows=5 width=565)
          Hash Cond: (components.id = web_module_components.component_id)
          ->  Seq Scan on components  (cost=0.00..11.30 rows=130 width=561)
          ->  Hash  (cost=30.38..30.38 rows=8 width=8)
                ->  Seq Scan on web_module_components  (cost=0.00..30.38 rows=8 width=8)
                      Filter: (web_module_id = 5)

Instal·lació Ruby, Rails i PostgreSQL en MacOSX

enviat per Ramon Salvadó el dimecres 14 de Febrer del 2007 a les 15:51 hores

Hem trobo que de tant en tant he d’instal·lar tot l’entorn de desenvolupament rails per a un amic que m’ho demana per provar-ho. De fet a força de fer-ho vàries vegades al final vaig automatitzar-ho amb una tasca de capistrano per alleugerir el procés.

Per a que hem serveixi de referència per al pròxim cop (cas que no tingui el meu macbook a mà) els passos a seguir són:

1. Instal·lar les “Xcode tools” (que es troben el els CD’s de sistema), pel compilador.

2. Instal·lar darwinports i actualitzar-lo:

1
2
sudo port selfupdate
sudo port sync

3. Instal·lar programari necessari (ruby, ruby-gems, postgres, etc):


sudo port install screen subversion postgresql81 ruby rb-rubygems

4. Instal·lar les gems que ens interessin, per exemple:


sudo gem install rails rcov gettext mongrel gettext zentest postgres --include-dependencies

5. Preparar la gem del postgres(requereix de fer un petit “hack” per a que trobi les llibreries al compilar) i inicialitzar la base de dades:

1
2
3
4
5
6
7
cd /opt/local/lib/ruby/gems/1.8/gems/postgres-0.7.1
sudo ruby extconf.rb --with-pgsql-include=/opt/local/include/pgsql8 --with-pgsql-lib=/opt/local/lib/pgsql8
sudo make && sudo make install
# Per si de cas
sudo gem install postgres
# Inicialitzem la base de dades (al directori que ens sembli adient)
/opt/local/lib/postgresql81/bin/initdb -D development/pgdata

6. Inicialitzar la base de dades i comprovar que tot funciona amb un projecte de test:

1
2
3
4
5
# Iniciar postgres
pg_ctl -D /development/pgdata -l ~/development/pgdata/psql.log start
# Per aturar-lo pg_ctl -D ~/development/pgdata stop
# Crear un projecte rails per a testejar que tot funciona correctament
rails -d postgresql testproject

7. Opcionalment, continuar la configuració segons aquest post.