Mehrere Controller mit einem generate Befehl anlegen

Kann ich mit einem Befehl mehrere Controller und mehrere View
gleichzeitig anlegen.
Ich dachte dabei als Übergabe für den Controllername ein Array zu
verwenden, aber irgendwie will das mein Rails nicht haben…

Oder ist das schlechter Stil, wenn man für jedes Obst einen eigene
Controller anlegt?

script/generate controller %W[apfel birne] index pfluecken essen

Any hints?

mario

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

was willst du denn mit deinem obst machen?

vielleicht reicht ja ein controller und dann hast du auch kein
problem mit DRY.

sind ja eher die models, die sich unterscheiden, oder?

gruß
manuel

Am 23.04.2008 um 19:39 schrieb Mario Schroeder:

Any hints?

mario


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

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.7 (Darwin)

iD8DBQFID3YBs/WwCK0ZZEARArpvAKDkdCWqSNGiT6zxS4anLk98fuw1lQCfccmH
HMKKk6MtSimu+T8AMB4bpMk=
=bSHT
-----END PGP SIGNATURE-----

Naja den Apfel will ich pflücken und essen, und eine Übersicht über die
Äpfel und Birnen haben.
DRY will ich auch haben… wenn es geht.

mario

Hi!
wenn du script/generate benutzt, bist du auf der Console unterwegs. Die
kennt kein Ruby. Da kommst du mit Ruby Syntax nicht weiter. Aber du
könntest in IRB folgendes tun:

%w{apfel birne orange}.each do |obst|
system “script/generate controller #{obst} index pfluecken essen”
end

Sers, Mario.

Kann ich mit einem Befehl mehrere Controller und mehrere View
gleichzeitig anlegen.

Selbstverständlich geht das.
Letzlich sind es zwar doch einzelne Aufrufe von script/generate, aber
mit Shellscript oder Batch-Aufrufen unter Windows geht das.
Da ich ein Unix-Mensch bin, hier eine Moeglichkeit fuer Unix/Linux:
for controller in apfel birne; do script/generate $controller index
pfuecken essen; done

Ich dachte dabei als Übergabe für den Controllername ein Array zu
verwenden, aber irgendwie will das mein Rails nicht haben…

Innerhalb von Rails geht dass etwas anders. script/generate ist ja
selbst ein Script, du kannst aus ruby heraus das beispielsweise mit
system() aufrufen:

[‘apfel’, ‘birne’].each do |controller|
system(“script/generate #{controller} index pfluecken essen”)
end

Mit einem map statt each bekommst du auch noch mit, ob das alles
geklappt hat.

Oder ist das schlechter Stil, wenn man für jedes Obst einen eigene
Controller anlegt?

Ich schaetze, du willst eigentlich etwas ganz anderes.
Aber generell, wenn jedes Obst ansich eben alles auch Obst ist, und du
mit dem Obst jeweils dasselbe machen willst, dann hast du deine
Obst-Objekte mit ActiveRecord auch nicht jeweils in einer eigenen
Tabelle, sondern du verwendest sog. Single table inheritance (siehe
ActiveRecord::Base).
Gerade in Rails wird versucht Dopplungen zu vermeiden (DRY - Don’t
Repeat Yourself).

Gruesse, Rainer