refactor(config): use secret files in dev mode
- Refactor `config/dev.exs` to use `config/dev.secret.exs` instead of fetching the SMTP information from the environment and using hardcoded database credentials. This is useful when different developers have different database credentials and they use different SMTP adapters - Add a sample `dev.secret.exs` in `config/dev.secret.sample.exs`. Also gitignore the origin `dev.secret.exs` file - Add instructions on how to setup the config file for development in `README.md` - Add `Plug.Swoosh.MailboxPreview` plug on "/mailbox" route in development mode for easier development with e-mails Signed-off-by: Akshit Garg <garg.akshit@gmail.com>
This commit is contained in:
		
							parent
							
								
									74ed02c4da
								
							
						
					
					
						commit
						12ec98d15e
					
				
							
								
								
									
										3
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							@ -36,3 +36,6 @@ npm-debug.log
 | 
				
			|||||||
.idea
 | 
					.idea
 | 
				
			||||||
.env
 | 
					.env
 | 
				
			||||||
.envrc
 | 
					.envrc
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Secret config files
 | 
				
			||||||
 | 
					config/*.secret.exs
 | 
				
			||||||
 | 
				
			|||||||
@ -2,6 +2,8 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
To start your Phoenix server:
 | 
					To start your Phoenix server:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  * Copy `config/dev.secret.sample.exs` to `config/dev.secret.exs`
 | 
				
			||||||
 | 
					  * Fill in the SMTP and database configuration in `config/dev.secret.exs`
 | 
				
			||||||
  * Install dependencies with `mix deps.get`
 | 
					  * Install dependencies with `mix deps.get`
 | 
				
			||||||
  * Create and migrate your database with `mix ecto.setup`
 | 
					  * Create and migrate your database with `mix ecto.setup`
 | 
				
			||||||
  * Install Node.js dependencies with `npm install` inside the `assets` directory
 | 
					  * Install Node.js dependencies with `npm install` inside the `assets` directory
 | 
				
			||||||
 | 
				
			|||||||
@ -1,14 +1,5 @@
 | 
				
			|||||||
use Mix.Config
 | 
					use Mix.Config
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Configure your database
 | 
					 | 
				
			||||||
config :ketbin, Ketbin.Repo,
 | 
					 | 
				
			||||||
  username: "postgres",
 | 
					 | 
				
			||||||
  password: "postgres",
 | 
					 | 
				
			||||||
  database: "ketbin_dev",
 | 
					 | 
				
			||||||
  hostname: "localhost",
 | 
					 | 
				
			||||||
  show_sensitive_data_on_connection_error: true,
 | 
					 | 
				
			||||||
  pool_size: 10
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# For development, we disable any cache and enable
 | 
					# For development, we disable any cache and enable
 | 
				
			||||||
# debugging and code reloading.
 | 
					# debugging and code reloading.
 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
@ -30,32 +21,6 @@ config :ketbin, KetbinWeb.Endpoint,
 | 
				
			|||||||
    ]
 | 
					    ]
 | 
				
			||||||
  ]
 | 
					  ]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
smtp_relay =
 | 
					 | 
				
			||||||
  System.get_env("SWOOSH_SMTP_RELAY") ||
 | 
					 | 
				
			||||||
    raise """
 | 
					 | 
				
			||||||
    environment variable SWOOSH_SMTP_RELAY is missing.
 | 
					 | 
				
			||||||
    """
 | 
					 | 
				
			||||||
username =
 | 
					 | 
				
			||||||
  System.get_env("SWOOSH_USERNAME") ||
 | 
					 | 
				
			||||||
    raise """
 | 
					 | 
				
			||||||
    environment variable SWOOSH_USERNAME is missing.
 | 
					 | 
				
			||||||
    """
 | 
					 | 
				
			||||||
password =
 | 
					 | 
				
			||||||
  System.get_env("SWOOSH_PASSWORD") ||
 | 
					 | 
				
			||||||
    raise """
 | 
					 | 
				
			||||||
    environment variable SWOOSH_PASSWORD is missing.
 | 
					 | 
				
			||||||
    """
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# configure mailer
 | 
					 | 
				
			||||||
config :ketbin, Ketbin.Mailer,
 | 
					 | 
				
			||||||
  adapter: Swoosh.Adapters.SMTP,
 | 
					 | 
				
			||||||
  relay: smtp_relay,
 | 
					 | 
				
			||||||
  username: username,
 | 
					 | 
				
			||||||
  password: password,
 | 
					 | 
				
			||||||
  tls: :always,
 | 
					 | 
				
			||||||
  auth: :always,
 | 
					 | 
				
			||||||
  port: 587
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# ## SSL Support
 | 
					# ## SSL Support
 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
# In order to use HTTPS in development, a self-signed
 | 
					# In order to use HTTPS in development, a self-signed
 | 
				
			||||||
@ -100,3 +65,6 @@ config :phoenix, :stacktrace_depth, 20
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
# Initialize plugs at runtime for faster development compilation
 | 
					# Initialize plugs at runtime for faster development compilation
 | 
				
			||||||
config :phoenix, :plug_init_mode, :runtime
 | 
					config :phoenix, :plug_init_mode, :runtime
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Import the secrets config
 | 
				
			||||||
 | 
					import_config "dev.secret.exs"
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										24
									
								
								config/dev.secret.sample.exs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								config/dev.secret.sample.exs
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,24 @@
 | 
				
			|||||||
 | 
					import Mix.Config
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Configure your database
 | 
				
			||||||
 | 
					config :ketbin, Ketbin.Repo,
 | 
				
			||||||
 | 
					  username: "postgres",
 | 
				
			||||||
 | 
					  password: "postgres",
 | 
				
			||||||
 | 
					  database: "ketbin_dev",
 | 
				
			||||||
 | 
					  hostname: "localhost",
 | 
				
			||||||
 | 
					  show_sensitive_data_on_connection_error: true,
 | 
				
			||||||
 | 
					  pool_size: 10
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					smtp_relay = "<Your SMTP Relay Here>"
 | 
				
			||||||
 | 
					username = "<Your SMTP username here>"
 | 
				
			||||||
 | 
					password = "<Your SMTP password here>"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# configure mailer
 | 
				
			||||||
 | 
					config :ketbin, Ketbin.Mailer,
 | 
				
			||||||
 | 
					  adapter: Swoosh.Adapters.SMTP,
 | 
				
			||||||
 | 
					  relay: smtp_relay,
 | 
				
			||||||
 | 
					  username: username,
 | 
				
			||||||
 | 
					  password: password,
 | 
				
			||||||
 | 
					  tls: :always,
 | 
				
			||||||
 | 
					  auth: :always,
 | 
				
			||||||
 | 
					  port: 587
 | 
				
			||||||
@ -59,7 +59,9 @@ defmodule KetbinWeb.Router do
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    scope "/" do
 | 
					    scope "/" do
 | 
				
			||||||
      pipe_through :browser
 | 
					      pipe_through :browser
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      live_dashboard "/dashboard", metrics: KetbinWeb.Telemetry
 | 
					      live_dashboard "/dashboard", metrics: KetbinWeb.Telemetry
 | 
				
			||||||
 | 
					      forward "/mailbox", Plug.Swoosh.MailboxPreview
 | 
				
			||||||
    end
 | 
					    end
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user