Dav*_*ave 5 configuration ruby-on-rails environment-variables
I\xe2\x80\x99m 使用 Rails 4.2.3 并尝试创建只能在我的应用程序中访问的环境变量(而不是将它们存储在 ~/.bashrc 文件或某些特定于操作系统的解决方案中)。所以我创建了文件 \xe2\x80\x9cconfig/environment_variables.yml\xe2\x80\x9d
\n\ndevelopment:\n GOOGLE_CLIENT_ID: 999995268318-o5ejue1pgtsjoid0f0k8r7lcksfse6hk.apps.googleusercontent.com\n GOOGLE_SECRET: 28bfoTU_RbRKkdxv7_wkNzw5\n FACEBOOK_KEY: 1588888667329742\n FACEBOOK_SECRET: 4444g1faeb11111e5392892d397b79f8e\nproduction:\n GOOGLE_CLIENT_ID: 999995268318-o5ejue1pgtsjoid0f0k8r7lcksfse6hk.apps.googleusercontent.com\n GOOGLE_SECRET: 28bfoTU_RbRKkdxv7_wkNzw5\n FACEBOOK_KEY: 1588888667329742\n FACEBOOK_SECRET: 4444g1faeb11111e5392892d397b79f8e\nRun Code Online (Sandbox Code Playgroud)\n\n然后我创建了文件 \xe2\x80\x9cconfig/initializers/environment_variables.rb\xe2\x80\x9d
\n\nmodule EnvironmentVariablesExample\n class Application < Rails::Application\n config.before_configuration do\n env_file = Rails.root.join("config", \'environment_variables.yml\').to_s\n\n if File.exists?(env_file)\n YAML.load_file(env_file)[Rails.env].each do |key, value|\n ENV[key.to_s] = value\n end # end YAML.load_file\n end # end if File.exists?\n end # end config.before_configuration\n end # end class\nend # end module\nRun Code Online (Sandbox Code Playgroud)\n\n但是当我使用 \xe2\x80\x9crails s,\xe2\x80\x9d 在本地计算机上启动服务器时,出现此错误
\n\nExiting\n/Users/davea/Documents/workspace/pushupmoose/config/initializers/environment_variables.rb:8:in `[]=\': no implicit conversion of Fixnum into String (TypeError)\n from /Users/davea/Documents/workspace/pushupmoose/config/initializers/environment_variables.rb:8:in `block (2 levels) in <class:Application>\'\n from /Users/davea/Documents/workspace/pushupmoose/config/initializers/environment_variables.rb:7:in `each\'\n from /Users/davea/Documents/workspace/pushupmoose/config/initializers/environment_variables.rb:7:in `block in <class:Application>\'\n 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\'\n 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\'\n from /Users/davea/.rvm/gems/ruby-2.3.0/gems/activesupport-4.2.5/lib/active_support/lazy_load_hooks.rb:27:in `each\'\n 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\'\n from /Users/davea/.rvm/gems/ruby-2.3.0/gems/railties-4.2.5/lib/rails/railtie/configuration.rb:53:in `before_configuration\'\n from /Users/davea/Documents/workspace/pushupmoose/config/initializers/environment_variables.rb:3:in `<class:Application>\'\n from /Users/davea/Documents/workspace/pushupmoose/config/initializers/environment_variables.rb:2:in `<module:EnvironmentVariablesExample>\'\n from /Users/davea/Documents/workspace/pushupmoose/config/initializers/environment_variables.rb:1:in `<top (required)>\'\n from /Users/davea/.rvm/gems/ruby-2.3.0/gems/activesupport-4.2.5/lib/active_support/dependencies.rb:268:in `load\'\n from /Users/davea/.rvm/gems/ruby-2.3.0/gems/activesupport-4.2.5/lib/active_support/dependencies.rb:268:in `block in load\'\n from /Users/davea/.rvm/gems/ruby-2.3.0/gems/activesupport-4.2.5/lib/active_support/dependencies.rb:240:in `load_dependency\'\n from /Users/davea/.rvm/gems/ruby-2.3.0/gems/activesupport-4.2.5/lib/active_support/dependencies.rb:268:in `load\'\n 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\'\n from /Users/davea/.rvm/gems/ruby-2.3.0/gems/activesupport-4.2.5/lib/active_support/notifications.rb:166:in `instrument\'\n from /Users/davea/.rvm/gems/ruby-2.3.0/gems/railties-4.2.5/lib/rails/engine.rb:651:in `load_config_initializer\'\n 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>\'\n from /Users/davea/.rvm/gems/ruby-2.3.0/gems/railties-4.2.5/lib/rails/engine.rb:615:in `each\'\n from /Users/davea/.rvm/gems/ruby-2.3.0/gems/railties-4.2.5/lib/rails/engine.rb:615:in `block in <class:Engine>\'\n from /Users/davea/.rvm/gems/ruby-2.3.0/gems/railties-4.2.5/lib/rails/initializable.rb:30:in `instance_exec\'\n from /Users/davea/.rvm/gems/ruby-2.3.0/gems/railties-4.2.5/lib/rails/initializable.rb:30:in `run\'\n \xe2\x80\xa6\nRun Code Online (Sandbox Code Playgroud)\n\n我在上面设置的环境中做错了什么?谢谢,-戴夫
\n我认为错误不是因为您如何设置该值,而是因为您设置的值。
您的FACEBOOK_KEY价值观是人们会尊重的数字YAML.load_file。然后它会尝试将这些数值存储在ENV. 但是,ENV只喜欢字符串值。
2.2.1 :019 > ENV['test'] = 1
TypeError: no implicit conversion of Fixnum into String
from (irb):19:in `[]='
from (irb):19
2.2.1 :020 > ENV['test'] = '1'
=> "1"
Run Code Online (Sandbox Code Playgroud)
因此,如果您将FACEBOOK_KEY值用双引号引起来,应该没问题:
development:
FACEBOOK_KEY: "1588888667329742"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12853 次 |
| 最近记录: |