rake doc:app
mercredi 13 juin 2007
ruby on rails et oracle : les commandes rake #2 : comment vider une table avec la commande rake db:migrate
Par Renaud Gaudin le mercredi 13 juin 2007, 00:17
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
Par Renaud Gaudin le jeudi 31 mai 2007, 23:44
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
Ruby On Rails et Oracle #4.1 : la gestion du NLS est un paramètre de application.rb
Par Renaud Gaudin le jeudi 31 mai 2007, 23:32
"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
mercredi 30 mai 2007
oracle, ruby on rails et le nls : je crois que j'ai trouvé !
Par Renaud Gaudin le mercredi 30 mai 2007, 23:06
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
Ruby On Rails et Oracle #1.1 : pas de driver oci?
Par Renaud Gaudin le mercredi 30 mai 2007, 22:21
la commande :
C:\apc_demo\InstantRails1.7\InstantRails\rails_apps\rooracle>ruby script\generate scaffold books
donne pour résultat
mercredi 23 mai 2007
Ruby On Rails et Oracle #4.1 : la gestion du NLS ne semble pas satisfaisante
Par Renaud Gaudin le mercredi 23 mai 2007, 23:45
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 :
Ruby On Rails et Oracle #4 : de l'échafaudage à l'échafaud?
Par Renaud Gaudin le mercredi 23 mai 2007, 23:29
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_singulierutilisent 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)
mardi 22 mai 2007
Ruby On Rails et Oracle #3 : où et comment démarrer le serveur Webrick avec une BD distante
Par Renaud Gaudin le mardi 22 mai 2007, 09:58
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.
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?
Par Renaud Gaudin le dimanche 20 mai 2007, 23:58
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:1Ruby On Rails et Oracle #1 : les problèmes de connexion
Par Renaud Gaudin le dimanche 20 mai 2007, 22:43
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