Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I see the ENV vars in a Rails app?

Tags:

I am taking over an old Rails app. No one has touched it in a year. The last developer left in April of 2015 and I have no way to contact him. I do have ssh access to the server, and I have access to the Github repo.

I don't know any of the usernames/passwords.

If I ssh to the server and I cat the database.yml file, I see stuff like:

  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

If I run the "printenv" command then I don't see any of these vars. I assume they are only loaded by the Rails environment.

I guess I can edit the templates to spit out the values with a bunch of "put" statements, but I'm thinking there must be a more obvious way to do this, other than printing the data where the public could see it?

If I try to run "rails console" I get:

  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.

I don't have sudo on this box, so I can not address the error.

like image 858
lorm Avatar asked Feb 29 '16 16:02

lorm


People also ask

How do I see environment variables in Rails?

Use command ENV in rails console. That will return a hash of your environmental values you can access. Alternatively, you can access your environmental variables from your apps root path using the same command and the variables will be returned formatted.

How do I view environment variables in Ruby?

Accessing Environment Variables from Ruby Ruby has direct access to environment variables via the ENV hash. Environment variables can be directly read or written to by using the index operator with a string argument.


2 Answers

Assuming the staging environment, as your example points to. You'll want to load the console by prepending the RAILS_ENV environment variable to the rails console command.

RAILS_ENV=staging rails console

That should get you in. Once you're in, you can just access the ENV variable directly.

2.2.2 (main):0 > ENV

And that will dump out the environment variables for you. Note, your prompt may look different. If you want to access a specific value, such as the database password, you can:

2.2.2 (main):0 > ENV['STAGE_DATABASE_PASSWORD']
like image 101
Josh Deeden Avatar answered Oct 21 '22 10:10

Josh Deeden


Within your app directory, simply launch the Rails Console:

rails c

Then at the prompt:

ENV

This will list all loaded environmental variables for whichever environment you last exported.

Sorry, after posting this, I realized that the author had already tried to use rails console with errors...but I am fairly sure this should always work. You can't ask for printenv or env within the console, you must use all caps "ENV"

like image 31
mr_soapdish Avatar answered Oct 21 '22 09:10

mr_soapdish