2010-07-21 8 views
13

Ich habe mehrere APIs, die ich integrieren und in verschiedenen Teilen meiner Anwendung aufrufen muss.Wie speichere ich Schlüssel für APIs in Rails?

Wie speichern Sie die Schlüssel, die Benutzer-/Passwort- oder Tokeninformationen, z. B. eine Konfigurationsdatei, und wie rufe ich sie dann zur Verwendung in anderen Teilen der Anwendung auf?

Danke.

Antwort

4

Am einfachsten ist es, die Informationen als Konstanten in den verschiedenen Umgebungsdateien zu speichern. Auf diese Weise können verschiedene Konten für die Entwicklung, Produktion usw.

# Eg 
# development/environment.rb 
.... 
API_1_USER = "user101" 
API_1_PW = "secret!" 

Alternative verwenden können, ist eine YAML-Datei zu erstellen, dann lesen Sie es, wenn Sie Ihre App Zeichen auf eine api. Dies ist die Art von Schienen selbst mit der config/databse.yml Datei

ADDED

Sie können auch speichern als eine Konstante mit einem Hash oder verschachtelten Hash verwenden.

# Eg 
# development/environment.rb 
.... 
API_1 = {"user" => "user101", "pw" => "secret!"} 
API_2 = {"user" => "user102", "pw" => "double_secret"} 

# or nested hashes 
API_KEYS = { 
      "api_1" => {"user" => "user101", "pw" => "secret!"}, 
      "api_2" => {"user" => "user102", "pw" => "double_secret"}} 

# using them in another file: 
foo.signin(API_1['user'], API_1['pw']) 
# or 
foo.signin(API_KEYS["api_1"]['user'], API_KEYS["api_1"]['pw']) 

# note, I use string constants instead of symbols to save vm (since the hash is 
# not referenced more than once or twice). You could also use 
# symbols as the keys, especially if the hash will be referenced often: 
API_1 = {:user => "user101", :pw => "secret!"} 
+0

Wenn ich diesen Ansatz anwende, stimme ich für verschachtelte Hashes statt für unterstrichene Konstanten. – Matchu

+0

Was ist ein Beispiel für einen verschachtelten Hash? Und dann, wie würde ich es in der Steuerung aufrufen, die den API-Zugriff benötigt, genauso wie eine ALL-CAP-Variable? – Angela

+0

Ich habe ein Beispiel für die Verwendung von Hashes als Konstanten –

7

Sie können Benutzernamen/Kennwörter und ähnliche Konfigurationsinformationen in Mechanismen speichern, die Rails bereits verwendet; Sie können entweder Sachen die Konfigurationsdaten Ihrer Umgebung Konfigurationsdateien direkt in (wo production, testing und development konfiguriert sind), oder Sie Ihren eigenen Mechanismus und verwenden:

require "yaml" 
config_hash = YAML::load_file("/path/to/your/config.yaml") 
+0

Hallo, ich denke, ich folge nicht, was die Konfig. Yaml sieht so aus, habe ich nicht schon eine als Umgebungskonfigurationsdatei? – Angela

+0

Der Vorschlag ist, Ihre eigene Konfigurationsdatei in YAML zu pflegen. Auf diese Weise können Sie Ihre appspezifischen Konfigurationen von den Rails-Konfigurationen trennen. – Chris

+0

okay, ich sehe .... also ich meine eigene yaml erstellen und den Code in die Konfigurationsdatei? – Angela

0

Check out Configatron, es ist ziemlich genial und kann genau für diesen Zweck verwendet werden.

21

Genau diese Frage zu halten up-to-date, gibt es eine neue Möglichkeit, dies in Rails 4.1 zu tun:

From the Rails guides:

Rails 4.1 generiert eine neue Datei secrets.yml im Konfigurationsordner. Standardmäßig enthält diese Datei die secret_key_base der Anwendung, sie kann jedoch auch zum Speichern anderer Schlüssel verwendet werden, z. B. von Zugriffsschlüsseln für externe APIs.

Verwandte Themen