2011-02-08 18 views
16

Quando eseguo localmente la mia app in test/dev le mie visualizzazioni si presentano ottimamente e tutto è felice. Quando provo a navigare verso quegli stessi file erb in esecuzione sul mio server remoto/server di produzione locale ricevo errori come il seguente:Errore di routing dei file statici di produzione delle rotaie

ActionController::RoutingError (No route matches "/stylesheets/scaffold.css") 

ho visto domande simili qui su SO, ma nessuno è stato in grado di risolvere il mio problema. La cosa più vicina che ho trovato per una risposta è la prima risposta qui: Rails 404 error for Stylesheet or JavaScript files

A quanto ho capito la cosa migliore da fare sarebbe quella di configurare il mio server web per servire file statici. Come posso farlo localmente/su Heroku?

Aggiornamento

Come da suggerimento di raidfive ho cambiato config.serve_static_assets da false a true e questo riparato il mio problema. Tuttavia, vedo che in production.rb è probabile che Apache o nginx stiano già servendo asset statici. E 'meno buono/professionale servire le risorse statiche in questo modo e se sì, come potrei ottenere i risultati desiderati se sto usando Heroku?

Update 2

Apparentemente Heroku does this automatically, ho avuto una virgola in più che stava causando il male. Sono stato in grado di esaminare i registri Heroku estesi utilizzando lo following tip per rintracciare il problema. Grazie COSÌ!

+0

Dov'era la virgola? –

risposta

33

Stai utilizzando Rails 3? Di default Rails 3/webrick non offre file statici in modalità di produzione. È possibile abilitare facilmente impostando

config.serve_static_assets a true nel file production.rb.

+0

Ah ah, pensavo potesse essere qualcosa del genere. Ho notato nel commento sopra l'impostazione, tuttavia, che dice che apache o nginx dovrebbero già farlo. C'è qualcosa che dovrei impostare nel mio server? – keybored

+0

Ignoralo, apparentemente è qualcosa che Heroku fa automaticamente. Il mio problema era il posizionamento errato di una virgola che per qualche ragione il mio server locale stava ignorando. Grazie per l'aiuto! – keybored

+0

Ah, nessun problema. Sì, penso che Heroku abbia una pagina di documentazione su come gestiscono le risorse statiche se vuoi leggerlo. – raidfive

0

In Rails5, si dovrebbero commentare

"config.public_file_server.enabled = ENV['RAILS_SERVE_STATIC_FILES'].present?" 

in config/enviroment/production.rb

Problemi correlati