From a39bdf689f4550ae1ccf152e2f00e199432c43a7 Mon Sep 17 00:00:00 2001
From: nacchan
Date: Tue, 10 Jun 2025 12:23:00 +0900
Subject: [PATCH 01/20] =?UTF-8?q?Rambulance=20=E3=81=AE=E5=B0=8E=E5=85=A5?=
=?UTF-8?q?=E3=81=A8=E5=88=9D=E6=9C=9F=E8=A8=AD=E5=AE=9A=E3=82=92=E8=BF=BD?=
=?UTF-8?q?=E5=8A=A0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
config/application.rb | 4 ++++
config/routes.rb | 1 +
2 files changed, 5 insertions(+)
diff --git a/config/application.rb b/config/application.rb
index 20e502e1..d3839b0e 100644
--- a/config/application.rb
+++ b/config/application.rb
@@ -11,6 +11,10 @@ class Application < Rails::Application
# Initialize configuration defaults for originally generated Rails version.
config.load_defaults 8.0
+ # Rambulance が提供するエラー用ルーティングを使うようにする
+ config.exceptions_app = self.routes
+
+
# Please, add to the `ignore` list any other `lib` subdirectories that do
# not contain `.rb` files, or that should not be reloaded or eager loaded.
# Common ones are `templates`, `generators`, or `middleware`, for example.
diff --git a/config/routes.rb b/config/routes.rb
index a999d47c..b7fa93ac 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -105,4 +105,5 @@
# Check development sent emails
mount LetterOpenerWeb::Engine, at: "/letter_opener" if Rails.env.development?
+ mount Rambulance::Engine => "/"
end
From a4ce6e1b6fd2320b4cf5d307cbbf20d3c696ff7f Mon Sep 17 00:00:00 2001
From: nacchan
Date: Tue, 10 Jun 2025 12:24:06 +0900
Subject: [PATCH 02/20] =?UTF-8?q?ErrorsController=20=E3=82=92=E6=96=B0?=
=?UTF-8?q?=E8=A6=8F=E4=BD=9C=E6=88=90=EF=BC=88404/500/422=E7=94=A8?=
=?UTF-8?q?=EF=BC=89?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
app/controllers/errors_controller.rb | 15 +++++++++++++++
1 file changed, 15 insertions(+)
create mode 100644 app/controllers/errors_controller.rb
diff --git a/app/controllers/errors_controller.rb b/app/controllers/errors_controller.rb
new file mode 100644
index 00000000..323baff2
--- /dev/null
+++ b/app/controllers/errors_controller.rb
@@ -0,0 +1,15 @@
+class ErrorsController < ApplicationController
+ layout 'application' # エラー画面にも通常のアプリと同じレイアウトを適用
+
+ def not_found
+ render status: 404 # このアクションでは app/views/errors/not_found.html.erb が使用されます
+ end
+
+ def internal_server_error
+ render status: 500 # このアクションでは app/views/errors/internal_server_error.html.erb が使用されます
+ end
+
+ def unprocessable_entity
+ render status: 422 # このアクションでは app/views/errors/unprocessable_entity.html.erb が使用されます
+ end
+end
From 548d72ac6cb86ea8c11e83d78984684875543cce Mon Sep 17 00:00:00 2001
From: nacchan
Date: Tue, 10 Jun 2025 12:24:24 +0900
Subject: [PATCH 03/20] =?UTF-8?q?500=20Internal=20Server=20Error=20?=
=?UTF-8?q?=E3=83=9A=E3=83=BC=E3=82=B8=E3=82=92=E8=BF=BD=E5=8A=A0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
app/views/errors/internal_server_error.html.erb | 14 ++++++++++++++
1 file changed, 14 insertions(+)
create mode 100644 app/views/errors/internal_server_error.html.erb
diff --git a/app/views/errors/internal_server_error.html.erb b/app/views/errors/internal_server_error.html.erb
new file mode 100644
index 00000000..2b96381d
--- /dev/null
+++ b/app/views/errors/internal_server_error.html.erb
@@ -0,0 +1,14 @@
+<% provide(:title, "予期しないエラーが発生しました 😵💫") %>
+<% provide(:desc, "申し訳ありません。サーバーで問題が発生しています。") %>
+
+
+
+
CoderDojo Japan
+
子どものためのプログラミング道場
+
+
+
+
+ 予期しないエラーが発生しました 😵💫
+ 現在、問題を調査しています。しばらくしてからもう一度お試しください。
+
From 7c19b4082c90aefd89f821f6ef585318fb236325 Mon Sep 17 00:00:00 2001
From: nacchan
Date: Tue, 10 Jun 2025 12:24:44 +0900
Subject: [PATCH 04/20] =?UTF-8?q?422=20Unprocessable=20Entity=20=E3=83=9A?=
=?UTF-8?q?=E3=83=BC=E3=82=B8=E3=82=92=E8=BF=BD=E5=8A=A0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../errors/unprocessable_entity.html.erb | 47 +++++++++++++++++++
1 file changed, 47 insertions(+)
create mode 100644 app/views/errors/unprocessable_entity.html.erb
diff --git a/app/views/errors/unprocessable_entity.html.erb b/app/views/errors/unprocessable_entity.html.erb
new file mode 100644
index 00000000..05aeb1fa
--- /dev/null
+++ b/app/views/errors/unprocessable_entity.html.erb
@@ -0,0 +1,47 @@
+<% provide(:title, "リクエストが処理できませんでした… 😢") %>
+<% provide(:desc, "入力内容に誤りがあるか、リクエストが正しく送信されなかった可能性があります。") %>
+
+
+
+
CoderDojo Japan
+
子どものためのプログラミング道場
+
+
+
+
+
+ リクエストが処理できませんでした… 😢
+
+
+ 入力内容に誤りがあるか、リクエストが正しく送信されなかった可能性があります。
+
+
+
+ フィードバックなどあれば info@coderdojo.jp にメールしていただくか、
+
+ もしくは
+ GitHub Issue
+ に書いていただけると嬉しいです (>人< )✨
+
+
+
+
From a456487f2efa075dd4e3ae1e97fea2996ea6cf62 Mon Sep 17 00:00:00 2001
From: nacchan
Date: Tue, 10 Jun 2025 14:53:42 +0900
Subject: [PATCH 05/20] =?UTF-8?q?=E3=82=A8=E3=83=A9=E3=83=BC=E3=83=9A?=
=?UTF-8?q?=E3=83=BC=E3=82=B8=E5=85=B1=E9=80=9A=E3=81=AE=E3=83=98=E3=83=83?=
=?UTF-8?q?=E3=83=80=E3=83=BC=E9=83=A8=E5=88=86=E3=82=92=E3=83=91=E3=83=BC?=
=?UTF-8?q?=E3=82=B7=E3=83=A3=E3=83=AB=E5=8C=96?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
app/views/errors/_header.html.erb | 6 ++++++
app/views/errors/internal_server_error.html.erb | 7 +------
app/views/errors/not_found.html.erb | 7 +------
app/views/errors/unprocessable_entity.html.erb | 7 +------
4 files changed, 9 insertions(+), 18 deletions(-)
create mode 100644 app/views/errors/_header.html.erb
diff --git a/app/views/errors/_header.html.erb b/app/views/errors/_header.html.erb
new file mode 100644
index 00000000..f34cebc6
--- /dev/null
+++ b/app/views/errors/_header.html.erb
@@ -0,0 +1,6 @@
+
+
+
CoderDojo Japan
+
子どものためのプログラミング道場
+
+
\ No newline at end of file
diff --git a/app/views/errors/internal_server_error.html.erb b/app/views/errors/internal_server_error.html.erb
index 2b96381d..78c20097 100644
--- a/app/views/errors/internal_server_error.html.erb
+++ b/app/views/errors/internal_server_error.html.erb
@@ -1,12 +1,7 @@
<% provide(:title, "予期しないエラーが発生しました 😵💫") %>
<% provide(:desc, "申し訳ありません。サーバーで問題が発生しています。") %>
-
-
-
CoderDojo Japan
-
子どものためのプログラミング道場
-
-
+<%= render 'errors/header' %>
予期しないエラーが発生しました 😵💫
diff --git a/app/views/errors/not_found.html.erb b/app/views/errors/not_found.html.erb
index 2cd2898e..44fd826c 100644
--- a/app/views/errors/not_found.html.erb
+++ b/app/views/errors/not_found.html.erb
@@ -1,12 +1,7 @@
<% provide(:title, "ページが見つかりませんでした... 🥺💦") %>
<% provide(:desc, "ページが削除された可能性があります 🤔💭") %>
-
-
-
CoderDojo Japan
-
子どものためのプログラミング道場
-
-
+<%= render 'errors/header' %>
diff --git a/app/views/errors/unprocessable_entity.html.erb b/app/views/errors/unprocessable_entity.html.erb
index 05aeb1fa..694c76f0 100644
--- a/app/views/errors/unprocessable_entity.html.erb
+++ b/app/views/errors/unprocessable_entity.html.erb
@@ -1,12 +1,7 @@
<% provide(:title, "リクエストが処理できませんでした… 😢") %>
<% provide(:desc, "入力内容に誤りがあるか、リクエストが正しく送信されなかった可能性があります。") %>
-
-
-
CoderDojo Japan
-
子どものためのプログラミング道場
-
-
+<%= render 'errors/header' %>
From 44d493bc2ac1715b7bd249a1f8d4e647d46f31c4 Mon Sep 17 00:00:00 2001
From: nacchan
Date: Tue, 10 Jun 2025 16:05:01 +0900
Subject: [PATCH 06/20] =?UTF-8?q?=E5=85=B1=E9=80=9A=E3=83=91=E3=83=BC?=
=?UTF-8?q?=E3=82=B7=E3=83=A3=E3=83=AB=E8=BF=BD=E5=8A=A0=EF=BC=88=E3=83=95?=
=?UTF-8?q?=E3=82=A3=E3=83=BC=E3=83=89=E3=83=90=E3=83=83=E3=82=AF=E6=A1=88?=
=?UTF-8?q?=E5=86=85=E3=83=BBTwitter=E3=82=BF=E3=82=A4=E3=83=A0=E3=83=A9?=
=?UTF-8?q?=E3=82=A4=E3=83=B3=EF=BC=89=E2=80=BB500/422=E3=81=AF=E6=9C=AA?=
=?UTF-8?q?=E7=A2=BA=E8=AA=8D?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
app/views/errors/_feedback_notice.html.erb | 7 +++++
.../_footer_links_and_timeline.html.erb | 20 +++++++++++++
app/views/errors/_header.html.erb | 2 +-
.../errors/internal_server_error.html.erb | 12 ++++++--
app/views/errors/not_found.html.erb | 20 ++-----------
.../errors/unprocessable_entity.html.erb | 29 ++-----------------
6 files changed, 42 insertions(+), 48 deletions(-)
create mode 100644 app/views/errors/_feedback_notice.html.erb
create mode 100644 app/views/errors/_footer_links_and_timeline.html.erb
diff --git a/app/views/errors/_feedback_notice.html.erb b/app/views/errors/_feedback_notice.html.erb
new file mode 100644
index 00000000..07623572
--- /dev/null
+++ b/app/views/errors/_feedback_notice.html.erb
@@ -0,0 +1,7 @@
+
+ フィードバックなどあれば info@coderdojo.jp にメールしていただくか、
+
+ もしくは
+ GitHub Issue
+ に書いていただけると嬉しいです (>人< )✨
+
diff --git a/app/views/errors/_footer_links_and_timeline.html.erb b/app/views/errors/_footer_links_and_timeline.html.erb
new file mode 100644
index 00000000..c3d141a9
--- /dev/null
+++ b/app/views/errors/_footer_links_and_timeline.html.erb
@@ -0,0 +1,20 @@
+
diff --git a/app/views/errors/_header.html.erb b/app/views/errors/_header.html.erb
index f34cebc6..e06be800 100644
--- a/app/views/errors/_header.html.erb
+++ b/app/views/errors/_header.html.erb
@@ -3,4 +3,4 @@
CoderDojo Japan
子どものためのプログラミング道場
-
\ No newline at end of file
+
diff --git a/app/views/errors/internal_server_error.html.erb b/app/views/errors/internal_server_error.html.erb
index 78c20097..842dcbdb 100644
--- a/app/views/errors/internal_server_error.html.erb
+++ b/app/views/errors/internal_server_error.html.erb
@@ -4,6 +4,14 @@
<%= render 'errors/header' %>
- 予期しないエラーが発生しました 😵💫
- 現在、問題を調査しています。しばらくしてからもう一度お試しください。
+
+ 予期しないエラーが発生しました 😵💫
+
+
+ 現在、問題を調査しています。しばらくしてからもう一度お試しください。
+
+
+ <%= render 'errors/feedback_notice' %>
+
+<%= render 'errors/footer_links_and_timeline' %>
diff --git a/app/views/errors/not_found.html.erb b/app/views/errors/not_found.html.erb
index 44fd826c..fb74fa6f 100644
--- a/app/views/errors/not_found.html.erb
+++ b/app/views/errors/not_found.html.erb
@@ -11,23 +11,7 @@
ページが削除された可能性があります 🤔💭
-
- フィードバックなどあれば info@coderdojo.jp にメールしていただくか、
-
- もしくは
- GitHub Issue
- に書いていただけると嬉しいです (>人< )✨
-
+ <%= render 'errors/feedback_notice' %>
-
+<%= render 'errors/footer_links_and_timeline' %>
diff --git a/app/views/errors/unprocessable_entity.html.erb b/app/views/errors/unprocessable_entity.html.erb
index 694c76f0..c4e84db9 100644
--- a/app/views/errors/unprocessable_entity.html.erb
+++ b/app/views/errors/unprocessable_entity.html.erb
@@ -11,32 +11,7 @@
入力内容に誤りがあるか、リクエストが正しく送信されなかった可能性があります。
-
- フィードバックなどあれば info@coderdojo.jp にメールしていただくか、
-
- もしくは
- GitHub Issue
- に書いていただけると嬉しいです (>人< )✨
-
+ <%= render 'errors/feedback_notice' %>
-
+<%= render 'errors/footer_links_and_timeline' %>
From 677d005b1665f966920956d4ea4552da42225275 Mon Sep 17 00:00:00 2001
From: nacchan
Date: Wed, 11 Jun 2025 12:23:17 +0900
Subject: [PATCH 07/20] =?UTF-8?q?500/422=E3=82=A8=E3=83=A9=E3=83=BC?=
=?UTF-8?q?=E3=83=9A=E3=83=BC=E3=82=B8=E3=81=AE=E8=A1=A8=E7=A4=BA=E3=82=82?=
=?UTF-8?q?=E7=A2=BA=E8=AA=8D=E6=B8=88=E3=81=BF=E3=81=AB=E5=A4=89=E6=9B=B4?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
From 62ad7c3445ef6fd09c116baf7c25690bf2fbaae0 Mon Sep 17 00:00:00 2001
From: nacchan
Date: Wed, 11 Jun 2025 15:33:56 +0900
Subject: [PATCH 08/20] =?UTF-8?q?=E3=82=A8=E3=83=A9=E3=83=BC=E3=83=9A?=
=?UTF-8?q?=E3=83=BC=E3=82=B8=EF=BC=88404/500/422=EF=BC=89=E3=81=AE?=
=?UTF-8?q?=E3=83=AA=E3=82=AF=E3=82=A8=E3=82=B9=E3=83=88=E3=83=86=E3=82=B9?=
=?UTF-8?q?=E3=83=88=E3=82=92=E8=BF=BD=E5=8A=A0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
config/routes.rb | 6 ++++++
spec/requests/errors_spec.rb | 17 +++++++++++++++--
2 files changed, 21 insertions(+), 2 deletions(-)
diff --git a/config/routes.rb b/config/routes.rb
index b7fa93ac..7189c912 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -106,4 +106,10 @@
# Check development sent emails
mount LetterOpenerWeb::Engine, at: "/letter_opener" if Rails.env.development?
mount Rambulance::Engine => "/"
+
+ if Rails.env.development? || Rails.env.test?
+ get "/trigger_500", to: ->(env) { raise "Triggering 500 error" }
+ get "/trigger_422", to: "errors#unprocessable_entity"
+ end
+
end
diff --git a/spec/requests/errors_spec.rb b/spec/requests/errors_spec.rb
index d3286064..987cd05e 100644
--- a/spec/requests/errors_spec.rb
+++ b/spec/requests/errors_spec.rb
@@ -4,12 +4,25 @@
include Rambulance::TestHelper
describe "Error requests" do
- it 'should render a corresponding error page' do
+ it 'renders the 404 error page' do
with_exceptions_app do
get '/does_not_exist'
end
+ expect(response.status).to eq(404)
+ end
- assert_equal 404, response.status
+ it 'renders the 422 error page' do
+ with_exceptions_app do
+ get '/trigger_422'
+ end
+ expect(response.status).to eq(422)
+ end
+
+ it 'renders the 500 error page' do
+ with_exceptions_app do
+ get '/trigger_500'
+ end
+ expect(response.status).to eq(500)
end
end
end
From 4b52ff74cafeb3412c8809941d37a15bf8736643 Mon Sep 17 00:00:00 2001
From: nacchan
Date: Thu, 12 Jun 2025 07:50:14 +0900
Subject: [PATCH 09/20] =?UTF-8?q?ErrorsController=E3=81=AE=E4=B8=8D?=
=?UTF-8?q?=E8=A6=81=E3=81=AA=E3=82=B3=E3=83=A1=E3=83=B3=E3=83=88=E3=82=92?=
=?UTF-8?q?=E5=89=8A=E9=99=A4?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
app/controllers/errors_controller.rb | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/app/controllers/errors_controller.rb b/app/controllers/errors_controller.rb
index 323baff2..dde9a422 100644
--- a/app/controllers/errors_controller.rb
+++ b/app/controllers/errors_controller.rb
@@ -1,5 +1,5 @@
class ErrorsController < ApplicationController
- layout 'application' # エラー画面にも通常のアプリと同じレイアウトを適用
+ layout 'application'
def not_found
render status: 404 # このアクションでは app/views/errors/not_found.html.erb が使用されます
From 7e4737c6e9739812696784377e3b6f4c75729918 Mon Sep 17 00:00:00 2001
From: nacchan
Date: Thu, 12 Jun 2025 07:58:24 +0900
Subject: [PATCH 10/20] =?UTF-8?q?=E3=82=B3=E3=83=A1=E3=83=B3=E3=83=88?=
=?UTF-8?q?=E4=BD=8D=E7=BD=AE=E3=82=92=E4=B8=8A=E3=81=AB=E7=A7=BB=E5=8B=95?=
=?UTF-8?q?=E3=81=97=E3=81=A6=E7=B5=B1=E4=B8=80?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
app/controllers/errors_controller.rb | 9 ++++++---
1 file changed, 6 insertions(+), 3 deletions(-)
diff --git a/app/controllers/errors_controller.rb b/app/controllers/errors_controller.rb
index dde9a422..8251dce8 100644
--- a/app/controllers/errors_controller.rb
+++ b/app/controllers/errors_controller.rb
@@ -2,14 +2,17 @@ class ErrorsController < ApplicationController
layout 'application'
def not_found
- render status: 404 # このアクションでは app/views/errors/not_found.html.erb が使用されます
+ # このアクションでは app/views/errors/not_found.html.erb が使用されます
+ render status: 404
end
def internal_server_error
- render status: 500 # このアクションでは app/views/errors/internal_server_error.html.erb が使用されます
+ # このアクションでは app/views/errors/internal_server_error.html.erb が使用されます
+ render status: 500
end
def unprocessable_entity
- render status: 422 # このアクションでは app/views/errors/unprocessable_entity.html.erb が使用されます
+ # このアクションでは app/views/errors/unprocessable_entity.html.erb が使用されます
+ render status: 422
end
end
From 9dac37e85a51d33c99890e7b03007cf3ddde100d Mon Sep 17 00:00:00 2001
From: nacchan
Date: Thu, 12 Jun 2025 08:46:46 +0900
Subject: [PATCH 11/20] =?UTF-8?q?errors/header=E3=82=92=E3=82=A4=E3=83=B3?=
=?UTF-8?q?=E3=83=A9=E3=82=A4=E3=83=B3=E5=8C=96=E3=81=97=E3=80=81partial?=
=?UTF-8?q?=E3=82=92=E5=89=8A=E9=99=A4?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
app/views/errors/_header.html.erb | 6 ------
app/views/errors/internal_server_error.html.erb | 7 ++++++-
app/views/errors/not_found.html.erb | 7 ++++++-
app/views/errors/unprocessable_entity.html.erb | 7 ++++++-
4 files changed, 18 insertions(+), 9 deletions(-)
delete mode 100644 app/views/errors/_header.html.erb
diff --git a/app/views/errors/_header.html.erb b/app/views/errors/_header.html.erb
deleted file mode 100644
index e06be800..00000000
--- a/app/views/errors/_header.html.erb
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
CoderDojo Japan
-
子どものためのプログラミング道場
-
-
diff --git a/app/views/errors/internal_server_error.html.erb b/app/views/errors/internal_server_error.html.erb
index 842dcbdb..7fb9a41d 100644
--- a/app/views/errors/internal_server_error.html.erb
+++ b/app/views/errors/internal_server_error.html.erb
@@ -1,7 +1,12 @@
<% provide(:title, "予期しないエラーが発生しました 😵💫") %>
<% provide(:desc, "申し訳ありません。サーバーで問題が発生しています。") %>
-<%= render 'errors/header' %>
+
+
+
CoderDojo Japan
+
子どものためのプログラミング道場
+
+
diff --git a/app/views/errors/not_found.html.erb b/app/views/errors/not_found.html.erb
index fb74fa6f..03dab2ae 100644
--- a/app/views/errors/not_found.html.erb
+++ b/app/views/errors/not_found.html.erb
@@ -1,7 +1,12 @@
<% provide(:title, "ページが見つかりませんでした... 🥺💦") %>
<% provide(:desc, "ページが削除された可能性があります 🤔💭") %>
-<%= render 'errors/header' %>
+
+
+
CoderDojo Japan
+
子どものためのプログラミング道場
+
+
diff --git a/app/views/errors/unprocessable_entity.html.erb b/app/views/errors/unprocessable_entity.html.erb
index c4e84db9..a8626ddb 100644
--- a/app/views/errors/unprocessable_entity.html.erb
+++ b/app/views/errors/unprocessable_entity.html.erb
@@ -1,7 +1,12 @@
<% provide(:title, "リクエストが処理できませんでした… 😢") %>
<% provide(:desc, "入力内容に誤りがあるか、リクエストが正しく送信されなかった可能性があります。") %>
-<%= render 'errors/header' %>
+
+
+
CoderDojo Japan
+
子どものためのプログラミング道場
+
+
From c0d871a1101d4ce648939f6a665f752ffdd424e5 Mon Sep 17 00:00:00 2001
From: nacchan
Date: Thu, 12 Jun 2025 09:06:46 +0900
Subject: [PATCH 12/20] =?UTF-8?q?errors/feedback=5Fnotice=E3=82=92?=
=?UTF-8?q?=E3=82=A4=E3=83=B3=E3=83=A9=E3=82=A4=E3=83=B3=E5=8C=96=E3=81=97?=
=?UTF-8?q?=E3=80=81partial=E3=82=92=E5=89=8A=E9=99=A4?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
app/views/errors/_feedback_notice.html.erb | 7 -------
app/views/errors/internal_server_error.html.erb | 8 +++++++-
app/views/errors/not_found.html.erb | 8 +++++++-
app/views/errors/unprocessable_entity.html.erb | 8 +++++++-
4 files changed, 21 insertions(+), 10 deletions(-)
delete mode 100644 app/views/errors/_feedback_notice.html.erb
diff --git a/app/views/errors/_feedback_notice.html.erb b/app/views/errors/_feedback_notice.html.erb
deleted file mode 100644
index 07623572..00000000
--- a/app/views/errors/_feedback_notice.html.erb
+++ /dev/null
@@ -1,7 +0,0 @@
-
- フィードバックなどあれば info@coderdojo.jp にメールしていただくか、
-
- もしくは
- GitHub Issue
- に書いていただけると嬉しいです (>人< )✨
-
diff --git a/app/views/errors/internal_server_error.html.erb b/app/views/errors/internal_server_error.html.erb
index 7fb9a41d..4be7c1b4 100644
--- a/app/views/errors/internal_server_error.html.erb
+++ b/app/views/errors/internal_server_error.html.erb
@@ -16,7 +16,13 @@
現在、問題を調査しています。しばらくしてからもう一度お試しください。
- <%= render 'errors/feedback_notice' %>
+
+ フィードバックなどあれば info@coderdojo.jp にメールしていただくか、
+
+ もしくは
+ GitHub Issue
+ に書いていただけると嬉しいです (>人< )✨
+
<%= render 'errors/footer_links_and_timeline' %>
diff --git a/app/views/errors/not_found.html.erb b/app/views/errors/not_found.html.erb
index 03dab2ae..1d4dd298 100644
--- a/app/views/errors/not_found.html.erb
+++ b/app/views/errors/not_found.html.erb
@@ -16,7 +16,13 @@
ページが削除された可能性があります 🤔💭
- <%= render 'errors/feedback_notice' %>
+
+ フィードバックなどあれば info@coderdojo.jp にメールしていただくか、
+
+ もしくは
+ GitHub Issue
+ に書いていただけると嬉しいです (>人< )✨
+
<%= render 'errors/footer_links_and_timeline' %>
diff --git a/app/views/errors/unprocessable_entity.html.erb b/app/views/errors/unprocessable_entity.html.erb
index a8626ddb..b1b9da76 100644
--- a/app/views/errors/unprocessable_entity.html.erb
+++ b/app/views/errors/unprocessable_entity.html.erb
@@ -16,7 +16,13 @@
入力内容に誤りがあるか、リクエストが正しく送信されなかった可能性があります。
- <%= render 'errors/feedback_notice' %>
+
+ フィードバックなどあれば info@coderdojo.jp にメールしていただくか、
+
+ もしくは
+ GitHub Issue
+ に書いていただけると嬉しいです (>人< )✨
+
<%= render 'errors/footer_links_and_timeline' %>
From 092c3dd8b3189c4ed0468053ea4a3d15a92c5eb1 Mon Sep 17 00:00:00 2001
From: nacchan
Date: Thu, 12 Jun 2025 09:30:05 +0900
Subject: [PATCH 13/20] =?UTF-8?q?=E5=85=B1=E9=80=9A=E6=96=87=E8=A8=80?=
=?UTF-8?q?=E3=81=AE=E8=A1=A8=E7=A4=BA=E7=A2=BA=E8=AA=8D=E3=83=86=E3=82=B9?=
=?UTF-8?q?=E3=83=88=E3=82=92requestspec=E3=81=AB=E8=BF=BD=E5=8A=A0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
spec/requests/errors_spec.rb | 3 +++
1 file changed, 3 insertions(+)
diff --git a/spec/requests/errors_spec.rb b/spec/requests/errors_spec.rb
index 987cd05e..9b568327 100644
--- a/spec/requests/errors_spec.rb
+++ b/spec/requests/errors_spec.rb
@@ -9,6 +9,7 @@
get '/does_not_exist'
end
expect(response.status).to eq(404)
+ expect(response.body).to include("子どものためのプログラミング道場")
end
it 'renders the 422 error page' do
@@ -16,6 +17,7 @@
get '/trigger_422'
end
expect(response.status).to eq(422)
+ expect(response.body).to include("子どものためのプログラミング道場")
end
it 'renders the 500 error page' do
@@ -23,6 +25,7 @@
get '/trigger_500'
end
expect(response.status).to eq(500)
+ expect(response.body).to include("子どものためのプログラミング道場")
end
end
end
From 8e7f468ee5e9570bf2c0db366c1e0f8038d89755 Mon Sep 17 00:00:00 2001
From: nacchan
Date: Mon, 16 Jun 2025 09:41:17 +0900
Subject: [PATCH 14/20] =?UTF-8?q?refactor:=20404=E3=83=BB500=E3=83=BB422?=
=?UTF-8?q?=20=E3=82=A8=E3=83=A9=E3=83=BC=E3=83=9A=E3=83=BC=E3=82=B8?=
=?UTF-8?q?=E3=81=AE=E3=83=AB=E3=83=BC=E3=83=86=E3=82=A3=E3=83=B3=E3=82=B0?=
=?UTF-8?q?=E3=82=92=E4=B8=80=E5=85=83=E5=8C=96?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
config/routes.rb | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/config/routes.rb b/config/routes.rb
index 7189c912..7030c283 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -107,6 +107,11 @@
mount LetterOpenerWeb::Engine, at: "/letter_opener" if Rails.env.development?
mount Rambulance::Engine => "/"
+ Rails.application.routes.draw do
+ %w(404 500 422).each do |code|
+ match code, to: "errors#show", via: :all, defaults: { status_code: code }
+ end
+
if Rails.env.development? || Rails.env.test?
get "/trigger_500", to: ->(env) { raise "Triggering 500 error" }
get "/trigger_422", to: "errors#unprocessable_entity"
From 0103961d75f029df0a57d0bc70408c3da8e2d8e5 Mon Sep 17 00:00:00 2001
From: nacchan
Date: Mon, 16 Jun 2025 10:23:12 +0900
Subject: [PATCH 15/20] =?UTF-8?q?refactor:=20ErrorsController=20=E3=82=92?=
=?UTF-8?q?=20show=20=E3=82=A2=E3=82=AF=E3=82=B7=E3=83=A7=E3=83=B3?=
=?UTF-8?q?=E3=81=AB=E9=9B=86=E7=B4=84=E3=81=97=E6=97=A7=E3=82=A2=E3=82=AF?=
=?UTF-8?q?=E3=82=B7=E3=83=A7=E3=83=B3=E3=82=92=E5=89=8A=E9=99=A4?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
app/controllers/errors_controller.rb | 34 ++++++++++++++++++----------
1 file changed, 22 insertions(+), 12 deletions(-)
diff --git a/app/controllers/errors_controller.rb b/app/controllers/errors_controller.rb
index 8251dce8..d4e41f48 100644
--- a/app/controllers/errors_controller.rb
+++ b/app/controllers/errors_controller.rb
@@ -1,18 +1,28 @@
class ErrorsController < ApplicationController
- layout 'application'
+ before_action :set_error_message
- def not_found
- # このアクションでは app/views/errors/not_found.html.erb が使用されます
- render status: 404
+ def show
+ render :show, status: @status_code
end
- def internal_server_error
- # このアクションでは app/views/errors/internal_server_error.html.erb が使用されます
- render status: 500
- end
+ private
- def unprocessable_entity
- # このアクションでは app/views/errors/unprocessable_entity.html.erb が使用されます
- render status: 422
- end
+ def set_error_message
+ @status_code = params[:status_code].to_i
+
+ case @status_code
+ when 404
+ @title = "ページが見つかりませんでした... 🥺💦"
+ @desc = "ページが削除された可能性があります 🤔💭"
+ when 422
+ @title = "リクエストが処理できませんでした… 😢"
+ @desc = "入力内容に誤りがあるか、リクエストが正しく送信されなかった可能性があります。"
+ when 500
+ @title = "予期しないエラーが発生しました 😵💫"
+ @desc = "申し訳ありません。サーバーで問題が発生しています。"
+ else
+ @title = "予期せぬエラーが発生しました…😵"
+ @desc = "しばらく経ってから再度お試しください。"
+ end
+ end
end
From 21dbe7bda490d4a0c40fe55b98866b2c08af4ed7 Mon Sep 17 00:00:00 2001
From: nacchan
Date: Mon, 16 Jun 2025 10:38:59 +0900
Subject: [PATCH 16/20] =?UTF-8?q?refactor:=20=E3=82=A8=E3=83=A9=E3=83=BC?=
=?UTF-8?q?=E3=83=9A=E3=83=BC=E3=82=B8=E3=81=AEshow.html=E3=82=92=E6=96=B0?=
=?UTF-8?q?=E8=A6=8F=E4=BD=9C=E6=88=90=E3=81=97footer=5Flinks=5Fand=5Ftime?=
=?UTF-8?q?line=E3=83=91=E3=83=BC=E3=82=B7=E3=83=A3=E3=83=AB=E3=82=92?=
=?UTF-8?q?=E3=82=A4=E3=83=B3=E3=83=A9=E3=82=A4=E3=83=B3=E5=8C=96?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
app/views/errors/show.html.erb | 49 ++++++++++++++++++++++++++++++++++
1 file changed, 49 insertions(+)
create mode 100644 app/views/errors/show.html.erb
diff --git a/app/views/errors/show.html.erb b/app/views/errors/show.html.erb
new file mode 100644
index 00000000..48437e6b
--- /dev/null
+++ b/app/views/errors/show.html.erb
@@ -0,0 +1,49 @@
+<% provide(:title, @title) %>
+<% provide(:desc, @desc) %>
+
+
+
+
CoderDojo Japan
+
子どものためのプログラミング道場
+
+
+
+
+ <%= @title %>
+
+ <%= @desc %>
+
+
+
+ フィードバックなどあれば info@coderdojo.jp にメールしていただくか、
+
+ もしくは
+
+ GitHub Issue
+
+ に書いていただけると嬉しいです (>人< )✨
+
+
+
+
From ee6d1de5280af576d30de03dab50ca6d6800553f Mon Sep 17 00:00:00 2001
From: nacchan
Date: Mon, 16 Jun 2025 10:46:25 +0900
Subject: [PATCH 17/20] =?UTF-8?q?refactor:=E4=B8=8D=E8=A6=81=E3=81=AB?=
=?UTF-8?q?=E3=81=AA=E3=81=A3=E3=81=9F=E6=97=A7=E3=82=A8=E3=83=A9=E3=83=BC?=
=?UTF-8?q?=E3=83=93=E3=83=A5=E3=83=BC=E3=81=A8footer=E3=83=91=E3=83=BC?=
=?UTF-8?q?=E3=82=B7=E3=83=A3=E3=83=AB=E3=82=92=E5=89=8A=E9=99=A4?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../_footer_links_and_timeline.html.erb | 20 -------------
.../errors/internal_server_error.html.erb | 28 -------------------
.../internal_server_error.json.jbuilder | 1 -
app/views/errors/not_found.html.erb | 28 -------------------
app/views/errors/not_found.json.jbuilder | 1 -
.../errors/unprocessable_entity.html.erb | 28 -------------------
.../errors/unprocessable_entity.json.jbuilder | 1 -
7 files changed, 107 deletions(-)
delete mode 100644 app/views/errors/_footer_links_and_timeline.html.erb
delete mode 100644 app/views/errors/internal_server_error.html.erb
delete mode 100644 app/views/errors/internal_server_error.json.jbuilder
delete mode 100644 app/views/errors/not_found.html.erb
delete mode 100644 app/views/errors/not_found.json.jbuilder
delete mode 100644 app/views/errors/unprocessable_entity.html.erb
delete mode 100644 app/views/errors/unprocessable_entity.json.jbuilder
diff --git a/app/views/errors/_footer_links_and_timeline.html.erb b/app/views/errors/_footer_links_and_timeline.html.erb
deleted file mode 100644
index c3d141a9..00000000
--- a/app/views/errors/_footer_links_and_timeline.html.erb
+++ /dev/null
@@ -1,20 +0,0 @@
-
diff --git a/app/views/errors/internal_server_error.html.erb b/app/views/errors/internal_server_error.html.erb
deleted file mode 100644
index 4be7c1b4..00000000
--- a/app/views/errors/internal_server_error.html.erb
+++ /dev/null
@@ -1,28 +0,0 @@
-<% provide(:title, "予期しないエラーが発生しました 😵💫") %>
-<% provide(:desc, "申し訳ありません。サーバーで問題が発生しています。") %>
-
-
-
-
CoderDojo Japan
-
子どものためのプログラミング道場
-
-
-
-
-
- 予期しないエラーが発生しました 😵💫
-
-
- 現在、問題を調査しています。しばらくしてからもう一度お試しください。
-
-
-
- フィードバックなどあれば info@coderdojo.jp にメールしていただくか、
-
- もしくは
- GitHub Issue
- に書いていただけると嬉しいです (>人< )✨
-
-
-
-<%= render 'errors/footer_links_and_timeline' %>
diff --git a/app/views/errors/internal_server_error.json.jbuilder b/app/views/errors/internal_server_error.json.jbuilder
deleted file mode 100644
index 46a32f67..00000000
--- a/app/views/errors/internal_server_error.json.jbuilder
+++ /dev/null
@@ -1 +0,0 @@
-json.error_message "We're sorry, but something went wrong."
diff --git a/app/views/errors/not_found.html.erb b/app/views/errors/not_found.html.erb
deleted file mode 100644
index 1d4dd298..00000000
--- a/app/views/errors/not_found.html.erb
+++ /dev/null
@@ -1,28 +0,0 @@
-<% provide(:title, "ページが見つかりませんでした... 🥺💦") %>
-<% provide(:desc, "ページが削除された可能性があります 🤔💭") %>
-
-
-
-
CoderDojo Japan
-
子どものためのプログラミング道場
-
-
-
-
-
- ページが見つかりませんでした... 🥺💦
-
-
- ページが削除された可能性があります 🤔💭
-
-
-
- フィードバックなどあれば info@coderdojo.jp にメールしていただくか、
-
- もしくは
- GitHub Issue
- に書いていただけると嬉しいです (>人< )✨
-
-
-
-<%= render 'errors/footer_links_and_timeline' %>
diff --git a/app/views/errors/not_found.json.jbuilder b/app/views/errors/not_found.json.jbuilder
deleted file mode 100644
index a323a2ab..00000000
--- a/app/views/errors/not_found.json.jbuilder
+++ /dev/null
@@ -1 +0,0 @@
-json.error_message "The page you were looking for doesn't exist. You may have mistyped the address or the page may have moved."
diff --git a/app/views/errors/unprocessable_entity.html.erb b/app/views/errors/unprocessable_entity.html.erb
deleted file mode 100644
index b1b9da76..00000000
--- a/app/views/errors/unprocessable_entity.html.erb
+++ /dev/null
@@ -1,28 +0,0 @@
-<% provide(:title, "リクエストが処理できませんでした… 😢") %>
-<% provide(:desc, "入力内容に誤りがあるか、リクエストが正しく送信されなかった可能性があります。") %>
-
-
-
-
CoderDojo Japan
-
子どものためのプログラミング道場
-
-
-
-
-
- リクエストが処理できませんでした… 😢
-
-
- 入力内容に誤りがあるか、リクエストが正しく送信されなかった可能性があります。
-
-
-
- フィードバックなどあれば info@coderdojo.jp にメールしていただくか、
-
- もしくは
- GitHub Issue
- に書いていただけると嬉しいです (>人< )✨
-
-
-
-<%= render 'errors/footer_links_and_timeline' %>
diff --git a/app/views/errors/unprocessable_entity.json.jbuilder b/app/views/errors/unprocessable_entity.json.jbuilder
deleted file mode 100644
index 81302a2a..00000000
--- a/app/views/errors/unprocessable_entity.json.jbuilder
+++ /dev/null
@@ -1 +0,0 @@
-json.error_message "The change you wanted was rejected. Maybe you tried to change something you didn't have access to."
From 4e8612b06926398bd6434024008812013223adeb Mon Sep 17 00:00:00 2001
From: nacchan
Date: Mon, 16 Jun 2025 10:59:55 +0900
Subject: [PATCH 18/20] =?UTF-8?q?refactor:=E9=87=8D=E8=A4=87=E3=81=97?=
=?UTF-8?q?=E3=81=9Froutes.draw=E3=83=96=E3=83=AD=E3=83=83=E3=82=AF?=
=?UTF-8?q?=E3=82=92=E5=89=8A=E9=99=A4=E3=81=97=E3=82=A8=E3=83=A9=E3=83=BC?=
=?UTF-8?q?=E3=83=AB=E3=83=BC=E3=83=86=E3=82=A3=E3=83=B3=E3=82=B0=E3=82=92?=
=?UTF-8?q?=E6=98=87=E9=A0=86(404=E2=86=92422=E2=86=92500)=E3=81=AB?=
=?UTF-8?q?=E5=A4=89=E6=9B=B4?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
config/routes.rb | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/config/routes.rb b/config/routes.rb
index 7030c283..76248f60 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -107,8 +107,8 @@
mount LetterOpenerWeb::Engine, at: "/letter_opener" if Rails.env.development?
mount Rambulance::Engine => "/"
- Rails.application.routes.draw do
- %w(404 500 422).each do |code|
+ # 全環境共通のエラーページルーティング
+ %w(404 422 500 ).each do |code|
match code, to: "errors#show", via: :all, defaults: { status_code: code }
end
From 22227442883e03c06582ab299ca8214abaf916ac Mon Sep 17 00:00:00 2001
From: nacchan
Date: Mon, 16 Jun 2025 13:24:28 +0900
Subject: [PATCH 19/20] =?UTF-8?q?refactor:application.rb=E3=81=8B=E3=82=89?=
=?UTF-8?q?exceptions=5Fapp=E8=A8=AD=E5=AE=9A=E3=82=92=E5=89=8A=E9=99=A4?=
=?UTF-8?q?=E3=81=97production/test=E7=92=B0=E5=A2=83=E3=81=B8=E7=A7=BB?=
=?UTF-8?q?=E8=A1=8C?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
- application.rbからを削除
- production.rbとtest.rbの直後にを追加
- 開発環境では従来のバックトレース表示()を維持し、ローカルデバッグ性を確保
- 本番/CI環境では例外を自前ルーティング(,,)へ委譲することで一貫したカスタムエラー画面を提供
---
config/application.rb | 4 ----
config/environments/production.rb | 3 +++
config/environments/test.rb | 3 +++
3 files changed, 6 insertions(+), 4 deletions(-)
diff --git a/config/application.rb b/config/application.rb
index d3839b0e..20e502e1 100644
--- a/config/application.rb
+++ b/config/application.rb
@@ -11,10 +11,6 @@ class Application < Rails::Application
# Initialize configuration defaults for originally generated Rails version.
config.load_defaults 8.0
- # Rambulance が提供するエラー用ルーティングを使うようにする
- config.exceptions_app = self.routes
-
-
# Please, add to the `ignore` list any other `lib` subdirectories that do
# not contain `.rb` files, or that should not be reloaded or eager loaded.
# Common ones are `templates`, `generators`, or `middleware`, for example.
diff --git a/config/environments/production.rb b/config/environments/production.rb
index ce610264..50c92b54 100644
--- a/config/environments/production.rb
+++ b/config/environments/production.rb
@@ -12,6 +12,9 @@
# Full error reports are disabled.
config.consider_all_requests_local = false
+ # 本番環境では例外を自前ルーティングへ
+ config.exceptions_app = self.routes
+
# Turn on fragment caching in view templates.
config.action_controller.perform_caching = true
diff --git a/config/environments/test.rb b/config/environments/test.rb
index e0f4be7d..09ca29a1 100644
--- a/config/environments/test.rb
+++ b/config/environments/test.rb
@@ -22,6 +22,9 @@
config.consider_all_requests_local = true
config.cache_store = :null_store
+ # テスト環境でも例外を自前ルーティングへ
+ config.exceptions_app = self.routes
+
# Render exception templates for rescuable exceptions and raise for other exceptions.
config.action_dispatch.show_exceptions = :rescuable
From 22c107b0d55d8b1dca3e203d77b7a868a4263177 Mon Sep 17 00:00:00 2001
From: nacchan
Date: Mon, 16 Jun 2025 15:28:33 +0900
Subject: [PATCH 20/20] =?UTF-8?q?feat:=20=E9=96=8B=E7=99=BA=EF=BC=8F?=
=?UTF-8?q?=E3=83=86=E3=82=B9=E3=83=88=E7=92=B0=E5=A2=83=E5=90=91=E3=81=91?=
=?UTF-8?q?=E3=81=AE=E3=82=A8=E3=83=A9=E3=83=BC=E7=A2=BA=E8=AA=8D=E3=83=AB?=
=?UTF-8?q?=E3=83=BC=E3=83=88=E3=82=92=E8=BF=BD=E5=8A=A0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
- 開発&テスト環境のみで 500/422 エラーを意図的に発生させる , ルートを追加
- Rambulance エンジンを開発/テスト環境でのみマウントして、ローカルでエラーページを確認しやすく設定
---
config/routes.rb | 9 +++++++--
1 file changed, 7 insertions(+), 2 deletions(-)
diff --git a/config/routes.rb b/config/routes.rb
index 76248f60..9341e2a5 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -112,9 +112,14 @@
match code, to: "errors#show", via: :all, defaults: { status_code: code }
end
+ # 開発/テスト環境のみの便利ルート ──
if Rails.env.development? || Rails.env.test?
- get "/trigger_500", to: ->(env) { raise "Triggering 500 error" }
- get "/trigger_422", to: "errors#unprocessable_entity"
+ # 500エラーを意図的に発生させる
+ get "/trigger_500", to: ->(env) { raise "Triggering 500 error" }
+ # 422エラーを意図的に返す
+ get "/trigger_422", to: "errors#unprocessable_entity"
+ # Rambulance を開発/テスト環境でのみマウント
+ mount Rambulance::Engine => "/"
end
end