Forum: Italian Ruby user group Programma ruby e aggiornamenti "automatici"

Posted by Daneel Olivaw (daneel_olivaw)
on 2011-12-16 09:12
Salve lista.
Ho il mio bel (?) programmino in Ruby e Gtk che nonostante la qualità
del codice scritto gira decentemente e fa il suo lavoro senza
lamentarsi.
Logicamente ogni tanto c'è qualcosa da sistemare o qualcosa da
aggiungere, come per tutti i programmi, però andare ogni volta dai
clienti ad apportare le modifiche non è molto pratico.
Ho quindi pensato di sfruttare github, aggiungendo una funzionalità che
controlli se sono state pubblicate modifiche e in caso le scarichi... e
mi sono fermato al "pensato", perché non sono riuscito a trovare un
qualcosa per automatizzare in maniera semplice la cosa: spiegare al
cliente anche solo l'uso base di github NON è fattibile e cercare
qualcosa tipo "gem update/upgrade github" non dà niente di
significativo.

La domanda quindi è: sapete se esiste una gemma o qualcosa di simile per
"automatizzare" la gestione degli aggiornamenti di un programma senza
installare git, oppure devo per forza installarmelo e farlo usare
brutalmente dal mio programma?

Come sempre grazie.
Posted by Maurizio De magnis (olistik)
on 2011-12-16 09:33
(Received via mailing list)
2011/12/16 Daneel Olivaw <daneel.olivaw.r@gmail.com>:
> Salve lista.

ciao :-)

[cut]
> La domanda quindi : sapete se esiste una gemma o qualcosa di simile per
> "automatizzare" la gestione degli aggiornamenti di un programma senza
> installare git, oppure devo per forza installarmelo e farlo usare
> brutalmente dal mio programma?

se sulla macchina del tuo cliente non puoi installare un server ssh o
la macchina non e' esposta su internet allora significa che e' la
macchina del cliente che deve lanciare un comando d'aggiornamento
(manuale o automatico), giusto?

In tal caso, senza usare git, potrebbe avere senso inserire un
semplice rsync lanciato manualmente (o temporizzato) che dalla sua
macchina si scarica la versione aggiornata presente su un tuo server
esposto su Internet.
Se non puoi avere una tua macchina esposta su Internet allora la
soluzione con Github (sempre valida) risulta probabilmente piu'
conveniente.

> Come sempre grazie.

you're welcome ;-)
Posted by Daneel Olivaw (daneel_olivaw)
on 2011-12-16 10:20
Maurizio De magnis wrote in post #1036973:

> se sulla macchina del tuo cliente non puoi installare un server ssh o
> la macchina non e' esposta su internet allora significa che e' la
> macchina del cliente che deve lanciare un comando d'aggiornamento
> (manuale o automatico), giusto?

E' una macchina con win.
L'ipotesi di una gemma sarebbe ottimale per non installare altri 
programmi, dato che ho già dovuto installarci Mysql, Ruby e Gtk.

> In tal caso, senza usare git, potrebbe avere senso inserire un
> semplice rsync lanciato manualmente (o temporizzato) che dalla sua
> macchina si scarica la versione aggiornata presente su un tuo server
> esposto su Internet.

Uhm... potrei usarla come soluzione estrema...

> Se non puoi avere una tua macchina esposta su Internet allora la
> soluzione con Github (sempre valida) risulta probabilmente piu'
> conveniente.

Io propendevo per git perché ho praticamente tutto il lavoro fatto per 
quanto riguarda il versionamento corretto e il download dei soli files 
modificati.
In ogni caso, ci sono eventuali sistemi alternativi? Come gestite vooi 
la cosa... se la gestite?
Posted by Matteo Collina (Guest)
on 2011-12-16 10:31
(Received via mailing list)
Il giorno 16 dicembre 2011 09:12, Daneel Olivaw
<daneel.olivaw.r@gmail.com>ha scritto:

> qualcosa per automatizzare in maniera semplice la cosa: spiegare al
> cliente anche solo l'uso base di github NON  fattibile e cercare
> qualcosa tipo "gem update/upgrade github" non d niente di
> significativo.
>
> La domanda quindi : sapete se esiste una gemma o qualcosa di simile per
> "automatizzare" la gestione degli aggiornamenti di un programma senza
> installare git, oppure devo per forza installarmelo e farlo usare
> brutalmente dal mio programma?
>

Se riesci ad installare git su quella macchina, puoi eventualmente usare
Grit <https://github.com/mojombo/grit> per fare gli aggiornamenti
direttamente dall'interno della tua app. Sempre che il tutto sia
compatibile con Windows.
In pratica quando l'app si avvia controlla via Grit se sul repo github 
ci
sono nuovi commit, e mostra una classica schermata di aggiornamento. Poi
forzi un riavvio dell'applicazione.

Ti piace come idea?

Matteo
Posted by Maurizio De magnis (olistik)
on 2011-12-16 10:32
(Received via mailing list)
2011/12/16 Daneel Olivaw <daneel.olivaw.r@gmail.com>:
> Maurizio De magnis wrote in post #1036973:
[cut]
> In ogni caso, ci sono eventuali sistemi alternativi? Come gestite vooi
> la cosa... se la gestite?

"fortunatamente" mi capita di gestire solo macchine *nix based :-)
Posted by Daneel Olivaw (daneel_olivaw)
on 2011-12-21 08:49
Matteo Collina wrote in post #1036988:

