Rails应用程序中的环境变量为零(无法连接到Google云端硬盘)

Kat*_*tie 5 learn-ruby-on-rails

使用" 学习Ruby on Rails"这本书时,我坚持使用教程中连接到Google Drive的部分,将表单提交保存到电子表格中.

我无法通过Google进行身份验证,因为Rails.application.secrets.email_provider_usernameRails.application.secrets.email_provider_password是零.更具体地说,似乎我的rails应用程序没有看到我的任何环境变量.

我已经验证变量设置正确:

ynkwinl-ujurvt0:learn-rails katie$ printenv | grep GMAIL_USERNAME
GMAIL_USERNAME=kjXXXXXX@gmail.com
Run Code Online (Sandbox Code Playgroud)

从控制台:

learn-rails :001 > ENV["GMAIL_USERNAME"]
 => "kjXXXXXX@gmail.com"
Run Code Online (Sandbox Code Playgroud)

但试图通过Rails访问它:

learn-rails :001 > Rails.application.secrets.email_provider_username
 => nil
Run Code Online (Sandbox Code Playgroud)

相关的秘密行.yml:

email_provider_username: <%= ENV["GMAIL_USERNAME"] %>
Run Code Online (Sandbox Code Playgroud)

我已经坚持了一个小时而无法找到答案(关于这个主题的上一个问题涵盖了略有不同的情况).

我通过将用户名/密码硬编码到secrets.yml文件中来解决这个问题,但我想了解将来的参考情况.

完整的'secrets.yml'文件供参考:

development:

  email_provider_username: <%= ENV["GMAIL_USERNAME"] %>
  email_provider_password: <%= ENV["GMAIL_PASSWORD"] %>
  domain_name: example.com
  mailchimp_api_key: <%= ENV["MAILCHIMP_API_KEY"] %>
  mailchimp_list_id: <%= ENV["MAILCHIMP_LIST_ID"] %>
  owner_email: <%= ENV["OWNER_EMAIL"] %>
  secret_key_base: very_long_random_string

test:
  secret_key_base: very_long_random_string

# Do not keep production secrets in the repository,
# instead read values from the environment.
production:
  email_provider_username: <%= ENV["GMAIL_USERNAME"] %>
  email_provider_password: <%= ENV["GMAIL_PASSWORD"] %>
  domain_name: <%= ENV["DOMAIN_NAME"] %>
  mailchimp_api_key: <%= ENV["MAILCHIMP_API_KEY"] %> 
  mailchimp_list_id: <%= ENV["MAILCHIMP_LIST_ID"] %> 
  owner_email: <%= ENV["OWNER_EMAIL"] %>
  secret_key_base: <%= ENV["SECRET_KEY_BASE"] %>
Run Code Online (Sandbox Code Playgroud)

Emp*_*act 7

我有这个问题,这是由于Spring在后台运行服务器引起的,即使我在终端中退出服务器也是如此.

如果这是您的原因,您可以通过运行来修复它spring stop.


teg*_*ude 0

尝试:

Rails.application.secrets['email_provider_username']
Run Code Online (Sandbox Code Playgroud)