2011-01-05 3 views
5

Ho un'applicazione per rotaia che vorrei utilizzare per più siti, ognuno con design differenti.Più cartelle pubbliche, installazione su singola rotaia

Vorrei cambiare l'installazione di rotaie/directory pubblica a qualcos'altro (eventualmente alla fine). Tuttavia, ho incontrato un problema (bug?) Che cambia directory ...

Nel mio file application.rb cambio il percorso paths.public in qualcosa di diverso da "pubblico" (diciamo "sito_uno"). Ecco il codice:

puts paths.public.paths 
paths.public = "site_one" 
puts paths.public.paths 

I due comandi "puts" sono per il debug. Ora esegui "rails s" e vedrai:

/home/macklin/app/public 
/home/macklin/app/site_one 

Ciò verifica che il percorso sia stato modificato correttamente. Tuttavia, poco dopo, rotaie getta il seguente errore (fatemi sapere se avete bisogno di traccia completa):

Exiting 
/usr/lib/ruby/gems/1.8/gems/railties-3.0.3/lib/rails/paths.rb:16:in `method_missing': undefined method `javascripts' for #<Rails::Paths::Path:0x7f422bd76f58> (NoMethodError) from /usr/lib/ruby/gems/1.8/gems/actionpack-3.0.3/lib/action_controller/railtie.rb:47 

La mia ipotesi è che non riesce a trovare la directory javascripts anche se è chiaramente seduto nella cartella "site_one" .

Qualcuno sa perché sto ricevendo questo?

risposta

2

Duh. Basta aggiungere altri 2 regole per i fogli di stile e JavaScript (Credo che ottenere spazzati quando si modifica il percorso genitore)

paths.public.stylesheets = "site_one/stylesheets" 
paths.public.javascripts = "site_one/javascripts" 
2

So che questa domanda è piuttosto vecchio, ma penso di aver trovato una risposta per questo in Rails 4.2.

Basta semplicemente mettere questa riga nel vostro config/application.rb:

middleware.use ::ActionDispatch::Static, "#{Rails.root}/another_public_folder_name", index: 'index', headers: config.static_cache_control 

Questo rende tutti i file in /another_public_folder_name di essere serviti da Rails.

Questo è il modo in cui i Rails utilizzano per impostare la cartella standard /public. Ho trovato il controllo delle fonti:

https://github.com/rails/rails/blob/52ce6ece8c8f74064bb64e0a0b1ddd83092718e1/railties/lib/rails/application/default_middleware_stack.rb#L24