2012-01-24 10 views
7

Nella mia app Rails, sto accedendo all'enhish di env in una delle azioni del mio controller.Perché l'hash dell'env rack è vuoto nell'ambiente di test Rails?

Qualcosa sulla falsariga di:

def my_before_filter 
    env['some.key'] = "Something or other" 
end 

Questa grande opera per le mie esigenze.

Se inizio la mia applicazione Rails in ambiente di test, e visitare un'azione simile:

# /users in UsersController#index 
def index 
    puts env.inspect 
end 

Poi il contenuto del hash ENV è uscita alla console come previsto.

Quando si ottiene questa azione da un esempio RSPec, l'output è un hash vuoto?

it 'should get the index action' do 
    get :index 
end 

.....{}.... # rspec output 

Perché l'hash di env è vuoto?

Ho costruito un'applicazione dummy rails mostrare questa

+0

Penso che dovresti eseguirlo nell'ambiente di 'sviluppo'. – Reactormonk

+0

Lo faccio normalmente in ambiente di sviluppo. L'env hash era presente nello sviluppo. Volevo dire che il comportamento che vedo quando avvio manualmente il server in modalità "test" non è lo stesso comportamento che vedo quando si crea una richiesta tramite la suite di test. – bodacious

risposta

10

uso

request.env 

invece di env all'interno del codice del controller.

es/

def index 
    puts request.env.inspect 
end 

Speranza che aiuta?

BTW su un'altra nota: quando si lavora con il repository github è necessario eliminare public/index.html affinché la root route funzioni, quando si esegue il server.

+0

Ciao - grazie per il feedback ... questo ancora non risponde perché l'hash env non è disponibile nel controller direttamente però? PS - aggiornato il repository – bodacious

+3

È perché rspec-rails ignora il metodo ActionController :: Metal – gef

+0

Ah - grazie gef – bodacious

Problemi correlati