【问题标题】:Loading yaml from file and join fails从文件加载 yaml 并加入失败
【发布时间】:2012-10-31 10:09:44
【问题描述】:

我尝试将 yaml 文件加载到数组中,但由于未定义方法 `join' for "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

【问题讨论】:

  • config/bad_hosts.yml 文件的内容是什么。问题似乎就在那里。
  • bad_hosts.yml 的内容我将在上面添加

标签: ruby-on-rails ruby join yaml


【解决方案1】:

您的.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"

【讨论】:

  • 这完全做到了,它完全没有注意到文件结构的变化,我基于 application.yml thx 指出!
猜你喜欢
  • 2012-03-01
  • 2016-04-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-06
  • 2014-08-31
相关资源
最近更新 更多