2015-03-26 18 views
7

Questo comportamento mi sta davvero confondendo. Sembra che il contenuto del mio ENV o della mia configurazione sia memorizzato in cache da qualche parte. Ecco come riprodurlo:Variabili di ambiente memorizzate nella cache nella configurazione di Rails?

In un app fresco (sto usando di Ruby 2.0.0 e Rails 4.2.1), modificare application.rb:

$ cat config/application.rb 
require File.expand_path('../boot', __FILE__) 

require 'rails/all' 

Bundler.require(*Rails.groups) 

module Myapp 
    class Application < Rails::Application 
    config.active_record.raise_in_transactional_callbacks = true 

    config.env_foo = ENV['FOO'] 
    end 
end 

L'elemento di configurazione env_foo è ora nil:

$ unset FOO # make sure FOO is unset 
$ rails console 
Loading development environment (Rails 4.2.1) 
2.0.0-p598 :001 > Rails.application.config.env_foo 
=> nil 

impostare alcune variabili d'ambiente e vedere cosa succede:

$ export FOO=barbapapa 
$ rails console 
Loading development environment (Rails 4.2.1) 
2.0.0-p598 :001 > Rails.application.config.env_foo 
=> nil 
2.0.0-p598 :002 > ENV['FOO'] 
=> "barbapapa" 

Quindi l'elemento della cache è ancora nil ma è stato modificato ENV. Anche se cambio ambiente di produzione:

$ RAILS_ENV=production rails console 
Loading production environment (Rails 4.2.1) 
2.0.0-p598 :001 > Rails.application.config.env_foo 
=> nil 

Dove si trova questa cache di configurazione e come faccio a farlo riflettere la nuova ENV?

Nota: so che ci sono altri modi per configurare Rails, ma sto usando Heroku quindi penso che l'utilizzo dell'ambiente per la configurazione sia incoraggiato.

risposta

14

Il Spring gemma è precaricamento applicazioni di default nell'ambiente di sviluppo in Rails 4.

per ricaricare l'applicazione, è sufficiente uccidere i processi a molla per il progetto in corso:

spring stop 

primavera non lo fa sembra essere in grado di aggiornare i cambiamenti dell'ambiente, ma monitora i file. Se si utilizza un file .env, con dotenv per esempio, è possibile aggiungerlo a config/spring.rb:

Spring.watch '.env' 
+0

rispondere alla tua domanda, allo stesso minuto come la domanda? : D – lutfianasari

+0

@lutfianasari Sì :) So che sembra divertente ma in realtà è incoraggiato. https://stackoverflow.com/help/self-answer –

+0

ah, vedo .. Ho visto anche gli altri rispondere alla propria domanda, ma tu hai detto "tu" nella risposta di cui sopra e questo mi ha fatto interrogare: D scusa per il mio inutile commento e grazie per il link informativo :) – lutfianasari

Problemi correlati