[rails] cambiare default public paths?

Salve! Esiste per caso un sistema per cambiare i path relativi alla
parte public? Es. io vorrei piazzare i miei file in cartelle come img,
js o css, così come faccio di solito, ma tali cartelle in rails si
chiamano javascripts, images, ecc. , e tra l’altro alcuni helper (vedi
quelli realitivi a javascript) sono legati a quei nomi.

Non trovo alcun riferimento in merito nei vari file di configurazione, e
neanche nel libro di Thomas. Qualcuno ne sa qualcosa? :slight_smile:

Luca R. wrote:

Salve! Esiste per caso un sistema per cambiare i path relativi alla
parte public? Es. io vorrei piazzare i miei file in cartelle come img,
js o css, così come faccio di solito, ma tali cartelle in rails si
chiamano javascripts, images, ecc. , e tra l’altro alcuni helper (vedi
quelli realitivi a javascript) sono legati a quei nomi.

Non trovo alcun riferimento in merito nei vari file di configurazione, e
neanche nel libro di Thomas. Qualcuno ne sa qualcosa? :slight_smile:

Visto che e’ opensource, si puo’ guardare come e’ implementato

file actionpack/lib/actionview/helper/asset_tag_helper.rb

def image_path(source)
#…
compute_public_path(source, ‘images’, ‘png’)
end

def stylesheet_path(source)
compute_public_path(source, ‘stylesheets’, ‘css’)
end

quindi, la sottocartella e’ cablata nel codice.
Se vuoi modificarla, devi ridefinirti i metodi

Ciao
Massimo

Grazie, capito! Strano che non si possa configurare in un modo +
semplice no? Seconto te è possibile che la cosa venga implementata +
avanti?

Luca R. wrote:

Salve! Esiste per caso un sistema per cambiare i path relativi alla
parte public? Es. io vorrei piazzare i miei file in cartelle come img,
js o css, così come faccio di solito, ma tali cartelle in rails si
chiamano javascripts, images, ecc. , e tra l’altro alcuni helper (vedi
quelli realitivi a javascript) sono legati a quei nomi.

Non trovo alcun riferimento in merito nei vari file di configurazione, e
neanche nel libro di Thomas. Qualcuno ne sa qualcosa? :slight_smile:

Visto che e’ opensource, si puo’ guardare come e’ implementato

file actionpack/lib/actionview/helper/asset_tag_helper.rb

def image_path(source)
#…
compute_public_path(source, ‘images’, ‘png’)
end

def stylesheet_path(source)
compute_public_path(source, ‘stylesheets’, ‘css’)
end

quindi, la sottocartella e’ cablata nel codice.
Se vuoi modificarla, devi ridefinirti i metodi

Ciao
Massimo

Luca R. wrote:

Grazie, capito! Strano che non si possa configurare in un modo +
semplice no? Seconto te è possibile che la cosa venga implementata +
avanti?

Non lo so; un parametro opzionale potevano anche metterlo; si vede che
non volevano offendere il “convention over configuration”…
Comunque, ti basta ridefinire quei due/tre metodi (qualche riga di
codice) e sei a posto (oppure… rinominare le cartelle in images,
stylesheets, javascripts :slight_smile: )

I path relativi a public sono definiti in:

actionpack/lib/actionview/helpers/asset_tag_helper.rb:42

module ActionView
module Helpers
module AssetTagHelper
# …

  ASSETS_DIR      = defined?(RAILS_ROOT) ? "#{RAILS_ROOT}/public" :

“public”
JAVASCRIPTS_DIR = “#{ASSETS_DIR}/javascripts”
STYLESHEETS_DIR = “#{ASSETS_DIR}/stylesheets”

  # ...
end

end
end

Ti consiglio di creare un plugin per modificarne i valori.

Ad ogni modo, concordo con David: che senso ha cambiare i path? uno dei
cardini del successo di Rails è il non doversi preoccupare di questi
aspetti marginali, ma concentrarsi sull’applicazione vera e propria.

LG

On Sun, 22 Jul 2007 16:23:23 +0200, Luca R. wrote:

Salve! Esiste per caso un sistema per cambiare i path relativi alla
parte public? Es. io vorrei piazzare i miei file in cartelle come img,
js o css, così come faccio di solito, ma tali cartelle in rails si
chiamano javascripts, images, ecc. , e tra l’altro alcuni helper (vedi
quelli realitivi a javascript) sono legati a quei nomi.

Non trovo alcun riferimento in merito nei vari file di configurazione, e
neanche nel libro di Thomas. Qualcuno ne sa qualcosa? :slight_smile:

Oh, il modo ci sarà, forse anche senza monkey patching, ma il punto è: Rails
è opinionated software e dunque ritiene che quelle cartelle si debbano
chiamare così punto e basta. L’idea è che dobbiamo smetterla a ‘litigare’ su
cose meno importanti, come nomi e strutture delle cartelle e
concentrarci sulle cose che contano. A volte mi trovo in disaccordo con
i Rails-isti, ma mi adeguo e spesso scopro che avevano ragione (o che
comunque non cambia un granché).

In breve dunque: ci sarà il modo, ma non è configurabile in senso classico.

Luca R. wrote:

Grazie, capito! Strano che non si possa configurare in un modo +
semplice no? Seconto te è possibile che la cosa venga implementata +
avanti?

A quanto pare, qualcosa hanno implementato. Io ti avevo riportato il
codice dell’ultimna versione rilasciata (1.2.3), ed era cablato; ma nel
repository, come riportato sopra da Luca, sono state introdotte le
costanti.

Ok ragazzi, grazie. Io sono nuovo di rails e della programmazione
dinamica in genere, sto facendo i primi progettini ora. Vi ringrazio
molto per ogni delucidazione!

On Mon, 23 Jul 2007 16:32:23 +0200, Luca R. wrote:

Grazie, capito! Strano che non si possa configurare in un modo +
semplice no? Seconto te è possibile che la cosa venga implementata +
avanti?

Penso sia assai improbabile che venga implementato, appunto per i motivi
di cui sopra. La loro opinione è che debbano chiamarsi così e o gli fai
cambiare opinione (auguri…! :slight_smile: o ti adegui…