Ruby: Konstante redefinieren ohne eine Warnung

OP #7591109

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?

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 2 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.