Rails 4、Mechanize、Figaro:环境变量在表单中不起作用
Rails 4, Mechanize, Figaro: environment variables not working in form
我正在尝试登录一个网站,但我的环境变量没有以必要的形式正确插入。我正在使用 Figaro,我的环境变量安全地存储在 config/application.yml
中。我可以确认两件事...
- 当硬编码我的实际电子邮件和密码时,我能够成功登录
我的环境变量 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 和因此当脚本执行时它们是空白的。
解决方案:将抓取结果打印到视图(确认有效)而不是控制台。
我正在尝试登录一个网站,但我的环境变量没有以必要的形式正确插入。我正在使用 Figaro,我的环境变量安全地存储在 config/application.yml
中。我可以确认两件事...
- 当硬编码我的实际电子邮件和密码时,我能够成功登录
我的环境变量 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 和因此当脚本执行时它们是空白的。
解决方案:将抓取结果打印到视图(确认有效)而不是控制台。