从文件加载yaml并加入失败

时间:2012-10-31 10:09:44

标签: ruby-on-rails ruby join yaml

我尝试将一个yaml文件加载到一个数组中,但它失败了,未定义的方法`join'代表“a b c”:String

# Check certain temporarily emails
# Throw notice not accepted use other email
require 'yaml'
bad_hostnames = YAML::load(File.read("#{Rails.root}/config/bad_hosts.yml"))
if /^(#{bad_hostnames.join("|")})$/.match(host)
  errors.add(:email, "Please not use a disposable mailbox")
end

所以我在模型之前和之上需要yaml ,我在中加载yml的控制器:

require 'yaml'

同样的结果,在rails控制台中,这完美无瑕,我错过了什么? 上面的代码在我的user.rb模型中,在它运行的控制台中

编辑: bad_hosts.yml看起来像(缩短了)1提供者行

0-mail.com
10minutemail.com
30minutemail.com
4warding.net

1 个答案:

答案 0 :(得分:2)

您的 .yml 文件不是YAML文件。

这会使它成为.yml文件。

- 0-mail.com
- 10minutemail.com
- 30minutemail.com
- 4warding.net

但是当你想逐行加载一个文件时,请尝试以下方法:

lines = IO.readlines("#{Rails.root}/config/bad_hosts.yml")
# note: lines end in "\n"