Reputation: 8240
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
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.
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"
}
To use these values inside your app during runtime, start Meteor with a --settings
option flag.
$ meteor run --settings server/settings.json
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
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