Modifica dell’URL di base per lo sviluppo di Rails 3

So che ho intenzione di implementare in un ambiente con la mia applicazione in esecuzione con un URL di base che assomiglia a questo:

http://someserver/mydepartment/myapp 

Il mio ambiente di sviluppo è impostato per utilizzare la configurazione predefinita di Rails, che assomiglia a questo:

 http://localhost:3000/myapp 

Mi piacerebbe modellare questo percorso di distribuzione nel mio ambiente di sviluppo. Cioè, mi piacerebbe sviluppare con un URL di base che assomigli a questo:

 http://localhost:3000/mydepartment/myapp 

In questo modo, posso rendere tutti i miei URL relativi a “/” e funzioneranno in entrambi gli ambienti.

Come posso cambiarlo così la mia applicazione vivrà in questo percorso nel mio ambiente di sviluppo?

Soluzioni che ho trovato, ma non funzionano per me:

  • L’impostazione scope in routes.rb non sembra funzionare per il contenuto statico in public .
  • Utilizzando le capacità di riscrittura di Apache. Non voglio installare Apache nella mia casella di sviluppo. Idealmente la soluzione funzionerebbe con WEbrick, anche se sembra che anche Mongrel funzioni per lo più (ci sono alcuni problemi con Mongrel e Ruby 1.9.2).
  • Impostazione relative_url_root e suggerimenti simili che non funzionano con Rails 3.
  • Generazione dynamic di CSS / JavaScript e regolazione dei percorsi per compensare gli ambienti di sviluppo e di produzione.

Puoi provare a mappare la configurazione del rack dell’app rails su un diverso base_uri. Tutto ciò che devi fare è racchiudere il comando ‘Esegui’ esistente in un blocco di mappe

prova a farlo nel file config.ru della tua rotaia:

 map '/mydepartment' do run Myapp::Application end 

Ora quando si esegue il rails del server, l’app deve trovarsi su localhost: 3000 / mydepartment . Non sono sicuro se questo ti darà il risultato desiderato, ma vale la pena provare.

Ecco come è ansible 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 tuo file di configurazione di Apache:

 Alias /my_subdir /var/www/my_subdir/public  SetEnv RAILS_RELATIVE_URL_ROOT "/my_subdir" PassengerAppRoot /var/www/my_subdir  

E dovrebbe funzionare, incluso il puntamento automatico di tutte le risorse su /my_subdir .

Aggiungi la riga sottostante alla fine di config / environment.rb

 ActionController::Base.relative_url_root = "/mydepartment"