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.
rispondere alla tua domanda, allo stesso minuto come la domanda? : D – lutfianasari
@lutfianasari Sì :) So che sembra divertente ma in realtà è incoraggiato. https://stackoverflow.com/help/self-answer –
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