2011-09-03 17 views
9

Come configurare un'applicazione Rails 3.1 per l'esecuzione in una directory specifica come "/ r"?Come distribuire l'applicazione Rails 3.1 in una sottodirectory

ho provato in config.ru:

map '/r' do 
    run Debtor::Application 
end 

ma che appena tornato "Not Found:/r"

Per farlo funzionare ho dovuto racchiudere tutte le rotte in un campo di applicazione:

scope '/r' do 
    #routes 
end 

e aggiungere la seguente riga in config/applcation.rb

config.assets.prefix = "/r/assets" 

e per spostare i miei file ui css jquery da/stylesheets a/r/stylesheets.

questo sembra troppo complicato. non c'è un modo più semplice? e perché il mio ambiente config.ru non funziona?

il mio caso d'uso è di avere un backend ajax con rotaia per un server wordpress.

risposta

6

stai correndo sotto i passeggeri?

Quindi RailsBaseURI è probabilmente quello che desideri.

https://www.phusionpassenger.com/library/deploy/apache/deploy/ruby/#deploying-an-app-to-a-sub-uri

Se non è in esecuzione sotto passeggero, si prega di aggiornare la tua domanda per mostrare ciò che si sta distribuito sotto.

+0

grazie per la risposta. si, sto usando il passeggero. Sto cercando una soluzione più semplice. – Peder

+0

Più semplice di 1 riga nel file di configurazione di Apache? Non sono sicuro che tu possa ottenere molto di più. Mi dispiace, ho confuso. – Doon

+0

Come posso fare questo con solo una configurazione a 1 linea? Mi sembra di aver bisogno di creare un link simbolico dal sottotracciato nella root del documento alla directory pubblica del progetto rails. – Peder

3

Ecco come distribuire un'applicazione Rails 3.1 in una sottodirectory in Apache, sostituendo config.action_controller.relative_url_root che non esiste più.

In config/routes.rb:

scope 'my_subdir' do 
    # all resources and routes go here 
end 

Nel file di configurazione di Apache:

Alias /my_subdir /var/www/my_subdir/public 
<Location /my_subdir> 
    SetEnv RAILS_RELATIVE_URL_ROOT "/my_subdir" 
    PassengerAppRoot /var/www/my_subdir 
</Location> 

e dovrebbe funzionare, compreso indicando automaticamente tutti i vostri beni a /my_subdir.

+0

funzionerà davvero per risorse e file nella directory pubblica? – Peder

+0

Funzionerà quando le risorse si trovano nella cartella 'app/assets'. Ma dovrebbe funzionare anche per risorse e file nella directory pubblica a causa della parola chiave "Alias" che punta la cartella direttamente nella cartella pubblica. Perfavore fammi sapere se funziona. –

4

Ciò che ha funzionato per me è stato creare il collegamento simbolico per il sub-uri (/ info) alla cartella "pubblica" dell'applicazione (configurazione con un altro utente sul mio server,/home/altro utente/corrente/pubblico).

ln -s /home/myapp/current/public /home/mysite/public_html/info 

Poi ho inserito questa configurazione all'interno della voce VirtualHost per il sito:

Alias /info /home/myapp/current/public 
<Location /info> 
    PassengerAppRoot /home/myapp/current 
    RackEnv production 
    RackBaseURI /info 
</Location> 

Nessun percorsi di ambito, nessuna configurazione prefix patrimoniale.

+0

La migliore risposta ancora! Risolverei ancora questa risposta se potessi :) – Ali

+0

Giusto .. Questa è la soluzione più pulita. Grazie :) – n3rve