Blog..com
Créer votre Blog Emploi

Wiki Blogs Favoris

Administrateur de bases de données

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

jeudi 14 juin 2007

ruby rake #3 : la doc

rake doc:app

Lire la suite...

mercredi 13 juin 2007

ruby on rails et oracle : les commandes rake #2 : comment vider une table avec la commande rake db:migrate

notes :

ruby script\generate migration ma_migration crée ma_migration dans le ss rep migrate

on peut y coller le code qui est dans schema.rb (voir le #1), c'est un bon début

Migrer la base de données

rake migrate est déprécié --> rake db:migrate

la table est recrée (ah oui, sans les données oui.)

exemple 2 : C:\apc_demo\InstantRails1.7\InstantRails\rails_apps\rooracle>ruby script\generat e migration NewCol13June2007

     exists  db/migrate
     create  db/migrate/002_new_col13_june2007.rb

dans le fichier on ajoute une colonne : rajout de la ligne t.column "comments", :string, :limit => 4000 aux lignes de création de la table copiées/collées de schema.rb vers migrate/002_new_col13_june2007.rb

ensuite rake db:migrate

C:\apc_demo\InstantRails1.7\InstantRails\rails_apps\rooracle>rake db:migrate (in C:/apc_demo/InstantRails1.7/InstantRails/rails_apps/rooracle) == NewCol13June2007: migrating ================================================ -- create_table("books", {:force=>true})

  -> 1.8600s

== NewCol13June2007: migrated (1.8750s) =======================================
la console dit :

 ←[4;36;1mSQL (0.000000)←[0m   ←[0;1mOCIError: ORA-00955: ce nom d'objet existe
déjà: CREATE TABLE schema_info (version NUMBER(38))←[0m
 ←[4;35;1mSQL (0.000000)←[0m   ←[0mOCIError: ORA-00955: ce nom d'objet existe d

éjà: CREATE TABLE schema_info (version NUMBER(38))←[0m

 ←[4;36;1mSQL (0.000000)←[0m   ←[0;1mSELECT version FROM schema_info←[0m
 ←[4;35;1mSQL (0.000000)←[0m   ←[0mSELECT version FROM schema_info←[0m

Migrating to NewCol13June2007 (2)

 ←[4;36;1mSQL (1.281000)←[0m   ←[0;1mDROP TABLE books←[0m
 ←[4;35;1mSQL (0.344000)←[0m   ←[0mDROP SEQUENCE books_seq←[0m
 ←[4;36;1mSQL (0.172000)←[0m   ←[0;1mCREATE TABLE books (id NUMBER(38) NOT NULL
PRIMARY KEY, title VARCHAR2(4000) DEFAULT NULL, text VARCHAR2(4000) DEFAULT NUL

L, comments VARCHAR2(4000) DEFAULT NULL) ←[0m

 ←[4;35;1mSQL (0.032000)←[0m   ←[0mCREATE SEQUENCE books_seq START WITH 10000←[

0m

 ←[4;36;1mSQL (0.000000)←[0m   ←[0;1mUPDATE schema_info SET version = 2←[0m
 ←[4;35;1mSQL (0.000000)←[0m   ←[0mSELECT * FROM schema_info←[0m
 ←[4;36;1mSQL (0.078000)←[0m   ←[0;1mselect lower(table_name) from user_tables←

[0m

 ←[4;35;1mSQL (0.015000)←[0m   ←[0m select column_name as name, data_type as sq

l_type, data_default, nullable,

decode(data_type, 'NUMBER', data_precision,
'FLOAT', data_precision,
'VARCHAR2', data_length,
null) as limit,
decode(data_type, 'NUMBER', data_scale, null) as scale
from all_tab_columns
where owner = 'ROOR'
and table_name = 'BOOKS'
order by column_id

←[0m

 ←[4;36;1mPrimary Key (0.219000)←[0m   ←[0;1m select cc.column_name
from all_constraints c, all_cons_columns cc
where c.owner = 'ROOR'
and c.table_name = 'BOOKS'
and c.constraint_type = 'P'
and cc.owner = c.owner
and cc.constraint_name = c.constraint_name

←[0m

 ←[4;35;1mSQL (0.547000)←[0m   ←[0m SELECT lower(i.index_name) as index_name, i

.uniqueness, lower(c.column_name) as column_name

FROM user_indexes i, user_ind_columns c
WHERE i.table_name = 'BOOKS'
AND c.index_name = i.index_name
AND i.index_name NOT IN (SELECT uc.index_name FROM user_constraints uc WHERE uc

.constraint_type = 'P')

ORDER BY i.index_name, c.column_position

←[0m

maintenant on a une nouvelle colonne (et plus de lignes!)

jeudi 31 mai 2007

ruby on rails et oracle : les commandes rake #1

C:\apc_demo\InstantRails1.7\InstantRails\rails_apps\rooracle>rake db:schema:dump crée dans le sous-répertoire db un fichier schema.rb avec le "DDL" de la table :

# This file is autogenerated. Instead of editing this file, please use the
# migrations feature of ActiveRecord to incrementally modify your database, and
# then regenerate this schema definition.
ActiveRecord::Schema.define() do
 create_table "books", :force => true do |t|
   t.column "title", :string, :limit => 4000
   t.column "text",  :string, :limit => 4000
 end
end

Lire la suite...

Ruby On Rails et Oracle #4.1 : la gestion du NLS est un paramètre de application.rb

"gestion du nls" est impropre, il s'agit de mettre l'application client ruby en cohérence avec une base Oracle en UTF-8, à savoir en quelque chose comme WE8MSWIN1252.

dans app\controllers\application.rb, ajouter les lignes

Lire la suite...

mercredi 30 mai 2007

oracle, ruby on rails et le nls : je crois que j'ai trouvé !

dans la doc de rails (http://api.rubyonrails.org/) : Getting started

  1. At the command prompt, start a new rails application using the rails command and your application name. Ex: rails myapp (If you‘ve downloaded rails in a complete tgz or zip, this step is already done)
  2. Change directory into myapp and start the web server: script/server (run with —help for options)
  3. Go to localhost:3000/ and get "Welcome aboard: You’re riding the Rails!"
  4. Follow the guidelines to start developing your application

Lire la suite...

Ruby On Rails et Oracle #1.1 : pas de driver oci?

la commande :

C:\apc_demo\InstantRails1.7\InstantRails\rails_apps\rooracle>ruby script\generate scaffold books

donne pour résultat

Lire la suite...

mercredi 23 mai 2007

Ruby On Rails et Oracle #4.1 : la gestion du NLS ne semble pas satisfaisante

database en AL32UTF8 client SQL en WE8PC850 => NLS_LANG=FRENCH_FRANCE.WE8PC850. Cette variable est aussi initialisée dans use_ruby.cmd client Zindoz en WE8MSjesaisplusquoimaisje suis sûr que c'est le bon!



essais et résultats :

Lire la suite...

Ruby On Rails et Oracle #4 : de l'échafaudage à l'échafaud?

un exemple simple récupéré chez Oracle est rapide à mettre en oeuvre. Il y a toutefois quelques soucis :

  • la gestion du NLS n'est pas satisfaisante.
  • les liens show, edit et destroy produits par la commande generate scaffold ma_table_au_singulier utilisent des id avec des virgules.
  • les IDs générés par l'intermédiaire d'une séquence passent de 22 à 42 entre deux enregistrements?
  • la réactivité des utilisateurs des forums de rubyforge.org est de qualité (délais et solutions)

Lire la suite...

mardi 22 mai 2007

Ruby On Rails et Oracle #3 : où et comment démarrer le serveur Webrick avec une BD distante

Webrick est le serveur Web livré avec InstantRails. La différence avec une base mysql tient esentiellement dans le contenu de database.yml. Le premier essai se fait en configuration avec un serveur Web local Les pages sont donc appelées sur localhost.

Une des prochaines étapes consistera à déporter le serveur Web sur le serveur où est hébergée la base de données afin de simuler avec plus d'acuité une connexion Web.

Lire la suite...

dimanche 20 mai 2007

Ruby On Rails et Oracle #2 : que dit le driver oci quand un utilisateur A n'a pas les droits Oracle sur une table d'un schéma B?

C:\apc_demo\InstantRails-1.4-win\InstantRails\rails_apps>ruby -r oci8 -e "OCI8.new('roor', 'roor', 'xe').exec('SELECT * FROM hr.jobs ORDER BY 1') do |r|puts r.join(' | '); end"

stmt.c:528:in oci8lib.so: ORA-00942: Table ou vue inexistante (OCIError)
    from C:/apc_demo/InstantRails-1.4-win/InstantRails/ruby/lib/ruby/site_ru
by/1.8/oci8.rb:696:in `exec'
       from C:/apc_demo/InstantRails-1.4-win/InstantRails/ruby/lib/ruby/site_ru
by/1.8/oci8.rb:141:in `do_ocicall'
       from C:/apc_demo/InstantRails-1.4-win/InstantRails/ruby/lib/ruby/site_ru
by/1.8/oci8.rb:696:in `exec'
       from C:/apc_demo/InstantRails-1.4-win/InstantRails/ruby/lib/ruby/site_ru
by/1.8/oci8.rb:236:in `exec'
       from -e:1

Ruby On Rails et Oracle #1 : les problèmes de connexion

il s'agissait pour moi de valider la connectivité depuis un programme ruby vers une base Oracle. Les deux applis sont sur deux machines distinctes histoire de ne pas faire tout en localhost (et pourquoi pas de faire fonctionner InstantRails plus tard sur le même principe de deux machines) .

D'ici quelques jours je déploie un cookbook. À suivre!

Oracle® Database Express Edition Getting Started Guide 10g Release 2 (10.2)
Oracle Database 10g Express Edition: Not Just for Learners
Tips for Optimizing Rails on Oracle
What is ruby-oci8
Ruby on Rails with Oracle FAQ
Oracle® Database Express Edition 2 Day DBA

Lire la suite...