0

我正在创建一个我想在我的 Rails 应用程序中使用的机架中间件。基本上,我需要将匹配特定 url 的请求记录到我的数据库中。为此,我需要将数据库配置传递给我的中间件,以便它可以与数据库建立连接。我正在尝试做:-

db_yml = Rails.root.join('config/database.yml')
db_config = YAML.load(db_yml.read)[Rails.env]

但这给出了一个错误

config/application.rb:40:in <class:Application>': undefined methodread' for # (NoMethodError)

如果我添加 byebug 并在 byebug 控制台中运行它,它工作正常。我无法找出原因。我想做以下事情:-

  1. 在将数据库配置作为参数传递给我的中间件之前,我需要读取和修改数据库配置。
  2. 我想读取请求 url 的域。我们正在使用Apartment gem,我们的模式名称将是域名。

在这里这里关注了多篇文章。我是 Rails 的新手,不知道好的资源,所以请帮忙。提前致谢!

4

1 回答 1

1

你应该使用:

db_yml = Rails.root.join('config/database.yml')
db_config = YAML.load(File.open(db_yml))[Rails.env]

Rails.root.join('config/database.yml')返回文件路径,它是一个字符串。

于 2016-09-03T09:18:54.703 回答