Wie setze ich Umgebungsvariablen in meine Rails-Anwendung?

Ich bin mit Schienen 4.2.3 und versuchen erstellen von environment-Variablen nur in meiner Anwendung (im Gegensatz zur Speicherung in einer ~/.bashrc-Datei oder einige OS-spezifische Lösung). Also ich habe die Datei “config/environment_variables.yml" mit

development:
  GOOGLE_CLIENT_ID: 999995268318-o5ejue1pgtsjoid0f0k8r7lcksfse6hk.apps.googleusercontent.com
  GOOGLE_SECRET: 28bfoTU_RbRKkdxv7_wkNzw5
  FACEBOOK_KEY: 1588888667329742
  FACEBOOK_SECRET: 4444g1faeb11111e5392892d397b79f8e
production:
  GOOGLE_CLIENT_ID: 999995268318-o5ejue1pgtsjoid0f0k8r7lcksfse6hk.apps.googleusercontent.com
  GOOGLE_SECRET: 28bfoTU_RbRKkdxv7_wkNzw5
  FACEBOOK_KEY: 1588888667329742
  FACEBOOK_SECRET: 4444g1faeb11111e5392892d397b79f8e

und dann habe ich die Datei “config/Initialisierungen/environment_variables.rb"

module EnvironmentVariablesExample
  class Application < Rails::Application
    config.before_configuration do
      env_file = Rails.root.join("config", 'environment_variables.yml').to_s

      if File.exists?(env_file)
        YAML.load_file(env_file)[Rails.env].each do |key, value|
          ENV[key.to_s] = value
        end # end YAML.load_file
      end # end if File.exists?
    end # end config.before_configuration
  end # end class
end # end module

aber wenn ich Start mein server auf meinem lokalen Rechner mit "rails s" ich bekomme diese Fehlermeldung

Exiting
/Users/davea/Documents/workspace/pushupmoose/config/initializers/environment_variables.rb:8:in `[]=': no implicit conversion of Fixnum into String (TypeError)
    from /Users/davea/Documents/workspace/pushupmoose/config/initializers/environment_variables.rb:8:in `block (2 levels) in <class:Application>'
    from /Users/davea/Documents/workspace/pushupmoose/config/initializers/environment_variables.rb:7:in `each'
    from /Users/davea/Documents/workspace/pushupmoose/config/initializers/environment_variables.rb:7:in `block in <class:Application>'
    from /Users/davea/.rvm/gems/ruby-2.3.0/gems/activesupport-4.2.5/lib/active_support/lazy_load_hooks.rb:36:in `execute_hook'
    from /Users/davea/.rvm/gems/ruby-2.3.0/gems/activesupport-4.2.5/lib/active_support/lazy_load_hooks.rb:28:in `block in on_load'
    from /Users/davea/.rvm/gems/ruby-2.3.0/gems/activesupport-4.2.5/lib/active_support/lazy_load_hooks.rb:27:in `each'
    from /Users/davea/.rvm/gems/ruby-2.3.0/gems/activesupport-4.2.5/lib/active_support/lazy_load_hooks.rb:27:in `on_load'
    from /Users/davea/.rvm/gems/ruby-2.3.0/gems/railties-4.2.5/lib/rails/railtie/configuration.rb:53:in `before_configuration'
    from /Users/davea/Documents/workspace/pushupmoose/config/initializers/environment_variables.rb:3:in `<class:Application>'
    from /Users/davea/Documents/workspace/pushupmoose/config/initializers/environment_variables.rb:2:in `<module:EnvironmentVariablesExample>'
    from /Users/davea/Documents/workspace/pushupmoose/config/initializers/environment_variables.rb:1:in `<top (required)>'
    from /Users/davea/.rvm/gems/ruby-2.3.0/gems/activesupport-4.2.5/lib/active_support/dependencies.rb:268:in `load'
    from /Users/davea/.rvm/gems/ruby-2.3.0/gems/activesupport-4.2.5/lib/active_support/dependencies.rb:268:in `block in load'
    from /Users/davea/.rvm/gems/ruby-2.3.0/gems/activesupport-4.2.5/lib/active_support/dependencies.rb:240:in `load_dependency'
    from /Users/davea/.rvm/gems/ruby-2.3.0/gems/activesupport-4.2.5/lib/active_support/dependencies.rb:268:in `load'
    from /Users/davea/.rvm/gems/ruby-2.3.0/gems/railties-4.2.5/lib/rails/engine.rb:652:in `block in load_config_initializer'
    from /Users/davea/.rvm/gems/ruby-2.3.0/gems/activesupport-4.2.5/lib/active_support/notifications.rb:166:in `instrument'
    from /Users/davea/.rvm/gems/ruby-2.3.0/gems/railties-4.2.5/lib/rails/engine.rb:651:in `load_config_initializer'
    from /Users/davea/.rvm/gems/ruby-2.3.0/gems/railties-4.2.5/lib/rails/engine.rb:616:in `block (2 levels) in <class:Engine>'
    from /Users/davea/.rvm/gems/ruby-2.3.0/gems/railties-4.2.5/lib/rails/engine.rb:615:in `each'
    from /Users/davea/.rvm/gems/ruby-2.3.0/gems/railties-4.2.5/lib/rails/engine.rb:615:in `block in <class:Engine>'
    from /Users/davea/.rvm/gems/ruby-2.3.0/gems/railties-4.2.5/lib/rails/initializable.rb:30:in `instance_exec'
    from /Users/davea/.rvm/gems/ruby-2.3.0/gems/railties-4.2.5/lib/rails/initializable.rb:30:in `run'
    

Was mache ich falsch in meiner Umgebung einrichten oben? Vielen Dank, - Dave

  • Wenn Sie den " env. Variablen in der Anwendung selbst könnte man auch nichts ändern, richtig? Der wichtigste Grund für die Verwendung von Umgebungsvariablen in Fall, dass Sie einmal drücken Sie diese app, um git und Ihre secret_key unter anderem werden der öffentlichkeit gezeigt. Wenn Sie wollen, um die Dinge innerhalb der app und nicht off-site gespeichert haben, würde ich empfehlen, hinzufügen von diesen sensiblen Dateien zu gitignore zumindest. Wenn Sie collaboring mit anderen, die Sie verwenden können, "git update-index --assume-unchanged <Dateiname>" was Stoppt die Verfolgung von änderungen, aber nicht entfernen Sie aus dem repo. Ändern Sie einfach die info nach dem ersten commit.
  • Ja, diese Datei wird in gehen .gitignore aber wie funktioniert die Umsetzung dieser Datei in der .gitignore heilen die Fehlermeldung?
  • versuchen puts key.to_s;puts value vor ENV[key.to_s] = value und sehen, wo der server gestoppt...es wird Ihnen sagen, u die Täter variable verursacht die Fehler...nur eine wilde Vermutung, vielleicht brauchen eine value.to_s
  • +1 zu konvertieren Werte zu einem string. Sie sollten Figaro Edelstein, die nicht die schwere Arbeit für Sie und es ist sehr einfach zu implementieren.
  • Ich <3 Figaro! Vor allem, weil ich ein Deployment auf Heroku und es macht so einfach.
InformationsquelleAutor Dave | 2016-02-24
Schreibe einen Kommentar