Samo
Samo

Reputation: 8240

Getting values from a config file or environment variable in meteor

This would be very useful for storing API keys or other sensitive information. From what I understand, you can use config files locally but they won't work on meteor.com, but I heard a rumor that environment variables were soon to be supported, or are already as of a recent release, but I can't find any examples.

Can someone provide an example of how to retrieve a value from an environment variable or some other safe location?

Upvotes: 9

Views: 4069

Answers (3)

Sergio Tapia
Sergio Tapia

Reputation: 9825

There's a much better way to handle environment variables. If you come from Ruby on Rails you're used to setting your environment variables in your .ENV file or in your config/application.yml file.

Meteor handles environment variables in a similar way.


Create settings.json file

Inside your server folder in your project, create a file and name it settings.json. Add this file to your gitignore file.

Inside this JSON file, you can save any environment variables you need.

{
  "facebookAppId": "6666667527666666",
  "facebookAppSecret": "00004b20dd845637777321cd3c750000",
  "amazonS3Bucket": "bucket-name"
}

Loading the environment variables

To use these values inside your app during runtime, start Meteor with a --settings option flag.

$ meteor run --settings server/settings.json

Use the values

To use the values, just call the Meteor.settings object.

ServiceConfiguration.configurations.upsert(
  { service: "facebook" },
  {
    $set: {
      appId: Meteor.settings.facebookAppId, 
      secret: Meteor.settings.facebookAppSecret
    }
  }
);

That's all there is to it! Keep your settings safe, and do not commit your keys.

Upvotes: 3

Samo
Samo

Reputation: 8240

After some thought, storing them all in a .js file inside an object literal, adding that file to the .gitignore, and checking in a corresponding .js.sample file with dummy or blank values would do the trick.

Upvotes: 3

Aaron
Aaron

Reputation: 2195

You can actually access the process object to retrieve environment variables in Meteor. In essence, just do the same as in this solution

Upvotes: 4

Related Questions