2016-09-03 2 views
0

Ich erstelle eine Rack Middleware, die ich in meiner Rails App verwenden möchte. Grundsätzlich muss ich Anfragen mit bestimmten URLs zu meiner Datenbank protokollieren. Um dies zu tun, muss ich die Datenbankkonfiguration an meine Middleware übergeben, damit sie eine Verbindung mit der DB herstellen kann. Ich versuche zu tun: -Übergabe mehrerer Argumente an Rack-Middleware in Rails application.rb

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

Aber dies wird ein Fehler geben

config/application.rb: 40: in <class:Application>': undefined method Lese‘für # (NoMethodError)

Wenn Ich füge byebug hinzu und führe dasselbe in der Byebug-Konsole aus, es funktioniert gut. Ich kann nicht herausfinden warum. Ich mag folgende Dinge tun: -

  1. Ich brauche & zu lesen, um die Datenbank-Konfiguration zu ändern, bevor es zu meiner Middleware als Argument übergeben.
  2. Ich möchte die Domain der Anfrage URL lesen. Wir verwenden Apartment gem und Unser Schemaname ist der Domainname.

Ich folgte mehrere Artikel here & here. Ich bin ein Neuling für Rails und kenne keine guten Ressourcen, also bitte helfen. Vielen Dank im Voraus!

Antwort

1

Sie verwenden sollten:

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

Rails.root.join('config/database.yml') Rückkehr der Dateipfad, der eine Zeichenfolge ist.

+0

Warum funktioniert mein Snippet in der byebug Konsole? Und wie kann ich auf die Anfrage URL in application.rb zugreifen? – abhinav

Verwandte Themen