è possibile creare un’eccezione per un warning? Cerco di spiegarmi
meglio: utilizzo un modulo che in alcuni casi rari e particolari
(diciamo non RFC compliant) mi blocca l’esecuzione di uno script
restituendo:
./lib/modulo/mod.rb:123: warning: etc. etc.
Ho provato invano ad utilizzare qualcosa come “rescue warning”, ma a
quanto pare rescue si utilizza solo per sollevare eccezioni riguardanti
gli errori.
Non avendo la possibilità di modificare il modulo, come potrei fare? So
che la mia richiesta è un po’ generica, ma se avete qualche suggerimento
ve ne sarei grato.
Colgo l’occasione per farvi gli Auguri di un Felice Anno nuovo!
è possibile creare un’eccezione per un warning? Cerco di spiegarmi
meglio: utilizzo un modulo che in alcuni casi rari e particolari
(diciamo non RFC compliant) mi blocca l’esecuzione di uno script
restituendo:
…
Non avendo la possibilità di modificare il modulo, come potrei fare? So
che la mia richiesta è un po’ generica, ma se avete qualche suggerimento
ve ne sarei grato.
è possibile creare un’eccezione per un warning? Cerco di spiegarmi
meglio: utilizzo un modulo che in alcuni casi rari e particolari
(diciamo non RFC compliant) mi blocca l’esecuzione di uno script
restituendo:
./lib/modulo/mod.rb:123: warning: etc. etc.
Se è un messaggio su standard output o standard error mi sa che quel che
devi fare è ridirigerlo in una pipe verso un programma che in risposta
ai warning ti generi le eccezioni che poi gestirai. Non so quanto sia
compatibile con l’architettura generale del tuo sistema, ma è un’idea.
Quel modulo è closed source e non si può proprio toccare?
Ho provato invano ad utilizzare qualcosa come “rescue warning”, ma a
quanto pare rescue si utilizza solo per sollevare eccezioni riguardanti
gli errori.
Cos’è rescue warning?
Non avendo la possibilità di modificare il modulo, come potrei fare? So
che la mia richiesta è un po’ generica, ma se avete qualche suggerimento
ve ne sarei grato.
Colgo l’occasione per farvi gli Auguri di un Felice Anno nuovo!
� possibile creare un’eccezione per un warning? Cerco di spiegarmi
meglio: utilizzo un modulo che in alcuni casi rari e particolari
(diciamo non RFC compliant) mi blocca l’esecuzione di uno script
restituendo:
…
Non avendo la possibilit� di modificare il modulo, come potrei fare? So
che la mia richiesta � un po’ generica, ma se avete qualche suggerimento
ve ne sarei grato.
Che modulo e’? Puoi fare un esempio concreto?
ciao,
Luca
Il modulo è “snmp” (http://snmplib.rubyforge.org/). Il warning appare
nel momento in cui si faccia una richiesta ‘walk’ verso alcuni apparati
di rete che non implementano ‘get-next’ nel modo corretto/o standard.
snmp.walk([“1.3.6.1.2.1.25.4.2.1.2”]) do |name|
…
end
Non ho un sistema con IP pubblico da farvi provare. A prescindere
dall’SNMP ecc. non vi viene in mente qualche workaround? Per quel
poco che conosco di Ruby, pensavo all’utilizzo di un’eccezione
Il modulo è opensource, ma visto che viene utilizzato da altri script
preferivo non modificarlo.
puoi modificarlo nel tuo singolo programma facendo monkey patching,
cioè ridefinendo quel pezzetto.
Se il warning ad esempio ti viene da un metodo #foo() nella class Bar
del modulo Baz puoi ridefinirlo e cambiarlo nel tuo codice con
require ‘snmp’
questo ridefinisce il metoto Baz::Bar#foo in questo script
module Baz
class Bar
def foo() #copincolla il codice originale e cambia quel che serve
end
end
end
è una zozzeria ma se la libreria non è abbastanza modulare da
lasciartelo fare in un modo più raffinato dovrebbe funzionare.
Cos’è rescue warning?
Avendo poca esperienza con Ruby e con la programmazione in generale, sto
provando di tutto, cercando di poter gestire un’eccezione per un
warning. Fanta-programmazione
non troppo, in smalltalk (e in perl6 e in common lisp, IIRC) puoi
davvero trattare i warning come exception
Se è un messaggio su standard output o standard error mi sa che quel che
devi fare è ridirigerlo in una pipe verso un programma che in risposta
ai warning ti generi le eccezioni che poi gestirai. Non so quanto sia
compatibile con l’architettura generale del tuo sistema, ma è un’idea.
Quel modulo è closed source e non si può proprio toccare?
Il problema di utilizzare una pipe è che il mio script è parte di un
programma più grande, che lo “ingloba” come se fosse un modulo. Capisco
anche che senza mostrare il mio codice risulta difficile identificare il
mio problema.
Il modulo è opensource, ma visto che viene utilizzato da altri script
preferivo non modificarlo.
Cos’è rescue warning?
Avendo poca esperienza con Ruby e con la programmazione in generale, sto
provando di tutto, cercando di poter gestire un’eccezione per un
warning. Fanta-programmazione
non troppo, in smalltalk (e in perl6 e in common lisp, IIRC) puoi
davvero trattare i warning come exception GNU Smalltalk - Wikipedia
purtroppo in ruby no
Da quel che ho letto ho capito, magari sbagliando, che un warning
smalltalk sia un particolare tipo di eccezione che una volta sollevata
mostra il messaggio a lei associato. Non vedo difficoltà a fare in ruby
la stessa cosa, creando una classe Warning che derivi da Exception e che
faccia la puts del messaggio nell’initialize, ma è possibile che ci
siano dettagli dei warning smalltalk che mi sfuggono.