Forum: PC-Programmierung Ruby: Konstante redefinieren ohne eine Warnung


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Moriz (untertaucher)


Lesenswert?

Ich schreibe einen kleinen Server mit Sinatra.

Sinatra hat ein paar eigene Optionen, die wie üblich ober ARGV erwartet 
werden.

Nun hat aber meine Anwendung eigene Optionen. Ich benutze dazu optparse 
bevor Sinatra geladen wird und hier beginnt das Problem: meine Anwendung 
muss die Sinatra als gültige Optionen akzeptieren, sonst gibt es einen 
Fehlerabbruch.

optparse bietet nun zwei Möglichkeiten, die aber beide dasselbe Problem 
haben: die akzeptierten Optionen können in ARGV gelöscht werden, oder 
nicht.

Ich benutze die löschende Variante und folglich sind nach dem Aufruf 
keine Optionen mehr in ARGV. Um dem abzuhelfen sammelt optparse die 
Sinatra-Optionen in einen Array – so weit so gut.

Nun soll ARGV entsprechend geändert werden:
1
ARGV = $sinatraOptions

Da ARGV eine Konstante ist, wird die Operation zwar ausgeführt, führt 
aber zu einer Warnung – die möchte ich los werden.

Optparse schafft das irgendwie, aber wie, das ist ziemlich 
undurchsichtig.

Was ist der Trick?

: Bearbeitet durch User
von Moriz (untertaucher)


Lesenswert?

Das ist der Trick:
1
  $sinatraOptions.each do |o|
2
    ARGV << o
3
  end

$sinatraOptions ist ein Array mit den Optionen für Sinatra.

Die Warnung wird nur ausgelöst, wenn ARGV ein neues Objekt zugewiesen 
bekommt.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.