Eruby e apache2 che complicazione

Salve.
Uso linux debian con apache2.
Ho sempre usato php, per farlo funzionare basta installare i pacchetti
debian e installare in modulo per apache2.
Funziona tutto al prmio colpo senza nessnu problema.
La stessa cosa non si puo’ dire per eruby.
Ho installato il modulo per apache2, aggiunto a http.conf le righe

AddType application/x-http-eruby .rhtml

If the ruby module is installed, this will be enabled.

# for Apache::RubyRun RubyRequire apache/ruby-run

exec files under /ruby as ruby scripts.

<Location /ruby>
SetHandler ruby-object
RubyHandler Apache::RubyRun.instance
Options +ExecCGI

exec *.rbx as ruby scripts.

<Files *.rbx>
SetHandler ruby-object
RubyHandler Apache::RubyRun.instance

RubyRequire apache/eruby-run
<Files *.rhtml>
SetHandler ruby-object
RubyHandler Apache::ERubyRun.instance

come indicato dalla documentazione.
Ho poi scritto un piccolo programma copiato da degli esempi presi da un
libro:

file prova.rb
class PaginaMail
attr_readers :pagina
def initialize(nome_pagina, cgi)
@pagina = nome_pagina
@cgi = cgi
end
def header
@cgi.h2 {“Gestione LDAP per mail”}
end
def footer
" Powered by Ruby "

end
end

file mail.rhtml

<% require ‘prova’
require ‘cgi’
current = PaginaMail.new(“home”, CGI.new(“html4”))
%>

<%= current.header %>
<%= current.footer %>

Non funziona, il server apache2 mi da una serie di errori il primo dei
quali e’:

[Thu Mar 08 11:32:41 2007] [error] mod_ruby: error in ruby
[Thu Mar 08 11:32:41 2007] [error]
mod_ruby: /var/www/prove/mail.rhtml:4:in `require’: ./prova.rb:19:
syntax error, unexpected ‘<’ (SyntaxError)

Ma dove sta l’errore?

On 3/8/07, Mauro S. [email protected] wrote:

Salve.
Uso linux debian con apache2.
Ho sempre usato php, per farlo funzionare basta installare i pacchetti
debian e installare in modulo per apache2.
Funziona tutto al prmio colpo senza nessnu problema.
La stessa cosa non si puo’ dire per eruby.

Infatti! E’ sconsigliato l’uso di mod_ruby. Se vuoi una cosa come php,
usa
php!

In Ruby ti conviene usare il puro e semplice CGI, a meno che tu non
voglia
passare direttamente a un framework come Rails.

M

Ho installato il modulo per apache2, aggiunto a http.conf le righe

Matteo V. wrote:

Infatti! E’ sconsigliato l’uso di mod_ruby. Se vuoi una cosa come php,
usa
php!

Nel libro di parla di eruby come di php migliorato, perche’ sarebbe
sconsigliato?

Infatti! E’ sconsigliato l’uso di mod_ruby. Se vuoi una cosa come php,
usa
php!

Nel libro di parla di eruby come di php migliorato, perche’ sarebbe
sconsigliato?

beh nessuno sa rispondere?

On ven, 2007-03-09 at 10:48 +0100, Mauro S. wrote:

Infatti! E’ sconsigliato l’uso di mod_ruby. Se vuoi una cosa come php,
usa
php!

Nel libro di parla di eruby come di php migliorato, perche’ sarebbe
sconsigliato?

beh nessuno sa rispondere?

non e’ sconsigliato eruby, e’ sconsigliato l’uso di mod_ruby per il
deploy.

Il giorno ven, 09/03/2007 alle 10.51 +0100, Roberto De Ioris ha scritto:

non e’ sconsigliato eruby, e’ sconsigliato l’uso di mod_ruby per il
deploy.

scusa ma mod_ruby e eruby non sono collegati?
cioe’ se devo usare eruby, quindi ruby dentro pagine html, ho necessita’
di mod_ruby altrimenti apache non sarebbe in gradi di interpretare i
files .rhtml.
Inoltre nel libro “ruby per applicazioni web” l’uso di mod_ruby e’
consigliato per ovviare al problema delle prestazioni degli script cgi.
Potete spiegarmi per favore?
Grazie.

Ci sono due argomenti: Rails, e usare Ruby come una specie di PHP.
Penso che siano pochi a seguire la seconda strada, per il motivo che
Rails ti da cosi tanto.

Se di fatti vuoi usare Rails, mod_ruby non va bene perche` carica una
copia di ogni applicazione diversa nello stesso interprete, o qualcosa
del genere. Io uso mod_fcgid e sembra funzionare bene.


