A Ruby CLI tool for safely managing and versioning your .env files. Envsafe provides backup, restore, and history management capabilities to prevent accidental loss of environment variables.
- π Backup Management: Create tagged or automatic backups of your
.envfiles - π Restore System: Restore any previous backup by tag or index
- π History Tracking: List all backups with timestamps and tags
- βͺ Undo Operations: Quickly undo the last write operation
- π File Preview: View contents of any backup without restoring
- ποΈ Selective Cleanup: Delete specific backups or clear all history
- π Git Integration: Automatically add
.envsafeto your.gitignore
Add this line to your application's Gemfile:
gem 'envsafe'And then execute:
$ bundle installOr install it yourself as:
$ gem install envsafe# Create a backup with automatic timestamp
$ envsafe backup
# Create a tagged backup for easy identification
$ envsafe backup --tag "before-production-deploy"
$ envsafe backup -t "pre-feature-update"# Show all backups
$ envsafe list
# Limit the number of backups shown
$ envsafe list 5# Restore by tag
$ envsafe restore --tag "before-production-deploy"
$ envsafe restore -t "pre-feature-update"
# Restore by stack index (use 'list' command to see indices)
$ envsafe restore --sindex 0
$ envsafe restore -i 2# Undo the last write operation to .env
$ envsafe undo# Show contents by tag
$ envsafe show --tag "production-config"
$ envsafe show -t "staging-setup"
# Show contents by stack index
$ envsafe show --sindex 0
$ envsafe show -i 1# Delete by tag
$ envsafe delete --tag "old-config"
$ envsafe delete -t "temporary-backup"
# Delete by stack index
$ envsafe delete --sindex 3
$ envsafe delete -i 0# Delete all backups
$ envsafe clear
# Add .envsafe directory to .gitignore
$ envsafe ignore| Command | Description | Options |
|---|---|---|
backup |
Create a backup of current .env file |
-t, --tag TAG - Optional tag for the backup |
list [LIMIT] |
List all backups, optionally limit results | LIMIT - Number of backups to show |
restore |
Restore a specific backup to .env |
-t, --tag TAG - Restore by tag-i, --sindex INDEX - Restore by stack index |
undo |
Undo last write operation to .env |
None |
show |
Show contents of a backup file | -t, --tag TAG - Show by tag-i, --sindex INDEX - Show by stack index |
delete |
Delete a specific backup | -t, --tag TAG - Delete by tag-i, --sindex INDEX - Delete by stack index |
clear |
Delete all backups | None |
ignore |
Add .envsafe to .gitignore |
None |
# Before making changes
$ envsafe backup -t "stable-config"
# Make your changes to .env
$ vim .env
# If something goes wrong, quickly undo
$ envsafe undo
# Or restore the tagged backup
$ envsafe restore -t "stable-config"# Backup before deployment
$ envsafe backup -t "pre-deploy-$(date +%Y%m%d)"
# Deploy and update environment variables
# ... deployment process ...
# If rollback needed
$ envsafe restore -t "pre-deploy-20240108"# Setup git ignore for the team
$ envsafe ignore
# Create backups with descriptive tags
$ envsafe backup -t "feature-auth-setup"
$ envsafe backup -t "database-migration-config"
# Share backup strategies in documentation
$ envsafe listEnvsafe stores backups in a .envsafe directory in your project root:
your-project/
βββ .env
βββ .envsafe/
β βββ backup-001.env
β βββ backup-002.env
β βββ metadata.json
βββ .gitignore
- Tag Important Backups: Use descriptive tags for backups before major changes
- Regular Cleanup: Periodically review and clean old backups with
envsafe clear - Git Ignore: Always run
envsafe ignoreto prevent committing backup files - Pre-deployment: Create tagged backups before deployments for easy rollback
- Team Coordination: Establish tagging conventions for team projects
Bug reports and pull requests are welcome on GitHub at https://github.com/kaisersakhi/envsafe.
The gem is available as open source under the terms of the MIT License.