Ich habe meine Rails (4.2) App läuft durch Passenger (5.0.28) + Apache (2.4.7) auf einem Ubuntu (14.02) -System, Ruby (2.3.0) verwaltet mit rbenv. Ich stelle mit Capistrano (3.4.0) bereit.Zugriff auf Umgebungsvariablen während der Bereitstellung von Capistrano?
Alle meine Umgebungsvariablen sind in einem sehr einfachen profile.d
Skript festgelegt.
#!/bin/sh
export VAR1=VAL1
export VAR2=VAL2
Dies funktioniert wie ein Charme. Meine App ENV
hat alle richtigen Variablen, Secrets.yml
ist richtig ausgefüllt ... alles funktioniert, außer für die Bereitstellung mit Capistrano über ssh.
In meinem deploy.rb
Ich habe folgendes, dass ich denke, ist relavant:
set :ssh_options, {
forward_agent: true,
paranoid: true,
keys: "~/.ssh/id_rsa.pub"
}
Capistrano docs unglaublich begrenzt und ssh \ server sein Config nicht meine Stärke kann ich nicht, warum meine ENV
Variablen scheinen, um herauszufinden werden von Capistrano nicht gesehen. Wenn ich während des Bereitstellungsablaufs puts ENV.inspect
ausführen, erhalte ich Dinge wie "TERM_PROGRAM"=>"Apple_Terminal"
und meine lokalen Computerbenutzerinformationen und was nicht. Warum verwendet Capistrano nicht die Remote-Umgebung? Wie kann ich meine Konfiguration entweder serverseitig oder in meinem Bereitstellungsskript ändern, um dies zu beheben?
Danke für die Hilfe.
Ausgezeichnete Antwort. –
Vielen Dank, dass Sie sich die Zeit genommen haben, das zu schreiben. Diese Tabelle am Ende des Links ist fantastisch. –