Ciò che era iniziato come un fastidio minore ora si è trasformato in un mal di testa. Sto costruendo un'app Rails 4 e sto usando Foreman per la mia configurazione di sviluppo con un Procfile e un file .env per la configurazione. Quando imposto una variabile ENV nel file .env, questa viene prelevata correttamente dalla mia app. In questo caso sto impostando alcune opzioni ENV per Paperclip in un inizializzatore.Perché gli inizializzatori di My Rails memorizzano nella cache le variabili ENV (Foreman, Dev env)
Il problema emerge quando vado a modificare il valore delle variabili ENV. Nella console, se digito ENV ["MY_VAR"], mostra il nuovo valore. Tuttavia, il valore che è stato usato nel mio inizializzatore, che presumibilmente è stato eseguito quando ho avviato la console, mostra il vecchio valore! Da nessuna parte nel mio progetto è il vecchio valore elencato ovunque. Questo mi porta a credere che l'ambiente sia in qualche modo memorizzato nella cache o che le variabili env vengano esportate nella mia shell. Sono a corto di posti per guardare in modo che qualsiasi aiuto sarebbe molto apprezzato! Sto sviluppando su Mac (10.9.4) con Ruby 1.9.3-p374 e Rails 4.1.0.
Esempio:
ROOT/.env
S3_BUCKET=mybucket
config/inizializzatori/paperclip.rb
Paperclip::Attachment.default_options[:s3_credentials] = {bucket: ENV["S3_BUCKET"]}
Se cambio il valore di S3_BUCKET al caposquadra "newbucket" e fuggi" run rails c "o" rails c "per accedere alla console, questo è ciò che accade:
ENV["S3_BUCKET"] # => "newbucket"
Paperclip::Attachment.default_options[:s3_credentials] # => {bucket: 'mybucket'}
Devo dire che questo comportamento si verifica anche nelle mie classi che ho inserito in/lib. Immagino che tutto ciò sia dovuto a qualcosa di stupido che ho trascurato. Qualche idea?
Se si modificano i varg e si desidera che l'applicazione li prelevi, è necessario riavviare l'app. Questo è sempre stato il caso. – nzifnab
Sì, certo. Per chiarire però, DOPO aver riavviato l'app, le modifiche non vengono rilevate negli inizializzatori, ma vengono prelevate nell'hash ENV. – Spencer
Stai usando 'spring' per caso? (Controlla il tuo Gemfile.) – fny