Ruby e rails


#1

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!!!


#2

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!!!


#3

2009/2/6 Stefano De nigris removed_email_address@domain.invalid:

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.


#4

On Sat, Feb 7, 2009 at 8:38 AM, Pietro G.
removed_email_address@domain.invalidwrote:

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 ) :smiley:


#5

2009/2/7 Stefano De nigris removed_email_address@domain.invalid:

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.


#6

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. :smiley: :smiley:


#7

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


#8

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


#9

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.


#10

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

Paolo


#11

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 :stuck_out_tongue:
Ciao ciao


#12

2009/2/10 Stefano De nigris removed_email_address@domain.invalid:

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.


#13

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


#14

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


#15

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