David N. Welton

Linux, Open Source Consulting

Il giorno ven, 09/03/2007 alle 11.13 +0100, David W. ha scritto:

Ci sono due argomenti: Rails, e usare Ruby come una specie di PHP.
Penso che siano pochi a seguire la seconda strada, per il motivo che
Rails ti dacosi tanto.

Se di fatti vuoi usare Rails, mod_ruby non va bene perche` carica una
copia di ogni applicazione diversa nello stesso interprete, o qualcosa
del genere. Io uso mod_fcgid e sembra funzionare bene.

Devo solamente farmi un programmino per l’inserimento, cancellazione e
lista di elementi in un database LDAP.
Pensavo di usare eruby, appunto ruby a mo di php, in quanto andare su
rails per cosi’ poco mi sembra esagerato.
O no?

E’ come dire che php e mod_php sono collegati, sono due cose diverse.

Beh se vuoi usare php dentro pagine html hai necessita’ di mod_php, e lo
stesso dicasi per eruby no?

Ora pero’ il discorso non e’ sul cgi vs embedded, tu vuoi utilizzare
eruby, e sia per me che per gli altri che ti hanno risposto il miglior
modo e’ come cgi.

Vorrei utilizzare ruby dentro pagine html quindi eruby no?
O non ho capito la differenza tra ruby e eruby?

On ven, 2007-03-09 at 11:02 +0100, Mauro S. wrote:

Grazie.

E’ come dire che php e mod_php sono collegati, sono due cose diverse.

Per quanto riguarda la storia della ‘lentezza’ degli script cgi, a mio
modesto parere e’ un problema che viene totalmente ‘eclissato’ da quello
della sicurezza.
Includere un interprete nel webserver (sempre IMHO) per lo sviluppo di
applicazioni web e’ un qualcosa di abominevole, pero’ capisco anche che
tecnicamente sia ‘affascinante’.

Ora pero’ il discorso non e’ sul cgi vs embedded, tu vuoi utilizzare
eruby, e sia per me che per gli altri che ti hanno risposto il miglior
modo e’ come cgi.
Purtroppo non so aiutarti per il deploy con mod_ruby.

Comunque se puo’ aiutarti a decidere il sito di unbit e’ fatto tutto in
eruby eseguito come cgi.

Il giorno ven, 09/03/2007 alle 11.40 +0100, Roberto De Ioris ha scritto:

Io ti sto consigliando di usare il protocollo cgi per eseguire eruby,
cosi’ come ti consiglierei fastcgi per php, sono gusti :slight_smile:

Ok e vada per cgi, al limite fastcgi :slight_smile:
Ma perche’ fai differenza tra ruby e eruby?
Io pensavo che eruby fosse solo ruby embeddato in html ma a questo punto
se utilizzo cgi separo html da codice ruby.

On ven, 2007-03-09 at 11:46 +0100, Mauro S. wrote:

uno dei modi per eseguire codice eruby.
Io ti sto consigliando di usare il protocollo cgi per eseguire eruby,
cosi’ come ti consiglierei fastcgi per php, sono gusti :slight_smile:

Ok e vada per cgi, al limite fastcgi :slight_smile:
Ma perche’ fai differenza tra ruby e eruby?
Io pensavo che eruby fosse solo ruby embeddato in html ma a questo punto
se utilizzo cgi separo html da codice ruby.

se hai fatto “apt-get install eruby”, allora hai anche il comando
‘eruby’, e’ per quello che faccio differenza, avresti un cgi del genere:

#!/usr/bin/eruby

ciao <%=Time.now%>

se hai fatto “apt-get install eruby”, allora hai anche il comando
‘eruby’, e’ per quello che faccio differenza, avresti un cgi del genere:

#!/usr/bin/eruby

ciao <%=Time.now%>

Infatti ho installato eruby pensado di usare ruby dentro pagine html, ma
se mi dici che e’ meglio usare cgi allora con html faccio le pagine
statiche html e con ruby, non eruby, mi faccio la business logic,
richiamando poi i cgi ruby dalle form, cosi’ come si faceva col vecchio
perl :slight_smile:
No?

On ven, 2007-03-09 at 11:56 +0100, Mauro S. wrote:

statiche html e con ruby, non eruby, mi faccio la business logic,
richiamando poi i cgi ruby dalle form, cosi’ come si faceva col vecchio
perl :slight_smile:

pensavo volessi poter inserire il codice ruby direttamente nell’html
“come con php”…eruby serve a questo
Ma a questo punto se reputi rails troppo “grasso” per i tuoi scopi,
perche’ non prendi in considerazione un framework piu’ piccolo, tipo
camping ?

On ven, 2007-03-09 at 11:31 +0100, Mauro S. wrote:

E’ come dire che php e mod_php sono collegati, sono due cose diverse.

Beh se vuoi usare php dentro pagine html hai necessita’ di mod_php, e lo
stesso dicasi per eruby no?

mod_php e’ uno dei modi per eseguire codice php, cosi’ come mod_ruby e’
uno dei modi per eseguire codice eruby.
Io ti sto consigliando di usare il protocollo cgi per eseguire eruby,
cosi’ come ti consiglierei fastcgi per php, sono gusti :slight_smile:

Ora pero’ il discorso non e’ sul cgi vs embedded, tu vuoi utilizzare
eruby, e sia per me che per gli altri che ti hanno risposto il miglior
modo e’ come cgi.

Vorrei utilizzare ruby dentro pagine html quindi eruby no?

Va benissimo eruby, ma secondo me ti stai complicando la vita tentando
il deploy con mod_ruby.
E’ come iniziare a smanettare con rails partendo dal deploy di apache2
+fastcgi, perderai troppe energie nella fase iniziale di studio… e’
per questo che si inizia con webrick :slight_smile:

On ven, 2007-03-09 at 12:51 +0100, David W. wrote:

mezzo. E inoltre, velocizza le cose perche` non hai IPC da
considerare.

