Programma ruby e aggiornamenti "automatici"

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.

2011/12/16 Daneel O. [email protected]:

Salve lista.

ciao :slight_smile:

[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 :wink:

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?

Il giorno 16 dicembre 2011 09:12, Daneel O.
[email protected]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

2011/12/16 Daneel O. [email protected]:

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 :slight_smile:

Matteo C. 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 :slight_smile:

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

Intanto grazie.

Daneel O. wrote in post #1037631:

[…]

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

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.

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).

2011/12/29 Daneel O. [email protected]:

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 :slight_smile:
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-repository-viewer-web-based-in-50-righe.html

Riccardo T. 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 ':slight_smile:

Stefano V.:

concordo sulla poca documentazione su grit :slight_smile:
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-repository-viewer-web-based-in-50-righe.html

Grazie, ci darò sicuramente un’occhiata.