hallo,

sql   = "BEGIN; #{File.read('db/test_data.sql')}; COMMIT;"
cmd = "mysql -u user_name -D database_name -e '#{sql}'"
`cmd`

sollte funktionieren. in nem rake task fände ich das auch legitim. die db-zugangsdaten kannst du dir aus der database.yaml holen:

rails_env =  ENV['RAILS_ENV'] || 'development'
db_config = YAML.load(File.read("config/database.yml"))[rails_env]

ist natürlich nicht so schön, wie es in direkt in ruby zu machen, aber sicher schneller. der rake-task benötigt jetzt den mysql-client auf dem rechner.

wie schon vorgeschlagen könntest du die daten im dump auch in fixtures konvertieren, vielleicht bieten sich hier CSV-fixtures an -- http://ar.rubyonrails.org/classes/Fixtures.html

viele grüße,
phillip

--

Am 15.08.2008 um 12:53 schrieb Jan Luehr:

Hallo,

ich habe einen kleinen rake-Task geschrieben, der vor dem Testen Testdaten in
die Datenbank schreibt:
http://pastie.org/253485
Was dabei nervig ist, dass ich auf die Schleife (Zeile 6-8) angewiesen bin, da Zeile 9 (auskommentiert) knallt, wenn Das SQL-File mehr als eine Anweisung
hat.
Problematisch ist nur, dass der Split (Zeile 2) bricht, wenn im SQL in einem
Daten- oder Kommentarfeld ein ; steht.
Gibt es eine Möglichkeit, das ganze SQL-File einfach in die Datenbank zu
schreiben?

Danke,
Keep smiling
yanosz
_______________________________________________
rubyonrails-ug mailing list
[email protected]
http://mailman.headflash.com/mailman/listinfo/rubyonrails-ug

_______________________________________________
rubyonrails-ug mailing list
[email protected]
http://mailman.headflash.com/mailman/listinfo/rubyonrails-ug

Antwort per Email an