Forum: Italian Ruby user group Ruby e rails

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
6f15eff3cbdf016983d831363117b9b7?d=identicon&s=25 Stefano De nigris (stewie)
on 2009-02-06 15:36
Ciao ragazzi,io ho creto un codice in ruby ma adesso lo vorrei mettere
in un progetto fatto con rails.Il progetto creato è uno standard,cioè
inserire un in un campo dei dati che verranno poi memorizzati nel
database,tuttavia dopo aver digitato quello che desidero cliccando su un
tasto mi deve partire il mio programma.Mi sapreste dire dove dovrei
mettere il mio codice per farlo partire???In quale cartella??Spero di
essere stato chiaro(non sono molto bravo con l'italiano :D)...

Ciao a tutti!!!!
7de465f222e6a9c7fe658e370d0bfe05?d=identicon&s=25 Paolo Montrasio (pmontrasio)
on 2009-02-07 09:06
Non c'è una procedura standard per adattare a Rails un programma
sviluppato per girare standalone. Come regola ti direi che le classi
vanno in app/models mentre la logica che le richiama va in
app/controllers. Devi però creare i modelli giusti ed i controller
giusti. Inoltre ti servono le views (app/views/nome_controller) per
generare l'output per il browser.

Ti consiglierei di sospendere per un giorno il tuo progetto, leggerti un
tutorial rails e creare una piccolissima applicazione di prova. Poi dopo
averci dormito sopra tornerai al tuo progetto e potrai riorganizzare il
tuo codice nel modo migliore.

Paolo

Stefano De nigris wrote:
> Ciao ragazzi,io ho creto un codice in ruby ma adesso lo vorrei mettere
> in un progetto fatto con rails.Il progetto creato è uno standard,cioè
> inserire un in un campo dei dati che verranno poi memorizzati nel
> database,tuttavia dopo aver digitato quello che desidero cliccando su un
> tasto mi deve partire il mio programma.Mi sapreste dire dove dovrei
> mettere il mio codice per farlo partire???In quale cartella??Spero di
> essere stato chiaro(non sono molto bravo con l'italiano :D)...
>
> Ciao a tutti!!!!
8768bcdbda1adf80e4da6744268868af?d=identicon&s=25 Pietro Giorgianni (giorgian)
on 2009-02-07 09:38
(Received via mailing list)
2009/2/6 Stefano De nigris <stedenigris@hotmail.com>:
> Ciao ragazzi,io ho creto un codice in ruby ma adesso lo vorrei mettere
> in un progetto fatto con rails.Il progetto creato è uno standard,cioè
> inserire un in un campo dei dati che verranno poi memorizzati nel
> database,tuttavia dopo aver digitato quello che desidero cliccando su un
> tasto mi deve partire il mio programma.Mi sapreste dire dove dovrei

il tuo programma è interattivo o batch? fornisce un input per
l'applicazione web oppure riceve un output con cui fa qualcosa, o
tutt'e due?

parlacene un po': forse troveremo il consiglio giusto, o magari ti
verrà l'idea giusta.
0df4a6c75caf1bd9b01d2dcbfb085ee4?d=identicon&s=25 Sandro Paganotti (Guest)
on 2009-02-07 09:47
(Received via mailing list)
On Sat, Feb 7, 2009 at 8:38 AM, Pietro Giorgianni
<giorgian@gmail.com>wrote:

> parlacene un po': forse troveremo il consiglio giusto, o magari ti
> verrà l'idea giusta.


Anche perchè si potrebbe forse pensare anche a lasciare lo script Ruby 'as
is' ed invocarlo
da rails quando necessario ( magari lo si può mettere in lib ) :D
6f15eff3cbdf016983d831363117b9b7?d=identicon&s=25 Stefano De nigris (stewie)
on 2009-02-07 10:50
Paolo: io ho già seguito un filmato fatto da un assistente del mio prof.
che mostra come creare un progetto e un database(che ha 3 campi).Il
programma non fa altro che andare a immagazzinare delle informazioni
,che vengono inserite attraverso il broswer, nel database(ad esempio:
nome-->stefano,poi il cognome e la matricola).Dopo che sono stati
immagazzinati le informazioni,vengono mostrate a video (come:  stefano
de nigris matricola).Spero di essere stato chiaro..se non ti è chiaro
qualcosa domanda pure.

Pietro:scusa la mia ignoranza che vuol dire "interattivo o batch".Il
programma che voglio creare dovrebbe fare questo: avete presente il
campo in cui inserisco la cosa da ricercare in Google??Perfetto se avete
capito qual'è...io voglio che sia composta non da un riga sola,ma da
tante righe quindi deve essere un rettangolo in cui devo inseriro il mio
input.Poi il programma devi eleborare questo mio input e mi deve
successivamente fare un output di questa elaborazione.Ok???Se avete
dubbi...chiedete. :D :D
8768bcdbda1adf80e4da6744268868af?d=identicon&s=25 Pietro Giorgianni (giorgian)
on 2009-02-07 11:12
(Received via mailing list)
2009/2/7 Stefano De nigris <stedenigris@hotmail.com>:
> Paolo: io ho già seguito un filmato fatto da un assistente del mio prof.
> ...

generalmente in casi simili non ci si affida a un programma esterno,
ma piuttosto si inseriscono i dati nel db direttamente
dall'applicazione web (rails, in questo caso).

capisco però che qui il tutto è a stretto scopo didattico, nel qual
caso tutto è lecito.

nell'action del controller che riceve i dati del form, questi dati
sono contenuti dentro l'hash params (ok, non è veramente un hash, ma a
tutti gli effetti si comporta come tale).

dentro l'action puoi recuperare questi dati e invocare il programma
esterno.

qui si viene alla mia domanda. un programma batch accetta i dati di
input da file o simili; lo si lancia e lui gira e poi sputa fuori
l'output da qualche parte. un programma interattivo, invece, chiede
l'input un po' alla volta (ad esempio con un prompt), ed è quindi più
difficile da gestire dall'interno di rails.


come accetta l'input il tuo programma? come sputa fuori l'output?

in base alla risposta cambia il modo di invocare il programma.
6f15eff3cbdf016983d831363117b9b7?d=identicon&s=25 Stefano De nigris (stewie)
on 2009-02-07 11:49
Beh il mio programma è stato creato in un certo modo,cioè il mio
programma va a leggere gli input da un file .txt,quindi quello che
inserisco deve poi essere salvato in un file .txt(questo non credo sia
difficile da fare),invece l'output dovrebbe essere stampato sempre sulla
quella pagina internet(giustamente eliminando il "campo
rettangolare").Il come lo sputa fuori...non ho ancora avuto un idea,ma
pensavo di fargli copiare ciò che viene fuori dalla console del
ruby(sempre se è possibile).
7de465f222e6a9c7fe658e370d0bfe05?d=identicon&s=25 Paolo Montrasio (pmontrasio)
on 2009-02-08 18:28
Stefano De nigris wrote:
> Beh il mio programma è stato creato in un certo modo,cioè il mio
> programma va a leggere gli input da un file .txt,quindi quello che
> inserisco deve poi essere salvato in un file .txt(questo non credo sia
> difficile da fare),invece l'output dovrebbe essere stampato sempre sulla
> quella pagina internet(giustamente eliminando il "campo
> rettangolare").Il come lo sputa fuori...non ho ancora avuto un idea,ma
> pensavo di fargli copiare ciò che viene fuori dalla console del
> ruby(sempre se è possibile).

Supponendo che l'output in console sia fatto a colpi di puts, non puoi
usare questo metodo per generare un output in Rails. Devi invece mettere
l'output in una stringa e passarla dal controller alla view, che
provvederà a metterla nella pagina html.

Il modo più semplice dovrebbe essere mettere nel controller

@out = `ruby il_tuo_programma`

che va a mettere in @out l'output del tuo programma, e nella view

<%= @out %>

Mi permetto infine di osservare che se il programma doveva funzionare da
dentro Rails, sarebbe stato meglio scriverlo come applicazione Rails e
non come script da console.

Paolo
6f15eff3cbdf016983d831363117b9b7?d=identicon&s=25 Stefano De nigris (stewie)
on 2009-02-09 16:07
Ah capito,ma paolo io ho creato gli output in questo modo:

puts "#{nomevariabile}..."              #la maggior parte hanno una
struttura cosi

posso comunque scrivere :
@out="#{nomevariabile}"
o devo fare in un altro modo???

> Mi permetto infine di osservare che se il programma doveva funzionare da
> dentro Rails, sarebbe stato meglio scriverlo come applicazione Rails e
> non come script da console.
>...

Purtroppo il progetto che mi è stato assegnato deve essere fatto in
ruby,quindi devo farlo per forza cosi.
7de465f222e6a9c7fe658e370d0bfe05?d=identicon&s=25 Paolo Montrasio (pmontrasio)
on 2009-02-10 11:22
Stefano De nigris wrote:
> Ah capito,ma paolo io ho creato gli output in questo modo:
>
> puts "#{nomevariabile}..."              #la maggior parte hanno una
> struttura cosi
>
> posso comunque scrivere :
> @out="#{nomevariabile}"
> o devo fare in un altro modo???

Stefano,

ti spiego meglio il significato di `programma`.

Per prima cosa nota gli apici: sono quelli orientati da sinistra a
destra (sulla tastiera italiana non ci sono) e non il solito ', e
neppure ". E' un dettaglio molto importante, infatti seguendo una
convenzione tipica delle shell unix, ereditata poi da linguaggi come
Perl e non solo, anche Ruby ha implementato la "sostituzione
dell'output" (la chiamo così io, il nome ufficiale starà nel manuale di
qualche shell).

Che vuol dire? Quando scrivi qualcosa come

variabile = `programma`

con gli apici "storti", l'interprete esegue il programma, cattura tutto
l'output e lo assegna a variabile. La risposta alla tua domanda quindi è
no, non puoi scrivere @out="#{nomevariabile}" perché così non
eseguiresti il tuo programma.

>
>> Mi permetto infine di osservare che se il programma doveva funzionare da
>> dentro Rails, sarebbe stato meglio scriverlo come applicazione Rails e
>> non come script da console.
>>...
>
> Purtroppo il progetto che mi è stato assegnato deve essere fatto in
> ruby,quindi devo farlo per forza cosi.

Rails però non è un linguaggio, ma un framework di sviluppo web per
Ruby. Sarebbe come dire che non si poteva fare il progetto in Struts
perché doveva essere sviluppato in Java, ma queste sono sottigliezze.
L'importante è che impari Ruby e passi l'esame :-)

Paolo
6f15eff3cbdf016983d831363117b9b7?d=identicon&s=25 Stefano De nigris (stewie)
on 2009-02-10 15:40
Paolo quando faccio:
> variabile = `programma`

Con quale comando si possono inserire gli apici "storti"?Ma al posto di
programma ci deve andare nome_programma.rb???

> con gli apici "storti", l'interprete esegue il programma, cattura tutto
> l'output e lo assegna a variabile. La risposta alla tua domanda quindi è
> no, non puoi scrivere @out="#{nomevariabile}" perché così non
> eseguiresti il tuo programma.

Esseno il mio output composto da piu righe,l'interprete che esegue il
programma me lo darà su una sola riga o manterrà lo stato originario???



p.s.:sono solo un po....di dubbi :P
Ciao ciao
8768bcdbda1adf80e4da6744268868af?d=identicon&s=25 Pietro Giorgianni (giorgian)
on 2009-02-10 15:48
(Received via mailing list)
2009/2/10 Stefano De nigris <stedenigris@hotmail.com>:
> Con quale comando si possono inserire gli apici "storti"?Ma al posto di
> programma ci deve andare nome_programma.rb???

forse, o magari `ruby nome_programma.rb`, in caso nome_programma.rb
non fosse eseguibile (ma sei su linux? su windows? non ricordo).


> Esseno il mio output composto da piu righe,l'interprete che esegue il
> programma me lo darà su una sola riga o manterrà lo stato originario???

la seconda che hai detto.
6f15eff3cbdf016983d831363117b9b7?d=identicon&s=25 Stefano De nigris (stewie)
on 2009-02-10 17:21
> forse, o magari `ruby nome_programma.rb`, in caso nome_programma.rb
> non fosse eseguibile (ma sei su linux? su windows? non ricordo).

Pietro ho windows.Quindi devo scrivere @out='ruby nome_programma.rb'
giusto??(le virgolette devono essere quelle storte)


>> Esseno il mio output composto da piu righe,l'interprete che esegue il
>> programma me lo dar� su una sola riga o manterr� lo stato originario???

Quindi manterrà il mio stato?!Ottimo...perche dalle parole di paolo
avevo capito che me le metteva su una sola righa.


Ciao
7de465f222e6a9c7fe658e370d0bfe05?d=identicon&s=25 Paolo Montrasio (pmontrasio)
on 2009-02-10 17:35
Stefano De nigris wrote:
>> forse, o magari `ruby nome_programma.rb`, in caso nome_programma.rb
>> non fosse eseguibile (ma sei su linux? su windows? non ricordo).
>
> Pietro ho windows.Quindi devo scrivere @out='ruby nome_programma.rb'
> giusto??(le virgolette devono essere quelle storte)
>
>
>>> Esseno il mio output composto da piu righe,l'interprete che esegue il
>>> programma me lo dar� su una sola riga o manterr� lo stato originario???
>
> Quindi manterrà il mio stato?!Ottimo...perche dalle parole di paolo
> avevo capito che me le metteva su una sola righa.
>
>
> Ciao

L'output del programma finirà tutto in @out, inclusi i newline che
separano le righe l'una dall'altra. Se devi separare le righe in
variabili singole potrai fare una

@righe = @out.split("\n\r")

che ti produce l'array @righe con una riga per elemento. Poi nella view
userai gli elementi di @righe. Con un po' di prove sono sicuro che
troverai il modo migliore per farlo. Questa comunque è solo una delle
mille strategie possibili per portare i dati dal programma ruby alla
view.

Mmm, il separatore di linea in Windows è \n\r o viceversa?

Paolo
6f15eff3cbdf016983d831363117b9b7?d=identicon&s=25 Stefano De nigris (stewie)
on 2009-02-12 23:29
Capito...proverò e vedrò cosa ne esce.
>
> Mmm, il separatore di linea in Windows è \n\r o viceversa?
>
Sinceramente non lo so,però facendo le prove forse capiro.Ti ringrazio
tanto lo stesso.


Ciao ciao
This topic is locked and can not be replied to.