Rails 4、Mechanize、Figaro:环境变量在表单中不起作用

Rails 4, Mechanize, Figaro: environment variables not working in form

我正在尝试登录一个网站,但我的环境变量没有以必要的形式正确插入。我正在使用 Figaro,我的环境变量安全地存储在 config/application.yml 中。我可以确认两件事...

  1. 当硬编码我的实际电子邮件和密码时,我能够成功登录
  2. 我的环境变量 return 在 Rails 控制台中测试时正确(例如 ENV["WHATEVER"] returns 正确的值)

    # app/helpers/scrape_wf.rb
    
    require 'mechanize'
    
    agent = Mechanize.new
    page = agent.get('https://www.wealthfront.com/login')
    login_form = page.forms.first
    
    # LOG IN UNSUCCESSFUL
    
    login_form.email    = ENV["WF_EMAIL"] 
    login_form.password = ENV["WF_PASSWORD"]
    
    home_page = login_form.submit
    
    puts page.title          # => Log In to Wealthfront
    puts home_page.title     # => Log In to Wealthfront
    
    # LOG IN SUCCESSFUL
    
    login_form.email    = "my_harcoded_email"
    login_form.password = "my_harcoded_password"
    
    home_page = login_form.submit
    
    puts page.title          # => Log In to Wealthfront
    puts home_page.title     # => Wealthfront
    

并在控制台中...

    rails c
    Loading development environment (Rails 4.2.4)
    [1] pry(main)> ENV["WF_EMAIL"]
    => "my_harcoded_email"
    [2] pry(main)> ENV["WF_PASSWORD"]
    => "my_harcoded_password"

我做错了什么...?

根据this excellent post...

When you install the Figaro gem in your Rails app, any values that you enter into config/application.yml will be loaded into the ruby ENV hash on startup.

...因为我正在开发脚本和 运行 从命令行(即 ruby such_and_such.rb)我的环境变量不是 set/initialized 和因此当脚本执行时它们是空白的。

解决方案:将抓取结果打印到视图(确认有效)而不是控制台。