diff --git a/CHANGELOG.md b/CHANGELOG.md
index 39daafcc..2e6c9a7c 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -7,6 +7,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
## Unreleased
### Modified
- migrate primary and foreign keys from ID to UUID
+- 500 error page
### Fixed
- pagy overflow bug
diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb
index dea2e66b..159f6f09 100644
--- a/app/controllers/application_controller.rb
+++ b/app/controllers/application_controller.rb
@@ -27,10 +27,10 @@ def not_found = page_not_found
private
def page_not_found
- render template: 'web/shared/404', status: :not_found, formats: [:html]
+ render template: 'web/errors/not_found', status: :not_found, formats: [:html]
end
def access_denied
- render template: 'web/shared/access', status: :forbidden, formats: [:html]
+ render template: 'web/errors/forbidden', status: :forbidden, formats: [:html]
end
end
diff --git a/app/controllers/web/errors_controller.rb b/app/controllers/web/errors_controller.rb
new file mode 100644
index 00000000..41d0c634
--- /dev/null
+++ b/app/controllers/web/errors_controller.rb
@@ -0,0 +1,9 @@
+# frozen_string_literal: true
+
+module Web
+ class ErrorsController < ApplicationController
+ skip_before_action :authenticate
+
+ def internal; end
+ end
+end
diff --git a/app/views/controllers/web/shared/access.html.erb b/app/views/controllers/web/errors/forbidden.html.erb
similarity index 100%
rename from app/views/controllers/web/shared/access.html.erb
rename to app/views/controllers/web/errors/forbidden.html.erb
diff --git a/app/views/controllers/web/errors/internal.html.erb b/app/views/controllers/web/errors/internal.html.erb
new file mode 100644
index 00000000..e1b836ca
--- /dev/null
+++ b/app/views/controllers/web/errors/internal.html.erb
@@ -0,0 +1,8 @@
+<%= render PageWrappers::UserComponent.new(current_user: current_user) do %>
+
+
+
Internal error occured
+
We will check debug info and fix the problem
+
+
+<% end %>
diff --git a/app/views/controllers/web/shared/404.html.erb b/app/views/controllers/web/errors/not_found.html.erb
similarity index 100%
rename from app/views/controllers/web/shared/404.html.erb
rename to app/views/controllers/web/errors/not_found.html.erb
diff --git a/config/application.rb b/config/application.rb
index 64eb5db0..8cebf819 100644
--- a/config/application.rb
+++ b/config/application.rb
@@ -27,6 +27,8 @@ class Application < Rails::Application
# Initialize configuration defaults for originally generated Rails version.
config.load_defaults 7.1
+ config.exceptions_app = routes
+
config.middleware.use Rack::Deflater
# Rack::Brotli goes directly under Rack::Deflater, if Rack::Deflater is present
config.middleware.use Rack::Brotli
diff --git a/config/routes.rb b/config/routes.rb
index 268e833a..72a77c3d 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -106,5 +106,7 @@
get 'access_tokens', to: 'welcome#access_tokens'
end
+ get '/500', to: 'web/errors#internal'
+
root 'web/welcome#index'
end
diff --git a/spec/controllers/admin/companies/repositories_controller_spec.rb b/spec/controllers/admin/companies/repositories_controller_spec.rb
index 71de8244..f9d30cd6 100644
--- a/spec/controllers/admin/companies/repositories_controller_spec.rb
+++ b/spec/controllers/admin/companies/repositories_controller_spec.rb
@@ -12,7 +12,7 @@
it 'renders 404 page' do
do_request
- expect(response).to render_template 'shared/404'
+ expect(response).to render_template 'errors/not_found'
end
end
diff --git a/spec/controllers/admin/repositories_controller_spec.rb b/spec/controllers/admin/repositories_controller_spec.rb
index 6985b792..904e46f4 100644
--- a/spec/controllers/admin/repositories_controller_spec.rb
+++ b/spec/controllers/admin/repositories_controller_spec.rb
@@ -30,7 +30,7 @@ def do_request
context 'for unexisting repository' do
it 'does not destroy repository', :aggregate_failures do
expect { do_request }.not_to change(Repository, :count)
- expect(response).to render_template 'shared/404'
+ expect(response).to render_template 'errors/not_found'
end
end
diff --git a/spec/controllers/web/companies/configurations_controller_spec.rb b/spec/controllers/web/companies/configurations_controller_spec.rb
index 053f0670..67425116 100644
--- a/spec/controllers/web/companies/configurations_controller_spec.rb
+++ b/spec/controllers/web/companies/configurations_controller_spec.rb
@@ -20,7 +20,7 @@
it 'renders 404 page' do
do_request
- expect(response).to render_template 'shared/404'
+ expect(response).to render_template 'errors/not_found'
end
end
@@ -28,7 +28,7 @@
it 'renders access page' do
get :edit, params: { company_id: company.id, locale: 'en' }
- expect(response).to render_template 'shared/access'
+ expect(response).to render_template 'errors/forbidden'
end
end
@@ -42,7 +42,7 @@
it 'renders access page' do
get :edit, params: { company_id: company.id, locale: 'en' }
- expect(response).to render_template 'shared/access'
+ expect(response).to render_template 'errors/forbidden'
end
end
diff --git a/spec/controllers/web/companies/repositories_controller_spec.rb b/spec/controllers/web/companies/repositories_controller_spec.rb
index 5177fd40..b9698782 100644
--- a/spec/controllers/web/companies/repositories_controller_spec.rb
+++ b/spec/controllers/web/companies/repositories_controller_spec.rb
@@ -13,7 +13,7 @@
it 'renders access denied' do
do_request
- expect(response).to render_template 'shared/404'
+ expect(response).to render_template 'errors/not_found'
end
end
diff --git a/spec/controllers/web/companies_controller_spec.rb b/spec/controllers/web/companies_controller_spec.rb
index 6d858eca..07b9e483 100644
--- a/spec/controllers/web/companies_controller_spec.rb
+++ b/spec/controllers/web/companies_controller_spec.rb
@@ -46,7 +46,7 @@ def do_request
it 'renders 404 page' do
do_request
- expect(response).to render_template 'shared/404'
+ expect(response).to render_template 'errors/not_found'
end
end
@@ -54,7 +54,7 @@ def do_request
it 'renders 404 page' do
delete :destroy, params: { id: company.id, locale: 'en' }
- expect(response).to render_template 'shared/404'
+ expect(response).to render_template 'errors/not_found'
end
end
diff --git a/spec/controllers/web/repositories_controller_spec.rb b/spec/controllers/web/repositories_controller_spec.rb
index 62bb73ab..9c1b34c7 100644
--- a/spec/controllers/web/repositories_controller_spec.rb
+++ b/spec/controllers/web/repositories_controller_spec.rb
@@ -48,7 +48,7 @@ def do_request
it 'renders 404 page' do
do_request
- expect(response).to render_template 'shared/404'
+ expect(response).to render_template 'errors/not_found'
end
end
@@ -56,7 +56,7 @@ def do_request
it 'renders 404 page' do
delete :destroy, params: { id: repository.id, locale: 'en' }
- expect(response).to render_template 'shared/404'
+ expect(response).to render_template 'errors/not_found'
end
end
diff --git a/spec/support/shared/required_admin_auth.rb b/spec/support/shared/required_admin_auth.rb
index 98019fee..9cd65b50 100644
--- a/spec/support/shared/required_admin_auth.rb
+++ b/spec/support/shared/required_admin_auth.rb
@@ -7,7 +7,7 @@
it 'render shared error' do
do_request
- expect(response).to render_template 'web/shared/access'
+ expect(response).to render_template 'web/errors/forbidden'
end
end
end