使用Learn Ruby on Rails一书时,我被困在教程中连接到 Google Drive 以将表单提交保存到电子表格的部分。
我无法通过 Google 进行身份验证,因为Rails.application.secrets.email_provider_username
并且Rails.application.secrets.email_provider_password
是零。更具体地说,我的 rails 应用程序似乎没有看到我的任何环境变量。
我已经验证变量设置正确:
ynkwinl-ujurvt0:learn-rails katie$ printenv | grep GMAIL_USERNAME
GMAIL_USERNAME=kjXXXXXX@gmail.com
从控制台:
learn-rails :001 > ENV["GMAIL_USERNAME"]
=> "kjXXXXXX@gmail.com"
但试图通过 Rails 访问它:
learn-rails :001 > Rails.application.secrets.email_provider_username
=> nil
secrets.yml 的相关行:
email_provider_username: <%= ENV["GMAIL_USERNAME"] %>
我已经在这个问题上停留了一个小时,找不到答案(关于这个主题的上一个问题涵盖了一个稍微不同的场景)。
我已经通过将我的用户名/密码硬编码到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"] %>