> Se riesci ad installare git su quella macchina, puoi eventualmente usare
> Grit <https://github.com/mojombo/grit> per fare gli aggiornamenti
> direttamente dall'interno della tua app. Sempre che il tutto sia
> compatibile con Windows.
> In pratica quando l'app si avvia controlla via Grit se sul repo github
> ci
> sono nuovi commit, e mostra una classica schermata di aggiornamento. Poi
> forzi un riavvio dell'applicazione.
>
> Ti piace come idea?
>
> Matteo

E' praticamente quello che volevo fare, a parte l'installazione di git,
ma vabbè, non si può avere tutto :-)

Appena posso farò delle prove e vi farò sapere.

Intanto grazie.
Posted by Daneel Olivaw (daneel_olivaw)
on 2011-12-29 12:31
Daneel Olivaw wrote in post #1037631:
>> [...]
>
> E' praticamente quello che volevo fare, a parte l'installazione di git,
> ma vabbè, non si può avere tutto :-)
>
> Appena posso farò delle prove e vi farò sapere.
>
> Intanto grazie.

Dicevamo...

Dato che grit ha una documentazione praticamente inesistente e in rete
si trova sollo gente che al massimo dice "Ho usato grit diventando scemo
per capire come funziona perché non c'è documentazione, ma ce l'ho
fatta" senza mettere una cavolo di stringa di esempio, ho abbandonato
questa soluzione per mia manifesta incapacità di capirci qualcosa e sono
andato brutalmente di comandi git.

Riguardo a questo, due note:
- una volta che si lancia "git fetch" o "git remote update" il fatto che
ci sono modifiche da scaricare viene memorizzato e le volte successive
che si lancia il comando praticamente non dice nulla di utile, per cui
bisogna tenere traccia della cosa da qualche parte;
- winzozz (e lo dico con cattiveria e disprezzo perché in questo caso li
merita) ci mette del suo e per qualche strano motivo il riconoscimento
del contenuto dell'output del comando tramite

`comando`.include?("quel_che_mi_serve")

che sotto GNU/Linux funziona va a farsi benedire (sempre che non abbia
sbagliato da qualche parte), con mia somma gioia.

Ecco il codice che ho scritto (a grandi linee):

altre due note prima del codice:
- "Parameters" è la tabella che contiene vari parametri utili del
programma, tra cui il campo in cui memorizzo se è disponibile un
aggiornamento; ha logicamente un solo record
- "Parameters.parametri" è un "find first" su quella tabella

def aggiornaprogramma
  output = `git fetch 2>&1`
  if output.to_s != ""
    Parameters.update("1", {:aggiornamento => "1"})
  end
  if Parameters.parametri.aggiornamento == true
    #"Aggiornamento pronto"
    `git pull`
    Parameters.update("1", {:aggiornamento => "0"})
  end
end

Ho tolto la parte del codice in cui l'interfaccia grafica chiede
conferme, il resto è lì.

Se avete suggerimenti, sistemi migliori, critiche (costruttive, grazie)
o altro, sono qua.
Posted by Riccardo Tacconi (rtacconi)
on 2011-12-30 11:56
Scusate se magari dico cose che sono gia` state dette: ma mettere il 
programma dentro una gemma? Per farle l'aggiornamento

gem update mio_programma

Per gem private potresti usare un git repository private... pero` ci 
vorrebbe git oppure scaricare la gemma via ftp ed installarla localmente 
(con un tuo script).
Posted by Stefano Verna (Guest)
on 2011-12-30 13:41
(Received via mailing list)
2011/12/29 Daneel Olivaw <daneel.olivaw.r@gmail.com>:
> Dato che grit ha una documentazione praticamente inesistente e in rete
> si trova sollo gente che al massimo dice "Ho usato grit diventando scemo
> per capire come funziona perch non c' documentazione, ma ce l'ho
> fatta" senza mettere una cavolo di stringa di esempio, ho abbandonato
> questa soluzione per mia manifesta incapacit di capirci qualcosa e sono
> andato brutalmente di comandi git.

concordo sulla poca documentazione su grit :)
a suo tempo lo usai per creare un repository viewer in sinatra, qui
c' il codice, non so se ti pu essere utile:
http://stefanoverna.com/blog/2011/04/sinatra-un-re...
Posted by Daneel Olivaw (daneel_olivaw)
on 2011-12-30 18:33
Riccardo Tacconi wrote in post #1038836:
> Scusate se magari dico cose che sono gia` state dette: ma mettere il
> programma dentro una gemma? Per farle l'aggiornamento
>
> gem update mio_programma
>
> Per gem private potresti usare un git repository private... pero` ci
> vorrebbe git oppure scaricare la gemma via ftp ed installarla localmente
> (con un tuo script).

Mai neanche pensata questa, anche perché non saprei da dove cominciare
per fare una gemma '^_^

Stefano Verna:
> concordo sulla poca documentazione su grit :)
> a suo tempo lo usai per creare un repository viewer in sinatra, qui
> c' il codice, non so se ti pu essere utile:
> 
http://stefanoverna.com/blog/2011/04/sinatra-un-re...

Grazie, ci darò sicuramente un'occhiata.
Please log in before posting. Registration is free and takes only a minute.
Existing account (Switch to SSL-encrypted connection)
NEW: Do you have a Google/GoogleMail or Yahoo account? No registration required!
Log in with Google account | Log in with Yahoo account
No account? Register here.