Nulla da eccepire (anzi ‘abominevole’ era un termine un po’ pesante), ma
sono sempre portato all’idea che la sicurezza ha precedenza sulle
performance, e non voglio che il mio webserver (che deve fare solo il
webserver) si ammali per colpa della mia applicazione, o dell’interprete
non certo esente da bug.
Chiudiamola qui perche’ scadiamo sicuramente nella sfera dei gusti…che
non si discutono :slight_smile:

Includere un interprete nel webserver (sempre IMHO) per lo sviluppo di
applicazioni web e’ un qualcosa di abominevole, pero’ capisco anche che
tecnicamente sia ‘affascinante’.

Come l’autore di un’abominazione del genere non sono del tutto
d’accordo:-)

Qualcosa come PHP (o nel mio caso, Rivet), funziona molto bene quando
l’applicazione stessa non e troppo pesante (Rails e molto pesante
in termini di memoria). E anche molto carino perche ti semplifica
la vita non poco. Hai solo server e DB, e non “application server” in
mezzo. E inoltre, velocizza le cose perche` non hai IPC da
considerare.


David N. Welton

Linux, Open Source Consulting

On 3/9/07, Roberto De Ioris [email protected] wrote:

la vita non poco. Hai solo server e DB, e non “application server” in
non si discutono :slight_smile:
Non direi… è una discussione tecnica! E sicuramente in linea di
principio il tuo ragionamento fila. Soprattutto dal punto di vista di
un sistemista. Ma dal punto di vista di uno sviluppatore, capita che
mod_php sia una scelta molto robusta. Perché per quanto la mia app
possa sprecare risorse, queste risorse vengono automaticamente
recuperate dopo ogni richiesta HTTP. Finché Apache sta su, sta su
anche la mia applicazione. Quindi in pratica sta su sempre! Non devo
preoccuparmi di leak di memoria o altre risorse. Se anche ci fosse un
baco nell’implementazione di mod_php, che gli fa perdere risorse,
comunque Apache butta via i suoi processi dopo un po’ di tempo, quindi
è difficile che si verifichino problemi nel lungo periodo.

Vorrei che Rails fosse altrettanto robusto! Invece con Rails bisogna
stare un po’ più attenti.

MV

Il giorno mer, 14/03/2007 alle 14.22 +0100, Matteo V. ha scritto:

in termini di memoria). Eanche molto carino perche ti semplifica
Chiudiamola qui perche’ scadiamo sicuramente nella sfera dei gusti…che
baco nell’implementazione di mod_php, che gli fa perdere risorse,
comunque Apache butta via i suoi processi dopo un po’ di tempo, quindi
è difficile che si verifichino problemi nel lungo periodo.

Ma infatti il problema e’ mod_ruby (e anche mod_python) e cosi’ molti
altri.
Mod_php (e mod_perl) hanno una base talmente ampia di utilizzo che la
preoccupazione e’ minima (ti dico solo che il modulo per apache di unbit
che prende i dati degli account da db lo abbiamo fatto in mod_perl,
nonostante le mie fissazioni).
Pero’ come dici l’approccio sistemistico e’ diverso, e mi viene l’ansia
quando so che molti provider utilizzano mod_php in ambienti
condivisi…tutti gli script di utenti diversi che girano con lo stesso
permesso…brrrr

Vorrei che Rails fosse altrettanto robusto! Invece con Rails bisogna
stare un po’ più attenti.

Non e’ tanto Rails a essere ‘debole’ ma i vari sistemi usati per il
deploy, fastcgi e’ relativamente ‘stabile’ ma richiede un po’ di
competenze in piu’ anche per il programmatore, mongrel ancora zoppica in
alcuni contesti (ma migliora) e mod_ruby come gia’ detto e’
inaffidabile.

La scelta migliore ? Boh…tra due mali scelgo il minore :slight_smile:

On 3/9/07, Mauro S. [email protected] wrote:

E’ come dire che php e mod_php sono collegati, sono due cose diverse.

Beh se vuoi usare php dentro pagine html hai necessita’ di mod_php, e lo
stesso dicasi per eruby no?

No! Mod_php è un’ottima maniera di usare php, ma non è l’unica. Ad
esempio potresti usare php con IIS (diciamo per amore di discussione
:-/) nel qual caso non usi mod_php che è un modulo di Apache.

ERuby è una maniera di usare ruby per fare template, html o meno,
molto alla maniera di PHP. Il che va benissimo di per sè, tanto è
vero che Rails usa internamente eruby. Allora qual’è il problema? Il
problema è che mod_ruby non ha lo stesso livello di qualità di
mod_php. Perché al contrario di mod_php, che è usato da milioni di
siti, mod_ruby non lo usa quasi nessuno.

Quindi, alla fine, il mio consiglio è di usare Rails se vuoi
divertirti con un framework molto bello che può anche essere troppo
per quello che devi fare tu. Oppure di usare CGI, che è semplice e
robusto.

Vorrei utilizzare ruby dentro pagine html quindi eruby no?
O non ho capito la differenza tra ruby e eruby?

ERuby == template html + ruby. Puoi usarlo dentro Rails, dentro CGI,
dalla riga di comando, oppure anche dentro Apache con mod_ruby.

Matteo