在我的 rails 应用程序的 bin 文件夹中,我有一个脚本,用于轮询 gmail 帐户的收件箱以获取任何收到的邮件,但这条线imap = Net::IMAP.new(config[:host], config[:port], true )失败,没有将 Symbol 隐式转换为 Integer
这是脚本的快照形式
#bin/mail_receiver.rb
require File.join(File.dirname(File.expand_path(__FILE__)), '..', 'config', 'environment')
require 'net/imap'
require 'net/http'
require 'rubygems'
config = File.expand_path('../../config/initializers/load_imap_settings', __FILE__)
imap = Net::IMAP.new(config[:host], config[:port], true)
my_settings.yml在其他rails 配置之前加载到application.rb中,我已经在控制台中确认它们可用
#config/my_settings.yml
IMAP_HOST: 'imap.gmail.com'
IMAP_PORT: '993'
IMAP_USERNAME: 'xxxvvvyyy@gmail.com'
IMAP_PASSWORD: 'xxxvvvyyy'
然后我让它在初始化程序中可用,以便在之前粘贴的mail_receiver.rb脚本中使用
#config/initializers/load_imap_settings.rb
ImapSettings = {
host: ENV['IMAP_HOST'],
port: ENV['IMAP_PORT'],
username: ENV['IMAP_USERNAME'],
password: ENV['IMAP_PASSWORD']
}
在 Rails 控制台中,我可以做
config = ImapSettings
config[:host]
这将返回
'imap.gmail.com'
类似地, config[:port]或config[:username]或config[:password]在rails 控制台中都返回正确的值而没有错误。