From df47258d40a770a8fd194503c4330806e0bbf813 Mon Sep 17 00:00:00 2001 From: Jasper Date: Thu, 9 Jan 2025 13:30:50 -0500 Subject: [PATCH] Form Testing --- examples/playbook-rails/Gemfile.lock | 1 + .../app/assets/stylesheets/application.scss | 12 +- .../app/assets/stylesheets/feedback_form.scss | 131 +++++ .../app/controllers/feedback_controller.rb | 25 + .../playbook-rails/app/models/feedback.rb | 20 + .../app/views/layouts/application.html.erb | 1 + .../app/views/pages/index.html.erb | 116 +++- examples/playbook-rails/config/routes.rb | 9 +- .../playbook-rails/db/development.sqlite3 | Bin 0 -> 28672 bytes .../20240119000000_create_feedbacks.rb | 11 + examples/playbook-rails/db/schema.rb | 22 + examples/playbook-rails/log/development.log | 496 ++++++++++++++++++ 12 files changed, 832 insertions(+), 12 deletions(-) create mode 100644 examples/playbook-rails/app/assets/stylesheets/feedback_form.scss create mode 100644 examples/playbook-rails/app/controllers/feedback_controller.rb create mode 100644 examples/playbook-rails/app/models/feedback.rb create mode 100644 examples/playbook-rails/db/migrate/20240119000000_create_feedbacks.rb create mode 100644 examples/playbook-rails/db/schema.rb diff --git a/examples/playbook-rails/Gemfile.lock b/examples/playbook-rails/Gemfile.lock index 03be5f4a84..0d2fcd40ca 100644 --- a/examples/playbook-rails/Gemfile.lock +++ b/examples/playbook-rails/Gemfile.lock @@ -258,6 +258,7 @@ GEM PLATFORMS arm64-darwin-23 + arm64-darwin-24 x86_64-darwin-21 x86_64-darwin-22 x86_64-linux diff --git a/examples/playbook-rails/app/assets/stylesheets/application.scss b/examples/playbook-rails/app/assets/stylesheets/application.scss index fa2ca5050e..0241f193c4 100644 --- a/examples/playbook-rails/app/assets/stylesheets/application.scss +++ b/examples/playbook-rails/app/assets/stylesheets/application.scss @@ -5,4 +5,14 @@ @import "playbook"; // Import fonts -@import "fonts" +@import "fonts"; + + +.test { + color: $primary; + font-size: $text_large; + font-weight: $bold; + font-family: $font_family_base; +} + + diff --git a/examples/playbook-rails/app/assets/stylesheets/feedback_form.scss b/examples/playbook-rails/app/assets/stylesheets/feedback_form.scss new file mode 100644 index 0000000000..8832c6b1aa --- /dev/null +++ b/examples/playbook-rails/app/assets/stylesheets/feedback_form.scss @@ -0,0 +1,131 @@ +@import "tokens/colors"; +@import "tokens/typography"; +@import "tokens/spacing"; +@import "tokens/shadows"; +@import "tokens/line_height"; + +.feedback-form { + max-width: 500px; + padding: 24px; + background-color: $card_light; + border: 1px solid $border_light; + border-radius: 8px; + box-shadow: $shadow_deep; + + &__title { + font-family: $font_family_base; + font-size: $heading_3; + font-weight: $bold; + color: $text_lt_default; + margin-bottom: 24px; + line-height: $lh_tight; + } + + &__field { + margin-bottom: 16px; + } + + &__label { + display: block; + font-family: $font_family_base; + font-size: $font_base; + font-weight: $bold; + color: $text_lt_default; + margin-bottom: 8px; + } + + &__input { + width: 100%; + padding: 12px; + font-family: $font_family_base; + font-size: $font_base; + color: $text_lt_default; + border: 1px solid $border_light; + border-radius: 4px; + background-color: $white; + transition: border-color 0.2s ease, box-shadow 0.2s ease; + + &:focus { + outline: none; + border-color: $focus_color; + box-shadow: 0 0 0 3px $focus_input_light; + } + + &--error { + border-color: $error; + + &:focus { + box-shadow: 0 0 0 3px $error_subtle; + } + } + } + + &__textarea { + @extend .feedback-form__input; + min-height: 120px; + resize: vertical; + } + + &__error { + display: none; + color: $error; + font-size: $font_small; + margin-top: 4px; + } + + &__error--visible { + display: block; + } + + &__submit { + display: inline-flex; + align-items: center; + justify-content: center; + padding: 12px 24px; + font-family: $font_family_base; + font-size: $font_base; + font-weight: $bold; + color: $white; + background-color: $primary; + border: none; + border-radius: 4px; + cursor: pointer; + transition: background-color 0.2s ease; + + &:hover { + background-color: darken($primary, 5%); + } + + &:focus { + outline: none; + box-shadow: 0 0 0 3px $focus_input_light; + } + + &:disabled { + opacity: 0.7; + cursor: not-allowed; + } + + &--loading { + position: relative; + color: transparent; + + &::after { + content: ""; + position: absolute; + width: 16px; + height: 16px; + border: 2px solid $white; + border-radius: 50%; + border-top-color: transparent; + animation: spin 0.8s linear infinite; + } + } + } +} + +@keyframes spin { + to { + transform: rotate(360deg); + } +} \ No newline at end of file diff --git a/examples/playbook-rails/app/controllers/feedback_controller.rb b/examples/playbook-rails/app/controllers/feedback_controller.rb new file mode 100644 index 0000000000..c88ae60bbd --- /dev/null +++ b/examples/playbook-rails/app/controllers/feedback_controller.rb @@ -0,0 +1,25 @@ +# frozen_string_literal: true + +class FeedbackController < ApplicationController + skip_before_action :verify_authenticity_token + + def create + @feedback = Feedback.new(feedback_params) + + if @feedback.save + render json: { message: "Thank you for your feedback!" }, status: :ok + else + render json: { + errors: @feedback.errors.messages.transform_values(&:first), + }, status: :unprocessable_entity + end + rescue + render json: { error: "An unexpected error occurred" }, status: :internal_server_error + end + +private + + def feedback_params + params.require(:feedback).permit(:name, :comments) + end +end diff --git a/examples/playbook-rails/app/models/feedback.rb b/examples/playbook-rails/app/models/feedback.rb new file mode 100644 index 0000000000..e4a6a5e195 --- /dev/null +++ b/examples/playbook-rails/app/models/feedback.rb @@ -0,0 +1,20 @@ +# frozen_string_literal: true + +class Feedback < ApplicationRecord + # Validations + validates :name, presence: true, + length: { minimum: 2, maximum: 100 } + + validates :comments, presence: true, + length: { minimum: 10, maximum: 1000 } + + # Sanitization + before_validation :sanitize_fields + +private + + def sanitize_fields + self.name = name.to_s.strip + self.comments = comments.to_s.strip + end +end diff --git a/examples/playbook-rails/app/views/layouts/application.html.erb b/examples/playbook-rails/app/views/layouts/application.html.erb index 99f0fc1cb2..1a20fc9ce4 100644 --- a/examples/playbook-rails/app/views/layouts/application.html.erb +++ b/examples/playbook-rails/app/views/layouts/application.html.erb @@ -7,6 +7,7 @@ <%= csp_meta_tag %> <%= stylesheet_link_tag "application", "data-turbo-track": "reload" %> + <%= stylesheet_link_tag "feedback_form", "data-turbo-track": "reload" %> diff --git a/examples/playbook-rails/app/views/pages/index.html.erb b/examples/playbook-rails/app/views/pages/index.html.erb index 4dc89d5303..f36cd8d68f 100644 --- a/examples/playbook-rails/app/views/pages/index.html.erb +++ b/examples/playbook-rails/app/views/pages/index.html.erb @@ -1,8 +1,108 @@ -<%= pb_rails("circle_icon_button", props: { - variant: "primary", - icon: "plus" -}) %> -<%= pb_rails("title", props: { -}) do %> - Welcome to Playbook -<% end %> +
+ + +
+ + + + + +
+
+ + + diff --git a/examples/playbook-rails/config/routes.rb b/examples/playbook-rails/config/routes.rb index 73b608226d..eb692d3e32 100644 --- a/examples/playbook-rails/config/routes.rb +++ b/examples/playbook-rails/config/routes.rb @@ -1,5 +1,8 @@ +# frozen_string_literal: true + Rails.application.routes.draw do - root 'pages#index' - - get '/pages', to: 'pages#index' + root "pages#index" + + get "/pages", to: "pages#index" + post "/feedback", to: "feedback#create" end diff --git a/examples/playbook-rails/db/development.sqlite3 b/examples/playbook-rails/db/development.sqlite3 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..14de22f4cbbea0fba20a24d4fbc201f9f4bf89f8 100644 GIT binary patch literal 28672 zcmeI*O-~a+7zgm(7Pew6i!r7#9y(brG(g$y8>L=cO=FPKB9;U3uo>C`HgtDkcUtj? z-ux1N1WtY<&n9^C=xhtvS3{yEX#SHJ#z{}fB*y_ z009U<00I#B3j$k;l2}}ncRAf_vEZa77CctKPTI_E3|C{%x65X|OzP&dN|_9eU2v(x zmc-1|+1_+4kxa@T9(0en&scMhHjaYpf--O%?Ydnf3!2^3i0yKAzzDrw{!#EYQ>A1G3!O+JI2^Egm zyV02XJw)Ig+G_udTr@QPKv*xPl*F67EZJ_8onBsH+U8!jZjC!#%NW->eJaNiD=YF@ zviG`b95RPmj(y-$ZhLMJ3^zmuVMh8xl@9X*G5OarDKnxZc2*{ZFmhna7-)z5V}lNj(P=1Rwwb2tWV=5P$##AOHaf zKmY=_M4%>5&(E7Cb33;0x#5pLnykZG-f>tIEBpMiZY=9-#8@pE*^-e<=Zs>Zke%Gq z+yB3i)QejZAx;AV5P$##AOHafKmY;|fB*y_0D<2Zn2pZQ^nH8~?*B*BnxuXbcSsO` z00bZa0SG_<0uX=z1Rwwb2;4-V8d0Q&%ce<#=KgT*--Iug^g>D3)45EpxH_;sKiFf* ziu7p1G+)x-nE7=UaN9i~{Ll^veaiyRVPQoyd2OEVe}dIgCSTHv>0;I}vYE*}z3=~H o|NkZz7h@m*0SG_<0uX=z1Rwwb2tWV=|BOIfjwa>n|D%Zf06yk#3jhEB literal 0 HcmV?d00001 diff --git a/examples/playbook-rails/db/migrate/20240119000000_create_feedbacks.rb b/examples/playbook-rails/db/migrate/20240119000000_create_feedbacks.rb new file mode 100644 index 0000000000..a3dd28a338 --- /dev/null +++ b/examples/playbook-rails/db/migrate/20240119000000_create_feedbacks.rb @@ -0,0 +1,11 @@ +# frozen_string_literal: true + +class CreateFeedbacks < ActiveRecord::Migration[7.0] + def change + create_table :feedbacks do |t| + t.string :name, null: false + t.text :comments, null: false + t.timestamps + end + end +end diff --git a/examples/playbook-rails/db/schema.rb b/examples/playbook-rails/db/schema.rb new file mode 100644 index 0000000000..94aa7003e6 --- /dev/null +++ b/examples/playbook-rails/db/schema.rb @@ -0,0 +1,22 @@ +# frozen_string_literal: true + +# This file is auto-generated from the current state of the database. Instead +# of editing this file, please use the migrations feature of Active Record to +# incrementally modify your database, and then regenerate this schema definition. +# +# This file is the source Rails uses to define your schema when running `bin/rails +# db:schema:load`. When creating a new database, `bin/rails db:schema:load` tends to +# be faster and is potentially less error prone than running all of your +# migrations from scratch. Old migrations may fail to apply correctly if those +# migrations use external dependencies or application code. +# +# It's strongly recommended that you check this file into your version control system. + +ActiveRecord::Schema[7.0].define(version: 2024_01_19_000000) do + create_table "feedbacks", force: :cascade do |t| + t.string "name", null: false + t.text "comments", null: false + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + end +end diff --git a/examples/playbook-rails/log/development.log b/examples/playbook-rails/log/development.log index 60e9cc09e7..a2af3d03f6 100644 --- a/examples/playbook-rails/log/development.log +++ b/examples/playbook-rails/log/development.log @@ -533,3 +533,499 @@ Processing by PagesController#index as HTML Completed 200 OK in 5065ms (Views: 5052.3ms | ActiveRecord: 0.0ms | Allocations: 658595) +Started GET "/" for 127.0.0.1 at 2025-01-09 11:34:00 -0500 +Processing by PagesController#index as HTML + Rendering layout layouts/application.html.erb + Rendering pages/index.html.erb within layouts/application + Rendered pages/index.html.erb within layouts/application (Duration: 15.4ms | Allocations: 11062) + Rendered layout layouts/application.html.erb (Duration: 5122.7ms | Allocations: 563511) +Completed 200 OK in 5147ms (Views: 5127.2ms | ActiveRecord: 0.0ms | Allocations: 570166) + + +Started GET "/" for 127.0.0.1 at 2025-01-09 11:36:49 -0500 +Processing by PagesController#index as HTML + Rendering layout layouts/application.html.erb + Rendering pages/index.html.erb within layouts/application + Rendered pages/index.html.erb within layouts/application (Duration: 5.6ms | Allocations: 2603) + Rendered layout layouts/application.html.erb (Duration: 4419.5ms | Allocations: 333615) +Completed 200 OK in 4421ms (Views: 4420.7ms | ActiveRecord: 0.0ms | Allocations: 334405) + + +Started GET "/" for 127.0.0.1 at 2025-01-09 11:37:33 -0500 +Processing by PagesController#index as HTML + Rendering layout layouts/application.html.erb + Rendering pages/index.html.erb within layouts/application + Rendered pages/index.html.erb within layouts/application (Duration: 4.8ms | Allocations: 2410) + Rendered layout layouts/application.html.erb (Duration: 501.3ms | Allocations: 33440) +Completed 500 Internal Server Error in 502ms (ActiveRecord: 0.0ms | Allocations: 33679) + + + +ActionView::Template::Error (Error: Undefined variable: "$primary". + on line 12:10 of app/assets/stylesheets/application.scss +>> color: $primary; + + ---------^ +): + 6: <%= csrf_meta_tags %> + 7: <%= csp_meta_tag %> + 8: + 9: <%= stylesheet_link_tag "application", "data-turbo-track": "reload" %> + 10: + 11: + 12: + +app/assets/stylesheets/application.scss:12 +app/views/layouts/application.html.erb:9 +Started GET "/" for 127.0.0.1 at 2025-01-09 11:37:51 -0500 +Processing by PagesController#index as HTML + Rendering layout layouts/application.html.erb + Rendering pages/index.html.erb within layouts/application + Rendered pages/index.html.erb within layouts/application (Duration: 3.0ms | Allocations: 2411) + Rendered layout layouts/application.html.erb (Duration: 466.0ms | Allocations: 22067) +Completed 500 Internal Server Error in 466ms (ActiveRecord: 0.0ms | Allocations: 22276) + + + +ActionView::Template::Error (Error: Undefined variable: "$primary". + on line 12:10 of app/assets/stylesheets/application.scss +>> color: $primary; + + ---------^ +): + 6: <%= csrf_meta_tags %> + 7: <%= csp_meta_tag %> + 8: + 9: <%= stylesheet_link_tag "application", "data-turbo-track": "reload" %> + 10: + 11: + 12: + +app/assets/stylesheets/application.scss:12 +app/views/layouts/application.html.erb:9 +Started GET "/" for 127.0.0.1 at 2025-01-09 11:37:53 -0500 +Processing by PagesController#index as HTML + Rendering layout layouts/application.html.erb + Rendering pages/index.html.erb within layouts/application + Rendered pages/index.html.erb within layouts/application (Duration: 4.0ms | Allocations: 2410) + Rendered layout layouts/application.html.erb (Duration: 481.0ms | Allocations: 22019) +Completed 500 Internal Server Error in 481ms (ActiveRecord: 0.0ms | Allocations: 22230) + + + +ActionView::Template::Error (Error: Undefined variable: "$primary". + on line 12:10 of app/assets/stylesheets/application.scss +>> color: $primary; + + ---------^ +): + 6: <%= csrf_meta_tags %> + 7: <%= csp_meta_tag %> + 8: + 9: <%= stylesheet_link_tag "application", "data-turbo-track": "reload" %> + 10: + 11: + 12: + +app/assets/stylesheets/application.scss:12 +app/views/layouts/application.html.erb:9 +Started GET "/" for 127.0.0.1 at 2025-01-09 11:38:10 -0500 +Processing by PagesController#index as HTML + Rendering layout layouts/application.html.erb + Rendering pages/index.html.erb within layouts/application + Rendered pages/index.html.erb within layouts/application (Duration: 2.7ms | Allocations: 2410) + Rendered layout layouts/application.html.erb (Duration: 4339.2ms | Allocations: 333082) +Completed 200 OK in 4340ms (Views: 4339.5ms | ActiveRecord: 0.0ms | Allocations: 333312) + + +Started GET "/" for 127.0.0.1 at 2025-01-09 11:38:51 -0500 +Processing by PagesController#index as HTML + Rendering layout layouts/application.html.erb + Rendering pages/index.html.erb within layouts/application + Rendered pages/index.html.erb within layouts/application (Duration: 5.9ms | Allocations: 2410) + Rendered layout layouts/application.html.erb (Duration: 4388.5ms | Allocations: 333078) +Completed 200 OK in 4389ms (Views: 4388.7ms | ActiveRecord: 0.0ms | Allocations: 333306) + + +Started GET "/" for 127.0.0.1 at 2025-01-09 12:01:53 -0500 +Processing by PagesController#index as HTML + Rendering layout layouts/application.html.erb + Rendering pages/index.html.erb within layouts/application + Rendered pages/index.html.erb within layouts/application (Duration: 7.9ms | Allocations: 6963) + Rendered layout layouts/application.html.erb (Duration: 4340.1ms | Allocations: 337707) +Completed 200 OK in 4341ms (Views: 4340.9ms | ActiveRecord: 0.0ms | Allocations: 338577) + + +Started POST "/feedback" for 127.0.0.1 at 2025-01-09 12:02:06 -0500 +Processing by FeedbackController#create as */* + Parameters: {"feedback[name]"=>"hello", "feedback[comments]"=>"hello world", "feedback"=>{"feedback[name]"=>"hello", "feedback[comments]"=>"hello world"}} +Completed 422 Unprocessable Entity in 1ms (Views: 0.2ms | ActiveRecord: 0.0ms | Allocations: 433) + + +Started GET "/" for 127.0.0.1 at 2025-01-09 12:02:42 -0500 +Processing by PagesController#index as HTML + Rendering layout layouts/application.html.erb + Rendering pages/index.html.erb within layouts/application + Rendered pages/index.html.erb within layouts/application (Duration: 5.0ms | Allocations: 2661) + Rendered layout layouts/application.html.erb (Duration: 38.4ms | Allocations: 44486) +Completed 200 OK in 39ms (Views: 39.0ms | ActiveRecord: 0.0ms | Allocations: 44715) + + +Started GET "/" for 127.0.0.1 at 2025-01-09 12:02:43 -0500 +Processing by PagesController#index as HTML + Rendering layout layouts/application.html.erb + Rendering pages/index.html.erb within layouts/application + Rendered pages/index.html.erb within layouts/application (Duration: 5.3ms | Allocations: 2657) + Rendered layout layouts/application.html.erb (Duration: 37.6ms | Allocations: 44015) +Completed 200 OK in 39ms (Views: 38.3ms | ActiveRecord: 0.0ms | Allocations: 44244) + + +Started GET "/" for 127.0.0.1 at 2025-01-09 12:03:16 -0500 +Processing by PagesController#index as HTML + Rendering layout layouts/application.html.erb + Rendering pages/index.html.erb within layouts/application + Rendered pages/index.html.erb within layouts/application (Duration: 4.7ms | Allocations: 3070) + Rendered layout layouts/application.html.erb (Duration: 28.7ms | Allocations: 45424) +Completed 200 OK in 30ms (Views: 29.9ms | ActiveRecord: 0.0ms | Allocations: 46213) + + +Started GET "/" for 127.0.0.1 at 2025-01-09 12:03:17 -0500 +Processing by PagesController#index as HTML + Rendering layout layouts/application.html.erb + Rendering pages/index.html.erb within layouts/application + Rendered pages/index.html.erb within layouts/application (Duration: 3.1ms | Allocations: 2666) + Rendered layout layouts/application.html.erb (Duration: 24.4ms | Allocations: 43989) +Completed 200 OK in 25ms (Views: 24.7ms | ActiveRecord: 0.0ms | Allocations: 44219) + + +Started GET "/" for 127.0.0.1 at 2025-01-09 12:03:30 -0500 +Processing by PagesController#index as HTML + Rendering layout layouts/application.html.erb + Rendering pages/index.html.erb within layouts/application + Rendered pages/index.html.erb within layouts/application (Duration: 8.3ms | Allocations: 8738) + Rendered layout layouts/application.html.erb (Duration: 432.5ms | Allocations: 189863) +Completed 200 OK in 439ms (Views: 434.6ms | ActiveRecord: 0.0ms | Allocations: 193643) + + +Started GET "/" for 127.0.0.1 at 2025-01-09 12:03:31 -0500 +Processing by PagesController#index as HTML + Rendering layout layouts/application.html.erb + Rendering pages/index.html.erb within layouts/application + Rendered pages/index.html.erb within layouts/application (Duration: 3.1ms | Allocations: 2663) + Rendered layout layouts/application.html.erb (Duration: 23.1ms | Allocations: 43854) +Completed 200 OK in 23ms (Views: 23.3ms | ActiveRecord: 0.0ms | Allocations: 44086) + + +Started GET "/" for 127.0.0.1 at 2025-01-09 12:07:57 -0500 +Processing by PagesController#index as HTML + Rendering layout layouts/application.html.erb + Rendering pages/index.html.erb within layouts/application + Rendered pages/index.html.erb within layouts/application (Duration: 9.4ms | Allocations: 8753) + Rendered layout layouts/application.html.erb (Duration: 173.7ms | Allocations: 135776) +Completed 200 OK in 179ms (Views: 175.1ms | ActiveRecord: 0.0ms | Allocations: 139557) + + +Started POST "/feedback" for 127.0.0.1 at 2025-01-09 12:08:07 -0500 +Processing by FeedbackController#create as */* + Parameters: {"feedback[name]"=>"Awesome", "feedback[comments]"=>"cool", "feedback"=>{"feedback[name]"=>"Awesome", "feedback[comments]"=>"cool"}} +Completed 422 Unprocessable Entity in 1ms (Views: 0.2ms | ActiveRecord: 0.0ms | Allocations: 457) + + +Started GET "/" for 127.0.0.1 at 2025-01-09 12:08:30 -0500 +Processing by PagesController#index as HTML + Rendering layout layouts/application.html.erb + Rendering pages/index.html.erb within layouts/application + Rendered pages/index.html.erb within layouts/application (Duration: 0.9ms | Allocations: 582) + Rendered layout layouts/application.html.erb (Duration: 32.1ms | Allocations: 42805) +Completed 200 OK in 35ms (Views: 33.9ms | ActiveRecord: 0.0ms | Allocations: 43596) + + +Started POST "/feedback" for 127.0.0.1 at 2025-01-09 12:09:05 -0500 +Processing by FeedbackController#create as */* + Parameters: {"feedback[name]"=>"Testing this out. ", "feedback[comments]"=>"Awesome. ", "feedback"=>{"feedback[name]"=>"Testing this out. ", "feedback[comments]"=>"Awesome. "}} +Completed 422 Unprocessable Entity in 1ms (Views: 0.2ms | ActiveRecord: 0.0ms | Allocations: 324) + + +  (0.9ms) CREATE TABLE "schema_migrations" ("version" varchar NOT NULL PRIMARY KEY) +  (0.4ms) CREATE TABLE "ar_internal_metadata" ("key" varchar NOT NULL PRIMARY KEY, "value" varchar, "created_at" datetime(6) NOT NULL, "updated_at" datetime(6) NOT NULL) + ActiveRecord::SchemaMigration Pluck (0.0ms) SELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC +Migrating to CreateFeedbacks (20240119000000) + TRANSACTION (0.0ms) begin transaction +  (0.3ms) CREATE TABLE "feedbacks" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar NOT NULL, "comments" text NOT NULL, "created_at" datetime(6) NOT NULL, "updated_at" datetime(6) NOT NULL) + ActiveRecord::SchemaMigration Create (0.1ms) INSERT INTO "schema_migrations" ("version") VALUES (?) [["version", "20240119000000"]] + TRANSACTION (0.4ms) commit transaction + ActiveRecord::InternalMetadata Load (0.0ms) SELECT "ar_internal_metadata".* FROM "ar_internal_metadata" WHERE "ar_internal_metadata"."key" = ? LIMIT ? [["key", "environment"], ["LIMIT", 1]] + TRANSACTION (0.0ms) begin transaction + ActiveRecord::InternalMetadata Create (0.2ms) INSERT INTO "ar_internal_metadata" ("key", "value", "created_at", "updated_at") VALUES (?, ?, ?, ?) [["key", "environment"], ["value", "development"], ["created_at", "2025-01-09 17:13:14.418663"], ["updated_at", "2025-01-09 17:13:14.418663"]] + TRANSACTION (0.2ms) commit transaction + ActiveRecord::SchemaMigration Pluck (0.0ms) SELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC +Started GET "/" for 127.0.0.1 at 2025-01-09 12:13:41 -0500 + ActiveRecord::SchemaMigration Pluck (0.0ms) SELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC +Processing by PagesController#index as HTML + Rendering layout layouts/application.html.erb + Rendering pages/index.html.erb within layouts/application + Rendered pages/index.html.erb within layouts/application (Duration: 1.9ms | Allocations: 1056) + Rendered layout layouts/application.html.erb (Duration: 169.6ms | Allocations: 128110) +Completed 200 OK in 175ms (Views: 171.0ms | ActiveRecord: 0.0ms | Allocations: 131891) + + +Started POST "/feedback" for 127.0.0.1 at 2025-01-09 12:13:57 -0500 +Processing by FeedbackController#create as */* + Parameters: {"feedback[name]"=>"asdfasdf", "feedback[comments]"=>"adfasdf", "feedback"=>{}} +Completed 400 Bad Request in 1ms (ActiveRecord: 0.4ms | Allocations: 707) + + + +ActionController::ParameterMissing (param is missing or the value is empty: feedback): + +app/controllers/feedback_controller.rb:17:in `feedback_params' +app/controllers/feedback_controller.rb:3:in `create' +Started POST "/feedback" for 127.0.0.1 at 2025-01-09 12:13:59 -0500 +Processing by FeedbackController#create as */* + Parameters: {"feedback[name]"=>"asdfasdf", "feedback[comments]"=>"adfasdf", "feedback"=>{}} +Completed 400 Bad Request in 1ms (ActiveRecord: 0.0ms | Allocations: 633) + + + +ActionController::ParameterMissing (param is missing or the value is empty: feedback): + +app/controllers/feedback_controller.rb:17:in `feedback_params' +app/controllers/feedback_controller.rb:3:in `create' +Started POST "/feedback" for 127.0.0.1 at 2025-01-09 12:14:05 -0500 +Processing by FeedbackController#create as */* + Parameters: {"feedback[name]"=>"asdfasdf", "feedback[comments]"=>"adfasdf", "feedback"=>{}} +Completed 400 Bad Request in 1ms (ActiveRecord: 0.0ms | Allocations: 633) + + + +ActionController::ParameterMissing (param is missing or the value is empty: feedback): + +app/controllers/feedback_controller.rb:17:in `feedback_params' +app/controllers/feedback_controller.rb:3:in `create' +Started GET "/" for 127.0.0.1 at 2025-01-09 12:14:09 -0500 +Processing by PagesController#index as HTML + Rendering layout layouts/application.html.erb + Rendering pages/index.html.erb within layouts/application + Rendered pages/index.html.erb within layouts/application (Duration: 0.4ms | Allocations: 248) + Rendered layout layouts/application.html.erb (Duration: 39.6ms | Allocations: 42261) +Completed 200 OK in 40ms (Views: 39.9ms | ActiveRecord: 0.0ms | Allocations: 42494) + + +Started POST "/feedback" for 127.0.0.1 at 2025-01-09 12:17:33 -0500 +Processing by FeedbackController#create as */* + Parameters: {"feedback[name]"=>"Jasper", "feedback[comments]"=>"asdfjasdfjasdf", "feedback"=>{}} +Completed 400 Bad Request in 1ms (ActiveRecord: 0.0ms | Allocations: 636) + + + +ActionController::ParameterMissing (param is missing or the value is empty: feedback): + +app/controllers/feedback_controller.rb:17:in `feedback_params' +app/controllers/feedback_controller.rb:3:in `create' +Started POST "/feedback" for 127.0.0.1 at 2025-01-09 12:18:02 -0500 +Processing by FeedbackController#create as */* + Parameters: {"feedback[name]"=>"Jasper", "feedback[comments]"=>"asdfjasdfjasdf", "feedback"=>{}} +Completed 400 Bad Request in 1ms (ActiveRecord: 0.0ms | Allocations: 635) + + + +ActionController::ParameterMissing (param is missing or the value is empty: feedback): + +app/controllers/feedback_controller.rb:17:in `feedback_params' +app/controllers/feedback_controller.rb:3:in `create' +Started GET "/" for 127.0.0.1 at 2025-01-09 12:19:25 -0500 +Processing by PagesController#index as HTML + Rendering layout layouts/application.html.erb + Rendering pages/index.html.erb within layouts/application + Rendered pages/index.html.erb within layouts/application (Duration: 1.1ms | Allocations: 269) + Rendered layout layouts/application.html.erb (Duration: 28.7ms | Allocations: 42700) +Completed 200 OK in 30ms (Views: 29.7ms | ActiveRecord: 0.0ms | Allocations: 43570) + + +Started POST "/feedback" for 127.0.0.1 at 2025-01-09 12:19:40 -0500 + ActiveRecord::SchemaMigration Pluck (0.1ms) SELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC +Processing by FeedbackController#create as JSON + Parameters: {"feedback"=>{"name"=>"Testing", "comments"=>"Tesitng"}} +Received feedback params: #{"name"=>"Testing", "comments"=>"Tesitng"}, "controller"=>"feedback", "action"=>"create"} permitted: false> +Feedback validation failed: ["Comments is too short (minimum is 10 characters)"] +Completed 422 Unprocessable Entity in 12ms (Views: 0.2ms | ActiveRecord: 0.2ms | Allocations: 9308) + + +Started GET "/" for 127.0.0.1 at 2025-01-09 12:22:23 -0500 + ActiveRecord::SchemaMigration Pluck (0.0ms) SELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC +Processing by PagesController#index as HTML + Rendering layout layouts/application.html.erb + Rendering pages/index.html.erb within layouts/application + Rendered pages/index.html.erb within layouts/application (Duration: 0.5ms | Allocations: 495) + Rendered layout layouts/application.html.erb (Duration: 283.1ms | Allocations: 128003) +Completed 200 OK in 290ms (Views: 285.3ms | ActiveRecord: 0.0ms | Allocations: 131784) + + +Started POST "/feedback" for 127.0.0.1 at 2025-01-09 12:22:31 -0500 +Processing by FeedbackController#create as JSON + Parameters: {"feedback[name]"=>"Jasper", "feedback[comments]"=>"i love it here.", "feedback"=>{}} +Received feedback params: #"Jasper", "feedback[comments]"=>"i love it here.", "controller"=>"feedback", "action"=>"create", "feedback"=>{}} permitted: false> +Raw request body: {"feedback[name]":"Jasper","feedback[comments]":"i love it here."} +Error in feedback#create: ActionController::ParameterMissing - param is missing or the value is empty: feedback +/Users/jasper.furniss/.asdf/installs/ruby/3.3.0/lib/ruby/gems/3.3.0/gems/actionpack-7.0.8.1/lib/action_controller/metal/strong_parameters.rb:477:in `require' +/Users/jasper.furniss/playbook/examples/playbook-rails/app/controllers/feedback_controller.rb:30:in `feedback_params' +/Users/jasper.furniss/playbook/examples/playbook-rails/app/controllers/feedback_controller.rb:8:in `create' +/Users/jasper.furniss/.asdf/installs/ruby/3.3.0/lib/ruby/gems/3.3.0/gems/actionpack-7.0.8.1/lib/action_controller/metal/basic_implicit_render.rb:6:in `send_action' +/Users/jasper.furniss/.asdf/installs/ruby/3.3.0/lib/ruby/gems/3.3.0/gems/actionpack-7.0.8.1/lib/abstract_controller/base.rb:215:in `process_action' +/Users/jasper.furniss/.asdf/installs/ruby/3.3.0/lib/ruby/gems/3.3.0/gems/actionpack-7.0.8.1/lib/action_controller/metal/rendering.rb:165:in `process_action' +/Users/jasper.furniss/.asdf/installs/ruby/3.3.0/lib/ruby/gems/3.3.0/gems/actionpack-7.0.8.1/lib/abstract_controller/callbacks.rb:234:in `block in process_action' +/Users/jasper.furniss/.asdf/installs/ruby/3.3.0/lib/ruby/gems/3.3.0/gems/activesupport-7.0.8.1/lib/active_support/callbacks.rb:118:in `block in run_callbacks' +/Users/jasper.furniss/.asdf/installs/ruby/3.3.0/lib/ruby/gems/3.3.0/gems/actiontext-7.0.8.1/lib/action_text/rendering.rb:20:in `with_renderer' +/Users/jasper.furniss/.asdf/installs/ruby/3.3.0/lib/ruby/gems/3.3.0/gems/actiontext-7.0.8.1/lib/action_text/engine.rb:69:in `block (4 levels) in ' +/Users/jasper.furniss/.asdf/installs/ruby/3.3.0/lib/ruby/gems/3.3.0/gems/activesupport-7.0.8.1/lib/active_support/callbacks.rb:127:in `instance_exec' +/Users/jasper.furniss/.asdf/installs/ruby/3.3.0/lib/ruby/gems/3.3.0/gems/activesupport-7.0.8.1/lib/active_support/callbacks.rb:127:in `block in run_callbacks' +/Users/jasper.furniss/.asdf/installs/ruby/3.3.0/lib/ruby/gems/3.3.0/gems/activesupport-7.0.8.1/lib/active_support/callbacks.rb:138:in `run_callbacks' +/Users/jasper.furniss/.asdf/installs/ruby/3.3.0/lib/ruby/gems/3.3.0/gems/actionpack-7.0.8.1/lib/abstract_controller/callbacks.rb:233:in `process_action' +/Users/jasper.furniss/.asdf/installs/ruby/3.3.0/lib/ruby/gems/3.3.0/gems/actionpack-7.0.8.1/lib/action_controller/metal/rescue.rb:23:in `process_action' +/Users/jasper.furniss/.asdf/installs/ruby/3.3.0/lib/ruby/gems/3.3.0/gems/actionpack-7.0.8.1/lib/action_controller/metal/instrumentation.rb:67:in `block in process_action' +/Users/jasper.furniss/.asdf/installs/ruby/3.3.0/lib/ruby/gems/3.3.0/gems/activesupport-7.0.8.1/lib/active_support/notifications.rb:206:in `block in instrument' +/Users/jasper.furniss/.asdf/installs/ruby/3.3.0/lib/ruby/gems/3.3.0/gems/activesupport-7.0.8.1/lib/active_support/notifications/instrumenter.rb:24:in `instrument' +/Users/jasper.furniss/.asdf/installs/ruby/3.3.0/lib/ruby/gems/3.3.0/gems/activesupport-7.0.8.1/lib/active_support/notifications.rb:206:in `instrument' +/Users/jasper.furniss/.asdf/installs/ruby/3.3.0/lib/ruby/gems/3.3.0/gems/actionpack-7.0.8.1/lib/action_controller/metal/instrumentation.rb:66:in `process_action' +/Users/jasper.furniss/.asdf/installs/ruby/3.3.0/lib/ruby/gems/3.3.0/gems/actionpack-7.0.8.1/lib/action_controller/metal/params_wrapper.rb:259:in `process_action' +/Users/jasper.furniss/.asdf/installs/ruby/3.3.0/lib/ruby/gems/3.3.0/gems/activerecord-7.0.8.1/lib/active_record/railties/controller_runtime.rb:27:in `process_action' +/Users/jasper.furniss/.asdf/installs/ruby/3.3.0/lib/ruby/gems/3.3.0/gems/actionpack-7.0.8.1/lib/abstract_controller/base.rb:151:in `process' +/Users/jasper.furniss/.asdf/installs/ruby/3.3.0/lib/ruby/gems/3.3.0/gems/actionview-7.0.8.1/lib/action_view/rendering.rb:39:in `process' +/Users/jasper.furniss/.asdf/installs/ruby/3.3.0/lib/ruby/gems/3.3.0/gems/actionpack-7.0.8.1/lib/action_controller/metal.rb:188:in `dispatch' +/Users/jasper.furniss/.asdf/installs/ruby/3.3.0/lib/ruby/gems/3.3.0/gems/actionpack-7.0.8.1/lib/action_controller/metal.rb:251:in `dispatch' +/Users/jasper.furniss/.asdf/installs/ruby/3.3.0/lib/ruby/gems/3.3.0/gems/actionpack-7.0.8.1/lib/action_dispatch/routing/route_set.rb:49:in `dispatch' +/Users/jasper.furniss/.asdf/installs/ruby/3.3.0/lib/ruby/gems/3.3.0/gems/actionpack-7.0.8.1/lib/action_dispatch/routing/route_set.rb:32:in `serve' +/Users/jasper.furniss/.asdf/installs/ruby/3.3.0/lib/ruby/gems/3.3.0/gems/actionpack-7.0.8.1/lib/action_dispatch/journey/router.rb:50:in `block in serve' +/Users/jasper.furniss/.asdf/installs/ruby/3.3.0/lib/ruby/gems/3.3.0/gems/actionpack-7.0.8.1/lib/action_dispatch/journey/router.rb:32:in `each' +/Users/jasper.furniss/.asdf/installs/ruby/3.3.0/lib/ruby/gems/3.3.0/gems/actionpack-7.0.8.1/lib/action_dispatch/journey/router.rb:32:in `serve' +/Users/jasper.furniss/.asdf/installs/ruby/3.3.0/lib/ruby/gems/3.3.0/gems/actionpack-7.0.8.1/lib/action_dispatch/routing/route_set.rb:852:in `call' +/Users/jasper.furniss/.asdf/installs/ruby/3.3.0/lib/ruby/gems/3.3.0/gems/actionpack-7.0.8.1/lib/action_dispatch/middleware/static.rb:23:in `call' +/Users/jasper.furniss/.asdf/installs/ruby/3.3.0/lib/ruby/gems/3.3.0/gems/rack-2.2.9/lib/rack/tempfile_reaper.rb:15:in `call' +/Users/jasper.furniss/.asdf/installs/ruby/3.3.0/lib/ruby/gems/3.3.0/gems/rack-2.2.9/lib/rack/etag.rb:27:in `call' +/Users/jasper.furniss/.asdf/installs/ruby/3.3.0/lib/ruby/gems/3.3.0/gems/rack-2.2.9/lib/rack/conditional_get.rb:40:in `call' +/Users/jasper.furniss/.asdf/installs/ruby/3.3.0/lib/ruby/gems/3.3.0/gems/rack-2.2.9/lib/rack/head.rb:12:in `call' +/Users/jasper.furniss/.asdf/installs/ruby/3.3.0/lib/ruby/gems/3.3.0/gems/actionpack-7.0.8.1/lib/action_dispatch/http/permissions_policy.rb:38:in `call' +/Users/jasper.furniss/.asdf/installs/ruby/3.3.0/lib/ruby/gems/3.3.0/gems/actionpack-7.0.8.1/lib/action_dispatch/http/content_security_policy.rb:36:in `call' +/Users/jasper.furniss/.asdf/installs/ruby/3.3.0/lib/ruby/gems/3.3.0/gems/rack-2.2.9/lib/rack/session/abstract/id.rb:266:in `context' +/Users/jasper.furniss/.asdf/installs/ruby/3.3.0/lib/ruby/gems/3.3.0/gems/rack-2.2.9/lib/rack/session/abstract/id.rb:260:in `call' +/Users/jasper.furniss/.asdf/installs/ruby/3.3.0/lib/ruby/gems/3.3.0/gems/actionpack-7.0.8.1/lib/action_dispatch/middleware/cookies.rb:704:in `call' +/Users/jasper.furniss/.asdf/installs/ruby/3.3.0/lib/ruby/gems/3.3.0/gems/activerecord-7.0.8.1/lib/active_record/migration.rb:638:in `call' +/Users/jasper.furniss/.asdf/installs/ruby/3.3.0/lib/ruby/gems/3.3.0/gems/actionpack-7.0.8.1/lib/action_dispatch/middleware/callbacks.rb:27:in `block in call' +/Users/jasper.furniss/.asdf/installs/ruby/3.3.0/lib/ruby/gems/3.3.0/gems/activesupport-7.0.8.1/lib/active_support/callbacks.rb:99:in `run_callbacks' +/Users/jasper.furniss/.asdf/installs/ruby/3.3.0/lib/ruby/gems/3.3.0/gems/actionpack-7.0.8.1/lib/action_dispatch/middleware/callbacks.rb:26:in `call' +/Users/jasper.furniss/.asdf/installs/ruby/3.3.0/lib/ruby/gems/3.3.0/gems/actionpack-7.0.8.1/lib/action_dispatch/middleware/executor.rb:14:in `call' +/Users/jasper.furniss/.asdf/installs/ruby/3.3.0/lib/ruby/gems/3.3.0/gems/actionpack-7.0.8.1/lib/action_dispatch/middleware/actionable_exceptions.rb:17:in `call' +/Users/jasper.furniss/.asdf/installs/ruby/3.3.0/lib/ruby/gems/3.3.0/gems/actionpack-7.0.8.1/lib/action_dispatch/middleware/debug_exceptions.rb:28:in `call' +/Users/jasper.furniss/.asdf/installs/ruby/3.3.0/lib/ruby/gems/3.3.0/gems/web-console-4.2.1/lib/web_console/middleware.rb:132:in `call_app' +/Users/jasper.furniss/.asdf/installs/ruby/3.3.0/lib/ruby/gems/3.3.0/gems/web-console-4.2.1/lib/web_console/middleware.rb:28:in `block in call' +/Users/jasper.furniss/.asdf/installs/ruby/3.3.0/lib/ruby/gems/3.3.0/gems/web-console-4.2.1/lib/web_console/middleware.rb:17:in `catch' +/Users/jasper.furniss/.asdf/installs/ruby/3.3.0/lib/ruby/gems/3.3.0/gems/web-console-4.2.1/lib/web_console/middleware.rb:17:in `call' +/Users/jasper.furniss/.asdf/installs/ruby/3.3.0/lib/ruby/gems/3.3.0/gems/actionpack-7.0.8.1/lib/action_dispatch/middleware/show_exceptions.rb:29:in `call' +/Users/jasper.furniss/.asdf/installs/ruby/3.3.0/lib/ruby/gems/3.3.0/gems/railties-7.0.8.1/lib/rails/rack/logger.rb:40:in `call_app' +/Users/jasper.furniss/.asdf/installs/ruby/3.3.0/lib/ruby/gems/3.3.0/gems/railties-7.0.8.1/lib/rails/rack/logger.rb:25:in `block in call' +/Users/jasper.furniss/.asdf/installs/ruby/3.3.0/lib/ruby/gems/3.3.0/gems/activesupport-7.0.8.1/lib/active_support/tagged_logging.rb:99:in `block in tagged' +/Users/jasper.furniss/.asdf/installs/ruby/3.3.0/lib/ruby/gems/3.3.0/gems/activesupport-7.0.8.1/lib/active_support/tagged_logging.rb:37:in `tagged' +/Users/jasper.furniss/.asdf/installs/ruby/3.3.0/lib/ruby/gems/3.3.0/gems/activesupport-7.0.8.1/lib/active_support/tagged_logging.rb:99:in `tagged' +/Users/jasper.furniss/.asdf/installs/ruby/3.3.0/lib/ruby/gems/3.3.0/gems/railties-7.0.8.1/lib/rails/rack/logger.rb:25:in `call' +/Users/jasper.furniss/.asdf/installs/ruby/3.3.0/lib/ruby/gems/3.3.0/gems/sprockets-rails-3.4.2/lib/sprockets/rails/quiet_assets.rb:13:in `call' +/Users/jasper.furniss/.asdf/installs/ruby/3.3.0/lib/ruby/gems/3.3.0/gems/actionpack-7.0.8.1/lib/action_dispatch/middleware/remote_ip.rb:93:in `call' +/Users/jasper.furniss/.asdf/installs/ruby/3.3.0/lib/ruby/gems/3.3.0/gems/actionpack-7.0.8.1/lib/action_dispatch/middleware/request_id.rb:26:in `call' +/Users/jasper.furniss/.asdf/installs/ruby/3.3.0/lib/ruby/gems/3.3.0/gems/rack-2.2.9/lib/rack/method_override.rb:24:in `call' +/Users/jasper.furniss/.asdf/installs/ruby/3.3.0/lib/ruby/gems/3.3.0/gems/rack-2.2.9/lib/rack/runtime.rb:22:in `call' +/Users/jasper.furniss/.asdf/installs/ruby/3.3.0/lib/ruby/gems/3.3.0/gems/activesupport-7.0.8.1/lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +/Users/jasper.furniss/.asdf/installs/ruby/3.3.0/lib/ruby/gems/3.3.0/gems/actionpack-7.0.8.1/lib/action_dispatch/middleware/server_timing.rb:61:in `block in call' +/Users/jasper.furniss/.asdf/installs/ruby/3.3.0/lib/ruby/gems/3.3.0/gems/actionpack-7.0.8.1/lib/action_dispatch/middleware/server_timing.rb:26:in `collect_events' +/Users/jasper.furniss/.asdf/installs/ruby/3.3.0/lib/ruby/gems/3.3.0/gems/actionpack-7.0.8.1/lib/action_dispatch/middleware/server_timing.rb:60:in `call' +/Users/jasper.furniss/.asdf/installs/ruby/3.3.0/lib/ruby/gems/3.3.0/gems/actionpack-7.0.8.1/lib/action_dispatch/middleware/executor.rb:14:in `call' +/Users/jasper.furniss/.asdf/installs/ruby/3.3.0/lib/ruby/gems/3.3.0/gems/actionpack-7.0.8.1/lib/action_dispatch/middleware/static.rb:23:in `call' +/Users/jasper.furniss/.asdf/installs/ruby/3.3.0/lib/ruby/gems/3.3.0/gems/rack-2.2.9/lib/rack/sendfile.rb:110:in `call' +/Users/jasper.furniss/.asdf/installs/ruby/3.3.0/lib/ruby/gems/3.3.0/gems/actionpack-7.0.8.1/lib/action_dispatch/middleware/host_authorization.rb:138:in `call' +/Users/jasper.furniss/.asdf/installs/ruby/3.3.0/lib/ruby/gems/3.3.0/gems/railties-7.0.8.1/lib/rails/engine.rb:530:in `call' +/Users/jasper.furniss/.asdf/installs/ruby/3.3.0/lib/ruby/gems/3.3.0/gems/puma-5.6.8/lib/puma/configuration.rb:252:in `call' +/Users/jasper.furniss/.asdf/installs/ruby/3.3.0/lib/ruby/gems/3.3.0/gems/puma-5.6.8/lib/puma/request.rb:77:in `block in handle_request' +/Users/jasper.furniss/.asdf/installs/ruby/3.3.0/lib/ruby/gems/3.3.0/gems/puma-5.6.8/lib/puma/thread_pool.rb:340:in `with_force_shutdown' +/Users/jasper.furniss/.asdf/installs/ruby/3.3.0/lib/ruby/gems/3.3.0/gems/puma-5.6.8/lib/puma/request.rb:76:in `handle_request' +/Users/jasper.furniss/.asdf/installs/ruby/3.3.0/lib/ruby/gems/3.3.0/gems/puma-5.6.8/lib/puma/server.rb:443:in `process_client' +/Users/jasper.furniss/.asdf/installs/ruby/3.3.0/lib/ruby/gems/3.3.0/gems/puma-5.6.8/lib/puma/thread_pool.rb:147:in `block in spawn_thread' +Completed 500 Internal Server Error in 4ms (Views: 0.2ms | ActiveRecord: 0.3ms | Allocations: 625) + + +Started GET "/" for 127.0.0.1 at 2025-01-09 12:24:46 -0500 + ActiveRecord::SchemaMigration Pluck (0.1ms) SELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC +Processing by PagesController#index as HTML + Rendering layout layouts/application.html.erb + Rendering pages/index.html.erb within layouts/application + Rendered pages/index.html.erb within layouts/application (Duration: 0.5ms | Allocations: 510) + Rendered layout layouts/application.html.erb (Duration: 273.8ms | Allocations: 127993) +Completed 200 OK in 281ms (Views: 276.0ms | ActiveRecord: 0.0ms | Allocations: 131774) + + +Started POST "/feedback" for 127.0.0.1 at 2025-01-09 12:24:59 -0500 +Processing by FeedbackController#create as JSON + Parameters: {"feedback"=>{"name"=>"Jasper", "comments"=>"Testing."}} +Received feedback params: #{"name"=>"Jasper", "comments"=>"Testing."}, "controller"=>"feedback", "action"=>"create"} permitted: false> +Raw request body: {"feedback":{"name":"Jasper","comments":"Testing."}} +Created feedback object with attributes: {"id"=>nil, "name"=>"Jasper", "comments"=>"Testing.", "created_at"=>nil, "updated_at"=>nil} +Feedback validation failed: ["Comments is too short (minimum is 10 characters)"] +Feedback attributes that failed: {"id"=>nil, "name"=>"Jasper", "comments"=>"Testing.", "created_at"=>nil, "updated_at"=>nil} +Completed 422 Unprocessable Entity in 14ms (Views: 0.1ms | ActiveRecord: 0.4ms | Allocations: 6352) + + +Started POST "/feedback" for 127.0.0.1 at 2025-01-09 12:25:08 -0500 +Processing by FeedbackController#create as JSON + Parameters: {"feedback"=>{"name"=>"Jasper", "comments"=>"Testing this awesome thing out. "}} +Received feedback params: #{"name"=>"Jasper", "comments"=>"Testing this awesome thing out. "}, "controller"=>"feedback", "action"=>"create"} permitted: false> +Raw request body: {"feedback":{"name":"Jasper","comments":"Testing this awesome thing out. "}} +Created feedback object with attributes: {"id"=>nil, "name"=>"Jasper", "comments"=>"Testing this awesome thing out. ", "created_at"=>nil, "updated_at"=>nil} + TRANSACTION (0.0ms) begin transaction + ↳ app/controllers/feedback_controller.rb:11:in `create' + Feedback Create (0.8ms) INSERT INTO "feedbacks" ("name", "comments", "created_at", "updated_at") VALUES (?, ?, ?, ?) [["name", "Jasper"], ["comments", "Testing this awesome thing out."], ["created_at", "2025-01-09 17:25:08.831132"], ["updated_at", "2025-01-09 17:25:08.831132"]] + ↳ app/controllers/feedback_controller.rb:11:in `create' + TRANSACTION (0.7ms) commit transaction + ↳ app/controllers/feedback_controller.rb:11:in `create' +Feedback saved successfully +Completed 200 OK in 4ms (Views: 0.1ms | ActiveRecord: 1.5ms | Allocations: 3066) + + +Started POST "/feedback" for 127.0.0.1 at 2025-01-09 12:33:39 -0500 +Processing by FeedbackController#create as JSON + Parameters: {"feedback"=>{"name"=>"j", "comments"=>"asdf"}} +Completed 422 Unprocessable Entity in 2ms (Views: 0.1ms | ActiveRecord: 0.2ms | Allocations: 2911) + + +Started GET "/" for 127.0.0.1 at 2025-01-09 12:40:01 -0500 +Processing by PagesController#index as HTML + Rendering layout layouts/application.html.erb + Rendering pages/index.html.erb within layouts/application + Rendered pages/index.html.erb within layouts/application (Duration: 0.0ms | Allocations: 10) + Rendered layout layouts/application.html.erb (Duration: 36.6ms | Allocations: 42267) +Completed 200 OK in 38ms (Views: 37.6ms | ActiveRecord: 0.0ms | Allocations: 42741) + + +Started GET "/" for 127.0.0.1 at 2025-01-09 12:59:46 -0500 +Processing by PagesController#index as HTML + Rendering layout layouts/application.html.erb + Rendering pages/index.html.erb within layouts/application + Rendered pages/index.html.erb within layouts/application (Duration: 0.0ms | Allocations: 7) + Rendered layout layouts/application.html.erb (Duration: 27.1ms | Allocations: 42133) +Completed 200 OK in 28ms (Views: 27.5ms | ActiveRecord: 0.0ms | Allocations: 42362) + + +Started POST "/feedback" for 127.0.0.1 at 2025-01-09 13:05:55 -0500 +Processing by FeedbackController#create as JSON + Parameters: {"feedback"=>{"name"=>"asdf", "comments"=>"asdfasdf"}} +Completed 422 Unprocessable Entity in 2ms (Views: 0.1ms | ActiveRecord: 0.2ms | Allocations: 1043) + + +Started POST "/feedback" for 127.0.0.1 at 2025-01-09 13:06:00 -0500 +Processing by FeedbackController#create as JSON + Parameters: {"feedback"=>{"name"=>"asdf", "comments"=>"asdfasdfasdfasdf"}} + TRANSACTION (0.1ms) begin transaction + ↳ app/controllers/feedback_controller.rb:7:in `create' + Feedback Create (1.8ms) INSERT INTO "feedbacks" ("name", "comments", "created_at", "updated_at") VALUES (?, ?, ?, ?) [["name", "asdf"], ["comments", "asdfasdfasdfasdf"], ["created_at", "2025-01-09 18:06:00.424873"], ["updated_at", "2025-01-09 18:06:00.424873"]] + ↳ app/controllers/feedback_controller.rb:7:in `create' + TRANSACTION (0.6ms) commit transaction + ↳ app/controllers/feedback_controller.rb:7:in `create' +Completed 200 OK in 5ms (Views: 0.2ms | ActiveRecord: 2.5ms | Allocations: 2049) + +