Merge pull request 'Configure letter opener to read emails via web UI' (#150) from letter-opener into main
Some checks failed
Check usage of free licenses / check-licenses (push) Successful in 38s
Run unit tests / unit_tests (push) Has been cancelled
Build Nginx-based docker image / build-static-assets (push) Has been cancelled

Reviewed-on: #150
This commit is contained in:
bustikiller 2024-11-30 18:17:46 +00:00
commit 06f8039f40
8 changed files with 34 additions and 5 deletions

View File

@ -35,6 +35,7 @@ end
group :development do group :development do
gem 'rubocop' gem 'rubocop'
gem 'web-console' gem 'web-console'
gem 'letter_opener_web'
end end
gem 'chroma' gem 'chroma'

View File

@ -88,6 +88,8 @@ GEM
bootsnap (1.18.4) bootsnap (1.18.4)
msgpack (~> 1.2) msgpack (~> 1.2)
builder (3.3.0) builder (3.3.0)
childprocess (5.1.0)
logger (~> 1.5)
chroma (0.2.0) chroma (0.2.0)
coderay (1.1.3) coderay (1.1.3)
concurrent-ruby (1.3.4) concurrent-ruby (1.3.4)
@ -150,6 +152,16 @@ GEM
jsonapi-serializable (0.3.1) jsonapi-serializable (0.3.1)
jsonapi-renderer (~> 0.2.0) jsonapi-renderer (~> 0.2.0)
language_server-protocol (3.17.0.3) language_server-protocol (3.17.0.3)
launchy (3.0.1)
addressable (~> 2.8)
childprocess (~> 5.0)
letter_opener (1.10.0)
launchy (>= 2.2, < 4)
letter_opener_web (3.0.0)
actionmailer (>= 6.1)
letter_opener (~> 1.9)
railties (>= 6.1)
rexml
license_finder (7.2.1) license_finder (7.2.1)
bundler bundler
csv (~> 3.2) csv (~> 3.2)
@ -386,6 +398,7 @@ DEPENDENCIES
importmap-rails importmap-rails
jbuilder jbuilder
jsonapi-rails jsonapi-rails
letter_opener_web
license_finder license_finder
money money
pg (~> 1.1) pg (~> 1.1)

View File

@ -59,6 +59,10 @@ The backend, frontend and workers have hot-reloading enabled, so changes made to
Once all containers have started, visit http://libre-wedding-planner.app.localhost/dashboard to load the application. Once all containers have started, visit http://libre-wedding-planner.app.localhost/dashboard to load the application.
## Email delivery
In the development environment, real emails will not be sent. You can visit http://libre-wedding-planner.app.localhost/letter_opener/ to get a list of emails generated by the application.
## Testing ## Testing
Unit tests can be executed with Unit tests can be executed with

View File

@ -31,7 +31,7 @@ class ApplicationController < ActionController::Base
def development_swagger? def development_swagger?
Rails.env.test? || Rails.env.test? ||
Rails.env.development? && request.headers['referer'].include?('/api-docs/index.html') Rails.env.development? && request.headers['referer']&.include?('/api-docs/index.html')
end end
def set_csrf_cookie def set_csrf_cookie

View File

@ -7,7 +7,10 @@ class Users::ConfirmationsController < Devise::ConfirmationsController
def show def show
super do |resource| super do |resource|
if resource.errors.empty? if resource.errors.empty?
render json: resource, status: :ok respond_to do |format|
format.json { render json: resource, status: :ok }
format.any { redirect_to root_path }
end
else else
render json: { render json: {
message: 'Record invalid', message: 'Record invalid',

View File

@ -40,10 +40,10 @@ Rails.application.configure do
# Don't care if the mailer can't send. # Don't care if the mailer can't send.
config.action_mailer.raise_delivery_errors = false config.action_mailer.raise_delivery_errors = false
config.action_mailer.perform_caching = false config.action_mailer.perform_caching = false
config.action_mailer.default_url_options = { host: 'libre-wedding-planner.app.localhost/api' }
config.action_mailer.default_url_options = { host: 'libre-wedding-planner.app.localhost' } config.action_mailer.delivery_method = :letter_opener_web
config.action_mailer.perform_deliveries = true
# Print deprecation notices to the Rails logger. # Print deprecation notices to the Rails logger.
config.active_support.deprecation = :log config.active_support.deprecation = :log

View File

@ -1,6 +1,7 @@
# Copyright (C) 2024 Manuel Bustillo # Copyright (C) 2024 Manuel Bustillo
Rails.application.routes.draw do Rails.application.routes.draw do
mount LetterOpenerWeb::Engine, at: "/letter_opener" if Rails.env.development?
devise_for :users, skip: [:registration, :session, :confirmation] devise_for :users, skip: [:registration, :session, :confirmation]
devise_scope :user do devise_scope :user do
post 'users', to: 'users/registrations#create' post 'users', to: 'users/registrations#create'
@ -23,4 +24,6 @@ Rails.application.routes.draw do
resources :tables_arrangements, only: %i[index show] resources :tables_arrangements, only: %i[index show]
get 'up' => 'rails/health#show', as: :rails_health_check get 'up' => 'rails/health#show', as: :rails_health_check
root to: redirect('/dashboard')
end end

View File

@ -7,6 +7,11 @@ server {
proxy_set_header Host $http_host; proxy_set_header Host $http_host;
} }
location /letter_opener/ {
proxy_pass http://backend:3000/letter_opener/;
proxy_set_header Host $http_host;
}
location / { location / {
proxy_pass http://frontend:3000; proxy_pass http://frontend:3000;
proxy_set_header Host $http_host; proxy_set_header Host $http_host;