Um eine existierende Saison zu klonen, sind folgende Schritte nötig:
Damit man die Testsaison nun korrekt verwenden kann, braucht man noch eine passende Saisondefinition. Dazu kopiert man am besten die für die geklonte Saison bestehende Definition im Ordner
RAILS_ROOT/config/seasons/
und benennt die Datei entsprechend der für den Klon gewählten Subdomain. In der Kopie müssen dann noch folgende und evtl. weitere ähnliche Einträge angepasst werden:
SeasonDefinition.create "Testsaison 2012" do # Namen anpassen, dieser Name wird unten der neuen Saison zugewiesen, s.u.
subdomain "test_season_2012" # Subdomain anpassen
import_contestants_from_contest "test_season_2012_nrth" do # Subdomain anpassen
Zunächst in der Rails-Konsole (bundle exec ./script/console production) auf dem Produktivsystem die zu klonende Saison finden, z.B.
s = Season.find_by_subdomain("2012")
Dann einen Klon dieser Saison erstellen:
snew = s.create_clone("Testsaison 2012", "test2012", :only_current_clients => true)
Dieser Befehl erstellt einen Klon der Saison mit folgendem Inhalt:
- Name "Testsaison 2012" (dieser Name stellt nicht etwa schon die Verbindung zur SeasonDefinition her, s.u.)
- Subdomain "test2012"
- Die geklonten Teams und deren aktivierte Computerspieler inklusive der Memberships
Weitere Optionen sind
- :clone_clients => true|false # Sollen die Clients kopiert werden (default true)
- :clone_memberships => true|false # Sollen die Memberships in den Klon übernommen werden (default true)
Nun existiert eine Kopie der Saison im System. Möglicherweise möchte man diese nun verstecken (da sie i.d.R. nur Testzwecken dient):
snew.public = false
snew.save
Der geklonten Saison muss dann über die Railskonsole noch die neue Seasondefinition zugewiesen werden:
snew.season_definition = "Testsaison 2012" snew.save
Jetzt sollte der Saisonklon unabhängig von der Originalsaison benutzbar sein (für den Fall, dass snew.public = false gesetzt wurde natürlich nur für Admins).