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.
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']
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"
yourapp/config/env.yml ou application.yml etc ...
Recherchez le code qui ressemble à
AWS_KEY_ID: blahblah23rkjewfojerflbah
AWS_SECRET_KEY_ID: blahblah2394082fkwejfoblah