【问题标题】:Passing multiple arguments to Rack middleware in Rails application.rb在 Rails application.rb 中将多个参数传递给 Rack 中间件
【发布时间】:2016-09-03 08:37:48
【问题描述】:

我正在创建一个机架中间件,我想在我的 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,我们的架构名称将是域名。

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

【问题讨论】:

    标签: ruby-on-rails ruby rack ruby-on-rails-5 rack-middleware


    【解决方案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')返回文件路径,是一个字符串。

    【讨论】:

    • 但是为什么我的 sn-p 在 byebug 控制台中工作?以及如何访问 application.rb 中的请求 URL?
    猜你喜欢
    • 2012-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-12
    • 2019-12-29
    • 1970-01-01
    • 2014-10-16
    • 2016-04-02
    相关资源
    最近更新 更多