web-dev-qa-db-fra.com

Comment puis-je voir les vars ENV dans une application Rails?

Je reprends une ancienne application Rails. Personne ne l'a touchée depuis un an. Le dernier développeur est parti en avril 2015 et je n'ai aucun moyen de le contacter. J'ai un accès ssh à le serveur, et j'ai accès au dépôt Github.

Je ne connais aucun nom d'utilisateur/mot de passe.

Si je ssh sur le serveur et que je cat le fichier database.yml, je vois des trucs comme:

  staging:
        adapter: mysql2
        encoding: utf8
        pool: 5
        socket: /var/lib/mysql/mysql.sock
        database: o_wawa_stage
        username: wawa_stage
        password: <%= ENV['STAGE_DATABASE_PASSWORD'] %>
        Host: access.dmedia.com

Si j'exécute la commande "printenv", je ne vois aucun de ces vars. Je suppose qu'ils ne sont chargés que par l'environnement Rails.

Je suppose que je peux modifier les modèles pour cracher les valeurs avec un tas de déclarations "put", mais je pense qu'il doit y avoir un moyen plus évident de le faire, autre que d'imprimer les données où le public pourrait les voir?

Si j'essaye d'exécuter la "console Rails" j'obtiens:

  Rails Error: Unable to access log file. Please ensure that /var/www/haha/production/releases/20150118213616/log/development.log exists and is writable (ie, make it writable for user and group: chmod 0664 /var/www/haha/production/releases/20150118213616/log/development.log). The log level has been raised to WARN and the output directed to STDERR until the problem is fixed.

Je n'ai pas Sudo sur cette boîte, donc je ne peux pas corriger l'erreur.

15
lorm

En supposant l'environnement de transfert, comme le montre votre exemple. Vous souhaiterez charger la console en ajoutant la variable d'environnement Rails_ENV à Rails console commande.

Rails_ENV=staging Rails console

Cela devrait vous aider. Une fois que vous y êtes, vous pouvez simplement accéder directement à la variable ENV.

2.2.2 (main):0 > ENV

Et cela videra les variables d'environnement pour vous. Remarque, votre invite peut sembler différente. Si vous souhaitez accéder à une valeur spécifique, telle que le mot de passe de la base de données, vous pouvez:

2.2.2 (main):0 > ENV['STAGE_DATABASE_PASSWORD']
15
Josh Deeden

Dans le répertoire de votre application, lancez simplement la console Rails:

Rails c

Puis à l'invite:

2.3.0 :001 > ENV

Cela répertorie toutes les variables d'environnement chargées pour le dernier environnement exporté.

Désolé, après avoir posté cela, j'ai réalisé que l'auteur avait déjà essayé d'utiliser la console Rails avec des erreurs ... mais je suis assez sûr que cela devrait toujours fonctionner. Vous ne pouvez pas demander printenv ou env dans la console, vous devez utiliser toutes les majuscules "ENV"

2
mr_soapdish

yourapp/config/env.yml ou application.yml etc ...

Recherchez le code qui ressemble à

AWS_KEY_ID: blahblah23rkjewfojerflbah
AWS_SECRET_KEY_ID: blahblah2394082fkwejfoblah
0
Julian Guterman