From f5bf2d9fff7562415d7ad54ee158ecdfc2eeb488 Mon Sep 17 00:00:00 2001 From: Georges Gabereau Date: Wed, 18 Jun 2025 14:03:44 -0400 Subject: [PATCH 1/3] New design! --- Gemfile.lock | 1 + .../stylesheets/application.tailwind.css | 88 +++++++++- app/controllers/events_controller.rb | 1 - .../controllers/clipboard_controller.js | 51 +++--- app/views/admin/events/_form.html.erb | 165 ++++++++++++++---- app/views/admin/events/edit.html.erb | 54 +++++- app/views/admin/events/index.html.erb | 116 ++++++++++-- app/views/admin/events/new.html.erb | 44 ++++- app/views/admin/events/show.html.erb | 100 ++++++++++- app/views/events/_event.html.erb | 114 ++++++++---- app/views/events/index.html.erb | 2 +- app/views/events/past.html.erb | 87 +++++++++ app/views/events/show.html.erb | 4 +- app/views/layouts/_event_layout.html.erb | 48 +++-- app/views/layouts/_newsletter_form.html.erb | 4 +- .../layouts/_supporting_companies.html.erb | 22 ++- app/views/layouts/application.html.erb | 24 ++- app/views/layouts/common/_flash.html.erb | 78 ++++++++- app/views/layouts/common/_navigation.html.erb | 73 +++++--- app/views/static/about.html.erb | 74 ++++++-- app/views/static/calendar.html.erb | 124 ++++++++++--- app/views/static/chat.html.erb | 83 +++++++-- config/database.yml.sample | 88 ---------- config/environments/development.rb | 2 + config/storage.yml.sample | 34 ---- tailwind.config.js | 55 ++++-- 26 files changed, 1158 insertions(+), 378 deletions(-) create mode 100644 app/views/events/past.html.erb delete mode 100644 config/database.yml.sample delete mode 100644 config/storage.yml.sample diff --git a/Gemfile.lock b/Gemfile.lock index f381b25..cd8fc5c 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -250,6 +250,7 @@ GEM PLATFORMS arm64-darwin-23 + arm64-darwin-24 x86_64-darwin-22 x86_64-linux diff --git a/app/assets/stylesheets/application.tailwind.css b/app/assets/stylesheets/application.tailwind.css index a25c0c8..0d900f1 100644 --- a/app/assets/stylesheets/application.tailwind.css +++ b/app/assets/stylesheets/application.tailwind.css @@ -1,25 +1,63 @@ +@import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap'); + @tailwind base; @tailwind components; @tailwind utilities; @layer base { + body { + @apply antialiased; + } + h1 { - @apply text-2xl font-bold; + @apply text-4xl md:text-5xl font-bold tracking-tight text-charcoal; } + h2 { - @apply text-xl font-semibold; + @apply text-2xl md:text-3xl font-semibold tracking-tight text-charcoal; } + h3 { - @apply text-lg font-medium; + @apply text-xl md:text-2xl font-medium text-charcoal; + } + + p { + @apply text-gray-700 leading-relaxed; + } + + a { + @apply transition-colors duration-200; + } +} + +@layer components { + .btn-primary { + @apply inline-flex items-center px-6 py-3 border border-transparent text-base font-medium rounded-full shadow-soft text-white bg-ruby-500 hover:bg-ruby-600 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-ruby-500 transition-all duration-200 hover:shadow-lg hover:-translate-y-0.5; + } + + .btn-secondary { + @apply inline-flex items-center px-6 py-3 border border-ruby-200 text-base font-medium rounded-full text-ruby-600 bg-white hover:bg-ruby-50 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-ruby-500 transition-all duration-200 hover:shadow-md; + } + + .card { + @apply bg-white rounded-2xl shadow-soft hover:shadow-xl transition-all duration-300 overflow-hidden; + } + + .gradient-text { + @apply bg-gradient-to-r from-ruby-500 to-ruby-700 bg-clip-text text-transparent; } } .coc a { - @apply text-ruby underline; + @apply text-ruby-500 underline hover:text-ruby-600; } .coc p { - @apply mb-2; + @apply mb-4; +} + +a.external-link { + @apply inline-flex items-center gap-1 text-ruby-500 hover:text-ruby-600; } a.external-link::after { @@ -27,7 +65,45 @@ a.external-link::after { display: inline-block; width: 1em; height: 1em; - margin-left: 0.25em; background-size: 1em; background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxNiAxNiIgZmlsbD0iI2Q2NDA0NSIgY2xhc3M9InNpemUtNCI+CiAgPHBhdGggZD0iTTYuMjIgOC43MmEuNzUuNzUgMCAwIDAgMS4wNiAxLjA2bDUuMjItNS4yMnYxLjY5YS43NS43NSAwIDAgMCAxLjUgMHYtMy41YS43NS43NSAwIDAgMC0uNzUtLjc1aC0zLjVhLjc1Ljc1IDAgMCAwIDAgMS41aDEuNjlMNi4yMiA4LjcyWiIgLz4KICA8cGF0aCBkPSJNMy41IDYuNzVjMC0uNjkuNTYtMS4yNSAxLjI1LTEuMjVIN0EuNzUuNzUgMCAwIDAgNyA0SDQuNzVBMi43NSAyLjc1IDAgMCAwIDIgNi43NXY0LjVBMi43NSAyLjc1IDAgMCAwIDQuNzUgMTRoNC41QTIuNzUgMi43NSAwIDAgMCAxMiAxMS4yNVY5YS43NS43NSAwIDAgMC0xLjUgMHYyLjI1YzAgLjY5LS41NiAxLjI1LTEuMjUgMS4yNWgtNC41Yy0uNjkgMC0xLjI1LS41Ni0xLjI1LTEuMjV2LTQuNVoiIC8+Cjwvc3ZnPgo="); + transition: transform 0.2s ease; +} + +a.external-link:hover::after { + transform: translate(2px, -2px); +} + +/* Smooth scroll behavior */ +html { + scroll-behavior: smooth; +} + +/* Custom animations */ +.animate-in { + animation: fade-in 0.5s ease-in-out; +} + +.animate-up { + animation: slide-up 0.5s ease-out; +} + +/* ConvertKit form input overrides for better visibility */ +.formkit-form[data-uid="4c3ae9b5e4"] .formkit-input { + @apply px-4 py-3 border border-gray-300 rounded-lg shadow-sm transition-colors; + border-color: rgb(209, 213, 219) !important; +} + +.formkit-form[data-uid="4c3ae9b5e4"] .formkit-input:focus { + @apply ring-1 ring-ruby-500 border-ruby-500; + border-color: rgb(214, 64, 69) !important; +} + +.formkit-form[data-uid="4c3ae9b5e4"] .formkit-submit { + @apply px-6 py-3 bg-ruby-500 hover:bg-ruby-600 rounded-full transition-all duration-200 hover:shadow-lg hover:-translate-y-0.5; + background-color: rgb(214, 64, 69) !important; +} + +.formkit-form[data-uid="4c3ae9b5e4"] .formkit-submit:hover { + background-color: rgb(185, 28, 28) !important; } diff --git a/app/controllers/events_controller.rb b/app/controllers/events_controller.rb index 773302f..14f10db 100644 --- a/app/controllers/events_controller.rb +++ b/app/controllers/events_controller.rb @@ -22,7 +22,6 @@ def show def past @events = Event.with_all_rich_text.past - render :index end def next diff --git a/app/javascript/controllers/clipboard_controller.js b/app/javascript/controllers/clipboard_controller.js index 905c11f..10b257f 100644 --- a/app/javascript/controllers/clipboard_controller.js +++ b/app/javascript/controllers/clipboard_controller.js @@ -1,14 +1,12 @@ import { Controller } from "@hotwired/stimulus" +// Connects to data-controller="clipboard" export default class extends Controller { - static targets = ["button", "source"] + static targets = ["source", "button", "default", "success"] static values = { - successContent: String, - successDuration: { - type: Number, - default: 2000, - } + successContent: { type: String, default: "✅" }, + successDuration: { type: Number, default: 2000 } } connect() { @@ -19,23 +17,32 @@ export default class extends Controller { copy(event) { event.preventDefault() - - const text = this.sourceTarget.innerHTML || this.sourceTarget.value - - navigator.clipboard.writeText(text).then(() => this.copied()) + + const text = this.sourceTarget.value || this.sourceTarget.innerHTML + navigator.clipboard.writeText(text).then(() => { + // Show success state + if (this.hasDefaultTarget && this.hasSuccessTarget) { + this.defaultTarget.classList.add('hidden') + this.successTarget.classList.remove('hidden') + + // Reset after specified duration + setTimeout(() => { + this.defaultTarget.classList.remove('hidden') + this.successTarget.classList.add('hidden') + }, this.successDurationValue) + } else if (this.hasButtonTarget) { + // Fallback for old implementation + const originalContent = this.buttonTarget.innerHTML + this.buttonTarget.innerHTML = this.successContentValue + + setTimeout(() => { + this.buttonTarget.innerHTML = originalContent + }, this.successDurationValue) + } + }) } - copied() { - if (!this.hasButtonTarget) return - - if (this.timeout) { - clearTimeout(this.timeout) - } - - this.buttonTarget.innerHTML = this.successContentValue - - this.timeout = setTimeout(() => { - this.buttonTarget.innerHTML = this.originalContent - }, this.successDurationValue) + get successContentValue() { + return this.data.get("successContentValue") } } diff --git a/app/views/admin/events/_form.html.erb b/app/views/admin/events/_form.html.erb index b79d427..e50a6cc 100644 --- a/app/views/admin/events/_form.html.erb +++ b/app/views/admin/events/_form.html.erb @@ -1,43 +1,136 @@ <%= form_with(model: [:admin, event]) do |form| %> <% if event.errors.any? %> -
-

<%= pluralize(event.errors.count, "error") %> - prohibited this event from being saved:

- - +
+
+
+ + + +
+
+

+ <%= pluralize(event.errors.count, "error") %> prohibited this event from being saved: +

+
+
    + <% event.errors.each do |error| %> +
  • <%= error.full_message %>
  • + <% end %> +
+
+
+
<% end %> -
- <%= form.label :name %> - <%= form.text_field :name, required: true %> - <%= form.label :location %> - <%= form.rich_text_area :location, required: true %> - <%= form.label :rsvp_link %> - <%= form.text_field :rsvp_link, required: true %> - <%= form.label :description %> - <%= form.rich_text_area :description %> - <%= form.label :sponsor %> - <%= form.text_field :sponsor %> - <%= form.label :sponsor_link %> - <%= form.text_field :sponsor_link %> - <%= form.label :sponsor_logo %> - <%= form.text_field :sponsor_logo %> - <%= form.label :start_at %> - <%= form.datetime_field :start_at, - include_seconds: false, - value: - event - &.start_at - &.in_time_zone("Eastern Time (US & Canada)") - .presence || - Time.zone.now.in_time_zone("Eastern Time (US & Canada)") %> - <%= form.label :status %> - <%= form.select :status, options_for_select(Event.statuses_for_select, event.status) %> - <%= form.submit %> +
+ +
+

Basic Information

+ +
+
+ <%= form.label :name, class: "block text-sm font-medium text-gray-700 mb-1" %> + <%= form.text_field :name, required: true, class: "block w-full px-4 py-3 rounded-lg border border-gray-300 shadow-sm focus:border-ruby-500 focus:ring-1 focus:ring-ruby-500 transition-colors" %> +
+ +
+ <%= form.label :start_at, class: "block text-sm font-medium text-gray-700 mb-1" %> + <%= form.datetime_field :start_at, + include_seconds: false, + value: event&.start_at&.in_time_zone("Eastern Time (US & Canada)").presence || Time.zone.now.in_time_zone("Eastern Time (US & Canada)"), + class: "block w-full px-4 py-3 rounded-lg border border-gray-300 shadow-sm focus:border-ruby-500 focus:ring-1 focus:ring-ruby-500 transition-colors" %> +

Eastern Time (US & Canada)

+
+ +
+ <%= form.label :status, class: "block text-sm font-medium text-gray-700 mb-1" %> + <%= form.select :status, + options_for_select(Event.statuses_for_select, event.status), + {}, + class: "block w-full px-4 py-3 rounded-lg border border-gray-300 shadow-sm focus:border-ruby-500 focus:ring-1 focus:ring-ruby-500 transition-colors" %> +
+ +
+ <%= form.label :rsvp_link, "RSVP Link", class: "block text-sm font-medium text-gray-700 mb-1" %> + <%= form.text_field :rsvp_link, required: true, placeholder: "https://...", class: "block w-full px-4 py-3 rounded-lg border border-gray-300 shadow-sm focus:border-ruby-500 focus:ring-1 focus:ring-ruby-500 transition-colors placeholder-gray-400" %> +
+
+
+ + +
+

Event Details

+ +
+
+ <%= form.label :location, class: "block text-sm font-medium text-gray-700 mb-1" %> +
+ <%= form.rich_text_area :location, required: true, class: "block w-full" %> +
+
+ +
+ <%= form.label :description, "Agenda", class: "block text-sm font-medium text-gray-700 mb-1" %> +
+ <%= form.rich_text_area :description, class: "block w-full" %> +
+
+
+
+ + +
+

Sponsor Information

+

Optional: Add sponsor details if this event has a sponsor

+ +
+
+ <%= form.label :sponsor, "Sponsor Name", class: "block text-sm font-medium text-gray-700 mb-1" %> + <%= form.text_field :sponsor, class: "block w-full px-4 py-3 rounded-lg border border-gray-300 shadow-sm focus:border-ruby-500 focus:ring-1 focus:ring-ruby-500 transition-colors" %> +
+ +
+ <%= form.label :sponsor_link, "Sponsor Website", class: "block text-sm font-medium text-gray-700 mb-1" %> + <%= form.text_field :sponsor_link, placeholder: "https://...", class: "block w-full px-4 py-3 rounded-lg border border-gray-300 shadow-sm focus:border-ruby-500 focus:ring-1 focus:ring-ruby-500 transition-colors placeholder-gray-400" %> +
+ +
+ <%= form.label :sponsor_logo, "Logo Filename", class: "block text-sm font-medium text-gray-700 mb-1" %> + <%= form.text_field :sponsor_logo, placeholder: "company.png", class: "block w-full px-4 py-3 rounded-lg border border-gray-300 shadow-sm focus:border-ruby-500 focus:ring-1 focus:ring-ruby-500 transition-colors placeholder-gray-400" %> +

Logo should be placed in app/assets/images/sponsors/

+
+
+
+ + +
+ <%= link_to "Cancel", admin_events_path, class: "btn-secondary" %> + <%= form.submit class: "btn-primary" %> +
<% end %> + + diff --git a/app/views/admin/events/edit.html.erb b/app/views/admin/events/edit.html.erb index b4b560c..d7d1fe8 100644 --- a/app/views/admin/events/edit.html.erb +++ b/app/views/admin/events/edit.html.erb @@ -1,13 +1,49 @@ -

Editing event

- -<%= render "form", event: @event %> - -
- -
- <%= link_to "Back to events", admin_events_path %> +
+
+ + + + +
+

Edit Event

+

Update the event details below

+
+ + + <%= render "form", event: @event %> + + +
+
+

Quick Actions

+
+ <%= link_to "View Event", event_path(@event), class: "text-sm text-ruby-600 hover:text-ruby-700", target: "_blank" %> + <%= link_to "View in Admin", admin_event_path(@event), class: "text-sm text-ruby-600 hover:text-ruby-700" %> +
+
+
+
<% content_for :page_title do %> - Editing <%= @event.name %> + Edit <%= @event.name %> - Admin <% end %> diff --git a/app/views/admin/events/index.html.erb b/app/views/admin/events/index.html.erb index 6f6e6d7..fd14376 100644 --- a/app/views/admin/events/index.html.erb +++ b/app/views/admin/events/index.html.erb @@ -1,20 +1,106 @@ -

Event List

-<%= link_to "New Event", new_admin_event_path, class: "rounded bg-ruby px-2 py-1 text-xs text-white" %> -
-
    - <% @events.each do |event| %> -
  • - - <%= link_to event.name, admin_event_path(event) %> - - <%= link_to "Edit", edit_admin_event_path(event), class: "text-underline" %> - <%= button_to "Delete", admin_event_path(event), method: :delete, class: "rounded bg-red-600 px-2 py-1 text-xs font-semibold text-white shadow-sm hover:bg-red-500 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-red-600", data: {turbo_confirm: "Are you sure?"} %> -
  • - <% end %> -
+
+
+ +
+
+

Event Management

+
+
+ <%= link_to new_admin_event_path, class: "btn-primary" do %> + + + + New Event + <% end %> +
+
+ + +
+
+ <% if @events.any? %> +
+
    + <% @events.each do |event| %> +
  • +
    +
    +
    +

    + <%= link_to event.name, admin_event_path(event), class: "hover:text-ruby-600" %> +

    + <% if event.published? %> + + Published + + <% else %> + + Draft + + <% end %> +
    +
    + + + + + <%= event.start_at.strftime("%B %d, %Y at %l:%M %p") %> + + <% if event.sponsor.present? %> + + + + + Sponsored by <%= event.sponsor %> + + <% end %> +
    +
    + +
    + <%= link_to edit_admin_event_path(event), class: "p-2 text-gray-400 hover:text-ruby-600 hover:bg-gray-100 rounded-lg transition-colors" do %> + + + + <% end %> + + <%= button_to admin_event_path(event), + method: :delete, + class: "p-2 text-gray-400 hover:text-red-600 hover:bg-red-50 rounded-lg transition-colors", + data: { turbo_confirm: "Are you sure you want to delete this event?" } do %> + + + + <% end %> +
    +
    +
  • + <% end %> +
+
+ <% else %> +
+ + + +

No events

+

Get started by creating a new event.

+
+ <%= link_to new_admin_event_path, class: "btn-primary" do %> + + + + New Event + <% end %> +
+
+ <% end %> +
+
+
<% content_for :page_title do %> - Admin Home + Admin - Events <% end %> diff --git a/app/views/admin/events/new.html.erb b/app/views/admin/events/new.html.erb index bc7b9e5..dbfae73 100644 --- a/app/views/admin/events/new.html.erb +++ b/app/views/admin/events/new.html.erb @@ -1,12 +1,38 @@ -

New event

- -<%= render "form", event: @event %> - -
- -
- <%= link_to "Back to events", events_path %> +
+
+ + + + +
+

Create New Event

+

Fill in the details for the upcoming Toronto Ruby event

+
+ + + <%= render "form", event: @event %> +
+ <% content_for :page_title do %> - Create new event + Create New Event - Admin <% end %> diff --git a/app/views/admin/events/show.html.erb b/app/views/admin/events/show.html.erb index 9059494..c7bdd1f 100644 --- a/app/views/admin/events/show.html.erb +++ b/app/views/admin/events/show.html.erb @@ -1,10 +1,96 @@ -<%= content_for :event_content do %> - <%= link_to "Edit this event", edit_admin_event_path(@event) %> - <%= render partial: "events/event", locals: { event: @event } %> -<% end %> - -<%= render partial: "layouts/event_layout" %> +
+
+ + + + +
+
+
+ + + + Admin Preview +
+
+ <%= link_to edit_admin_event_path(@event), class: "btn-secondary text-sm py-2 px-4" do %> + + + + Edit Event + <% end %> + <%= link_to event_path(@event), class: "text-sm text-ruby-600 hover:text-ruby-700 font-medium", target: "_blank" do %> + View Public Page + + + + <% end %> +
+
+
+ + +
+ <%= render partial: "events/event", locals: { event: @event } %> +
+ + +
+

Event Metadata

+
+
+
Status
+
+ <% if @event.published? %> + + Published + + <% else %> + + Draft + + <% end %> +
+
+ +
+
Created
+
<%= @event.created_at.strftime("%B %d, %Y at %l:%M %p") %>
+
+ +
+
Last Updated
+
<%= @event.updated_at.strftime("%B %d, %Y at %l:%M %p") %>
+
+ +
+
Slug
+
<%= @event.slug %>
+
+
+
+
+
<% content_for :page_title do %> - <%== @event.name %> + <%= @event.name %> - Admin <% end %> diff --git a/app/views/events/_event.html.erb b/app/views/events/_event.html.erb index f7727f5..658c8d2 100644 --- a/app/views/events/_event.html.erb +++ b/app/views/events/_event.html.erb @@ -1,44 +1,92 @@ -
+
<% future = Time.zone.now < event.start_at %> -
-
-

<%= link_to event.name, event %>

-
-

<%= event.start_time %>

- <%= event.location %> -
-
- -
-

Agenda

-
-
- <%= event.description %> + +
+ +
+
+

+ <%= event.name %> +

+
+
+ + + + <%= event.start_time %> +
+ <% if future %> + + Upcoming + + <% else %> + + Past Event + + <% end %>
-
-
-
- <% if future %> -
- <%= link_to event.rsvp_link, class: "rounded-full bg-ruby px-4 py-2.5 font-semibold text-white/100 shadow-sm ring-1 ring-inset ring-ruby hover:bg-red-400" do %> + + <% if future %> + <%= link_to event.rsvp_link, class: "btn-primary", target: "_blank", rel: "noopener" do %> Join the event + + + <% end %> + <% end %> +
+ + +
+ +
+

+ + + + + Location +

+
+ <%= event.location %> +
- <% end %> + + +
+

+ + + + Agenda +

+
+
+ <%= event.description %> +
+
+
+
+ + <% if event.sponsor %> -

Sponsor

-
- <%= link_to event.sponsor_link do %> - <% if event.sponsor_logo.present? %> - <%= image_tag "sponsors/#{event.sponsor_logo}", class: "max-h-20" %> - <% else %> - <%= event.sponsor.titleize %> +
+
+

Event Sponsor

+ <%= link_to event.sponsor_link, class: "group flex items-center gap-4 hover:opacity-80 transition-opacity", target: "_blank", rel: "noopener" do %> + <% if event.sponsor_logo.present? %> + <%= image_tag "sponsors/#{event.sponsor_logo}", class: "max-h-16 max-w-[200px] object-contain", alt: event.sponsor %> + <% else %> + + <%= event.sponsor.titleize %> + + <% end %> + + + <% end %> - <% end %> +
<% end %>
diff --git a/app/views/events/index.html.erb b/app/views/events/index.html.erb index d8f5cd4..f1a126a 100644 --- a/app/views/events/index.html.erb +++ b/app/views/events/index.html.erb @@ -11,7 +11,7 @@ <%= content_for :event_content do %> <%= render partial: "event", collection: @events %> - + <% end %> <%= render partial: "layouts/event_layout" %> diff --git a/app/views/events/past.html.erb b/app/views/events/past.html.erb new file mode 100644 index 0000000..a43e318 --- /dev/null +++ b/app/views/events/past.html.erb @@ -0,0 +1,87 @@ +
+
+ +
+
+ + + +
+

Past Events

+

+ Explore our archive of previous Toronto Ruby meetups. + Each event brought our community together to learn, share, and grow. +

+
+ + +
+
+
<%= @events.count %>
+
Total Events
+
+
+
+ <%= @events.select { |e| e.start_at.year == Date.current.year }.count %> +
+
Events This Year
+
+
+
+ <%= @events.map { |e| e.start_at.year }.uniq.count %> +
+
Years Active
+
+
+ + +
+ <% if @events.any? %> + <% @events.group_by { |event| event.start_at.year }.sort.reverse.each do |year, year_events| %> +
+ +
+
+ <%= year %> +
+
+ + +
+ <% year_events.sort_by(&:start_at).reverse.each do |event| %> + <%= render partial: "events/event", locals: { event: event } %> + <% end %> +
+
+ <% end %> + <% else %> +
+ + + +

No past events

+

Check back after our first meetup!

+
+ <% end %> +
+ + +
+
+

Don't Miss Our Next Event

+

+ Join our newsletter to get notified about upcoming Toronto Ruby meetups +

+ <%= link_to "View Upcoming Events", root_path, class: "btn-primary" %> +
+
+
+
+ +<% content_for :page_title do %> + Past Events - Toronto Ruby +<% end %> + +<% content_for :page_description do %> + Browse the archive of past Toronto Ruby meetups and community events +<% end %> \ No newline at end of file diff --git a/app/views/events/show.html.erb b/app/views/events/show.html.erb index 30d696a..ca8d9f7 100644 --- a/app/views/events/show.html.erb +++ b/app/views/events/show.html.erb @@ -4,6 +4,4 @@ <%= content_for :event_content do %> <%= render partial: "events/event", locals: { event: @event } %> -<% end %> - -<%= render partial: "layouts/event_layout" %> +<% end %> \ No newline at end of file diff --git a/app/views/layouts/_event_layout.html.erb b/app/views/layouts/_event_layout.html.erb index 846bcf7..4495e67 100644 --- a/app/views/layouts/_event_layout.html.erb +++ b/app/views/layouts/_event_layout.html.erb @@ -1,18 +1,42 @@ -
-
-
-

- Meetups for Toronto's Ruby community +
+ +
+
+
+ +
+ <%= image_tag "logo-transparent.png", class: "h-48 md:h-48 lg:h-64 w-auto mx-auto", alt: "Toronto Ruby" %> +
+ +

+ Meetups for Toronto's + Ruby community

- -

We're a group of Ruby developers who meet up to talk about programming, the industry, and life. We're working to strengthen the local Ruby community and provide a positive space for everyone to connect.

+

+ We're a group of Ruby developers who meet up to talk about programming, the industry, and life. + We're working to strengthen the local Ruby community and provide a positive space for everyone to connect. +

-
+
+ + +
+
<%= yield(:event_content) %>
-
- <%= render 'layouts/newsletter_form' %> + + +
+
+

Stay in the loop

+

Get notified about upcoming meetups and Ruby community news

+ <%= render 'layouts/newsletter_form' %> +
+
+ + +
+ <%= render 'layouts/supporting_companies' %>
- <%= render 'layouts/supporting_companies' %>
-

+
diff --git a/app/views/layouts/_newsletter_form.html.erb b/app/views/layouts/_newsletter_form.html.erb index 44462a5..69c6c26 100644 --- a/app/views/layouts/_newsletter_form.html.erb +++ b/app/views/layouts/_newsletter_form.html.erb @@ -2,9 +2,7 @@
-
-

Nice to meet you, let's keep in touch!

-
+
    diff --git a/app/views/layouts/_supporting_companies.html.erb b/app/views/layouts/_supporting_companies.html.erb index 7406aff..fb782c0 100644 --- a/app/views/layouts/_supporting_companies.html.erb +++ b/app/views/layouts/_supporting_companies.html.erb @@ -1,14 +1,18 @@ -
    -

    Supporting Companies

    -
    - <%= link_to 'https://clio.com' do %> - <%= image_tag "sponsors/clio.png", class: "max-h-20 px-4" %> +
    +

    Supporting Companies

    +
    + <%= link_to 'https://clio.com', class: 'group grayscale hover:grayscale-0 transition-all duration-300', target: '_blank', rel: 'noopener' do %> + <%= image_tag "sponsors/clio.png", class: "h-16 md:h-20 w-auto opacity-60 group-hover:opacity-100 transition-opacity", alt: "Clio" %> <% end %> - <%= link_to 'https://shopify.com' do %> - <%= image_tag "sponsors/shopify.png", class: "max-h-16" %> + <%= link_to 'https://shopify.com', class: 'group grayscale hover:grayscale-0 transition-all duration-300', target: '_blank', rel: 'noopener' do %> + <%= image_tag "sponsors/shopify.png", class: "h-12 md:h-16 w-auto opacity-60 group-hover:opacity-100 transition-opacity", alt: "Shopify" %> <% end %> - <%= link_to 'https://switchgrowth.com' do %> - <%= image_tag "sponsors/switch.png", class: "max-h-20" %> + <%= link_to 'https://switchgrowth.com', class: 'group grayscale hover:grayscale-0 transition-all duration-300', target: '_blank', rel: 'noopener' do %> + <%= image_tag "sponsors/switch.png", class: "h-16 md:h-20 w-auto opacity-60 group-hover:opacity-100 transition-opacity", alt: "Switch" %> <% end %>
    +

    + Interested in supporting Toronto Ruby? + <%= link_to "Get in touch", "mailto:info@toronto-ruby.com", class: "text-ruby-500 hover:text-ruby-600 font-medium" %> +

    diff --git a/app/views/layouts/application.html.erb b/app/views/layouts/application.html.erb index d0480d8..20a5905 100644 --- a/app/views/layouts/application.html.erb +++ b/app/views/layouts/application.html.erb @@ -1,5 +1,5 @@ - + <%= title %> @@ -13,9 +13,23 @@ <%= javascript_include_tag "application", "data-turbo-track": "reload", defer: true %> - - <%= render "layouts/common/navigation" %> - <%= render "layouts/common/flash" %> - <%= yield %> + +
    + <%= render "layouts/common/navigation" %> + <%= render "layouts/common/flash" %> +
    + <%= yield %> +
    +
    +
    +

    © <%= Date.current.year %> Toronto Ruby. Built with ❤️ in Toronto.

    +
    + <%= link_to "Code of Conduct", code_of_conduct_path, class: "hover:text-ruby-500" %> + <%= link_to "About", about_path, class: "hover:text-ruby-500" %> + <%= link_to "Contact", "mailto:info@toronto-ruby.com", class: "hover:text-ruby-500" %> +
    +
    +
    +
    diff --git a/app/views/layouts/common/_flash.html.erb b/app/views/layouts/common/_flash.html.erb index 759af5f..ddf85fc 100644 --- a/app/views/layouts/common/_flash.html.erb +++ b/app/views/layouts/common/_flash.html.erb @@ -1,13 +1,75 @@ <% if flash[:notice] %> -
    -
    -
    - +
    +
    +
    +
    + +
    +
    +

    <%= flash[:notice] %>

    +
    +
    + +
    -
    -

    <%= flash[:notice] %>

    +
    +
    + + + + +<% end %> + +<% if flash[:alert] %> +
    +
    +
    +
    + +
    +
    +

    <%= flash[:alert] %>

    +
    +
    + +
    diff --git a/app/views/layouts/common/_navigation.html.erb b/app/views/layouts/common/_navigation.html.erb index 8b7df52..4d993ae 100644 --- a/app/views/layouts/common/_navigation.html.erb +++ b/app/views/layouts/common/_navigation.html.erb @@ -1,22 +1,53 @@ -
    - <%= image_tag "logo-transparent.png", class: "mx-auto max-w-[16rem] h-auto" %> - +
    +
    +
    + +
    + <%= link_to root_path, class: "flex items-center group" do %> + <%= image_tag "logo-transparent.png", class: "h-12 w-auto transition-transform group-hover:scale-105", alt: "Toronto Ruby" %> + <% end %> +
    + + + + + +
    + +
    +
    + + + +
    diff --git a/app/views/static/about.html.erb b/app/views/static/about.html.erb index a2fe678..b28a597 100644 --- a/app/views/static/about.html.erb +++ b/app/views/static/about.html.erb @@ -1,18 +1,72 @@ -
    -
    -
    -

    - Toronto Ruby is organized by Simmon Li, Georges Gabereau and Melanie Wang. +

    +
    +
    +

    About Toronto Ruby

    +

    + We're passionate about building a thriving Ruby community in Toronto +

    +
    + +
    +

    Our Mission

    +

    + Toronto Ruby is dedicated to creating an inclusive, welcoming space for Ruby developers of all skill levels. + We believe in the power of community to help developers learn, grow, and build amazing things together. +

    +

    + Through regular meetups, workshops, and social events, we're working to strengthen connections within + Toronto's tech community and showcase the vibrant Ruby ecosystem in our city.

    -

    - Find us on Github! +

    + +
    +

    Meet the Organizers

    +
    +
    +
    + SL +
    +

    Simmon Li

    +

    Community Builder & Ruby Enthusiast

    + <%= link_to "crespire.dev", "https://crespire.dev/", class: "text-ruby-500 hover:text-ruby-600 text-sm font-medium", target: "_blank", rel: "noopener" %> +
    + +
    +
    + GG +
    +

    Georges Gabereau

    +

    Tech Lead & Open Source Contributor

    + <%= link_to "georg.es", "https://georg.es/", class: "text-ruby-500 hover:text-ruby-600 text-sm font-medium", target: "_blank", rel: "noopener" %> +
    + +
    +
    + MW +
    +

    Melanie Wang

    +

    Developer & Community Advocate

    + <%= link_to "LinkedIn", "https://www.linkedin.com/in/melanie-wang", class: "text-ruby-500 hover:text-ruby-600 text-sm font-medium", target: "_blank", rel: "noopener" %> +
    +
    +
    + +
    +

    + Want to get involved or have questions?

    +
    + <%= link_to "Join us on GitHub", "https://github.com/toronto-ruby", class: "btn-secondary", target: "_blank", rel: "noopener" %> + <%= link_to "Contact Us", "mailto:info@toronto-ruby.com", class: "btn-primary" %> +
    -
    +
    + <% content_for :page_title do %> -About + About Toronto Ruby <% end %> + <% content_for :page_description do %> -About the organizers. + Learn about the organizers and mission behind Toronto Ruby <% end %> diff --git a/app/views/static/calendar.html.erb b/app/views/static/calendar.html.erb index 56f817f..88fe288 100644 --- a/app/views/static/calendar.html.erb +++ b/app/views/static/calendar.html.erb @@ -1,32 +1,112 @@ -
    -
    -
    -

    - Icalendar Integration -

    - -

    - Add the Toronto Ruby events as a calendar subscription to your own calendar. -

    - -

    - Copy the following URL and import the calendar: +

    +
    +
    +
    + + + +
    +

    Never Miss a Meetup

    +

    + Subscribe to our calendar and get automatic updates for all Toronto Ruby events

    - -
    - - +
    + +
    +
    +

    Add to Your Calendar

    +

    + Import our events directly into your favorite calendar app. You'll automatically receive updates when new events are scheduled or existing events are modified. +

    + +
    + +
    + + +
    +
    + +
    +
    +

    + + + + Apple Calendar +

    +

    + Settings → Add Account → Other → Add Subscribed Calendar +

    +
    + +
    +

    + + + + Google Calendar +

    +

    + Other calendars → From URL → Add calendar +

    +
    +
    +
    + +
    +

    Why subscribe?

    +
      +
    • + + + + Automatic updates when events are added or changed +
    • +
    • + + + + Get reminders before each meetup +
    • +
    • + + + + See event details directly in your calendar +
    • +
    -
    +
    <% content_for :page_title do %> -Calendar + Calendar - Toronto Ruby <% end %> <% content_for :page_description do %> -Add the Toronto Ruby events as a calendar subscription to your own calendar. + Subscribe to Toronto Ruby events and never miss a meetup <% end %> diff --git a/app/views/static/chat.html.erb b/app/views/static/chat.html.erb index 169e22b..83c7c7a 100644 --- a/app/views/static/chat.html.erb +++ b/app/views/static/chat.html.erb @@ -1,19 +1,78 @@ -
    -
    -
    -

    - Chat with us on Slack! -

    - -

    - The <%= link_to "Ruby on Rails Link Slack", "https://rubyonrails.link/", class: 'underline text-ruby' %> has kindly provided us a channel to chat in, come join us in the #toronto channel! +

    +
    +
    +
    + + + +
    +

    Chat with the Community

    +

    + Connect with Ruby developers in Toronto and beyond. Share ideas, ask questions, and build lasting connections. +

    +
    + +
    +
    +
    + #toronto +
    +
    + +

    + The <%= link_to "Ruby on Rails Link Slack", "https://rubyonrails.link/", class: 'text-ruby-500 hover:text-ruby-600 font-medium' %> + community has kindly provided us with a dedicated channel. Join thousands of Ruby developers from around the world! +

    + +
    +

    What you'll find:

    +
      +
    • + + + + Local meetup announcements and discussions +
    • +
    • + + + + Job opportunities in the Toronto tech scene +
    • +
    • + + + + Technical help and code reviews +
    • +
    • + + + + Casual conversations with fellow Rubyists +
    • +
    +
    +
    + +
    + <%= link_to "https://rubyonrails.link/", class: "btn-primary", target: "_blank", rel: "noopener" do %> + Join the Slack Community + + + + <% end %> +

    + After joining, look for the #toronto channel

    -
    +
    + <% content_for :page_title do %> -Chat + Chat - Toronto Ruby <% end %> + <% content_for :page_description do %> -Join us on Slack! + Join the Toronto Ruby community on Slack and connect with local developers <% end %> diff --git a/config/database.yml.sample b/config/database.yml.sample deleted file mode 100644 index 2bf56ed..0000000 --- a/config/database.yml.sample +++ /dev/null @@ -1,88 +0,0 @@ -# PostgreSQL. Versions 9.3 and up are supported. -# -# Install the pg driver: -# gem install pg -# On macOS with Homebrew: -# gem install pg -- --with-pg-config=/usr/local/bin/pg_config -# On Windows: -# gem install pg -# Choose the win32 build. -# Install PostgreSQL and put its /bin directory on your path. -# -# Configure Using Gemfile -# gem "pg" -# -default: &default - adapter: postgresql - encoding: unicode - # For details on connection pooling, see Rails configuration guide - # https://guides.rubyonrails.org/configuring.html#database-pooling - pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %> - -development: - <<: *default - database: site_v2_development - - # The specified database role being used to connect to PostgreSQL. - # To create additional roles in PostgreSQL see `$ createuser --help`. - # When left blank, PostgreSQL will use the default role. This is - # the same name as the operating system user running Rails. - #username: site_v2 - - # The password associated with the PostgreSQL role (username). - #password: - - # Connect on a TCP socket. Omitted by default since the client uses a - # domain socket that doesn't need configuration. Windows does not have - # domain sockets, so uncomment these lines. - #host: localhost - - # The TCP port the server listens on. Defaults to 5432. - # If your server runs on a different port number, change accordingly. - #port: 5432 - - # Schema search path. The server defaults to $user,public - #schema_search_path: myapp,sharedapp,public - - # Minimum log levels, in increasing order: - # debug5, debug4, debug3, debug2, debug1, - # log, notice, warning, error, fatal, and panic - # Defaults to warning. - #min_messages: notice - -# Warning: The database defined as "test" will be erased and -# re-generated from your development database when you run "rake". -# Do not set this db to the same as development or production. -test: - <<: *default - database: site_v2_test - username: postgres - password: postgres - port: 5432 - host: localhost - encoding: utf8 - -# As with config/credentials.yml, you never want to store sensitive information, -# like your database password, in your source code. If your source code is -# ever seen by anyone, they now have access to your database. -# -# Instead, provide the password or a full connection URL as an environment -# variable when you boot the app. For example: -# -# DATABASE_URL="postgres://myuser:mypass@localhost/somedatabase" -# -# -# If the connection URL is provided in the special DATABASE_URL environment -# variable, Rails will automatically merge its configuration values on top of -# the values provided in this file. Alternatively, you can specify a connection -# URL environment variable explicitly: -# -# production: -# url: <%= ENV["MY_APP_DATABASE_URL"] %> -# -# Read https://guides.rubyonrails.org/configuring.html#configuring-a-database -# for a full overview on how database connection configuration can be specified. -# -production: - <<: *default - url: <%= ENV["DATABASE_URL"] %> diff --git a/config/environments/development.rb b/config/environments/development.rb index 645becb..9b5ac00 100644 --- a/config/environments/development.rb +++ b/config/environments/development.rb @@ -75,4 +75,6 @@ # Raise error when a before_action's only/except options reference missing actions config.action_controller.raise_on_missing_callback_actions = true + config.hosts << "8f5a-23-234-90-59.ngrok-free.app" + end diff --git a/config/storage.yml.sample b/config/storage.yml.sample deleted file mode 100644 index 4942ab6..0000000 --- a/config/storage.yml.sample +++ /dev/null @@ -1,34 +0,0 @@ -test: - service: Disk - root: <%= Rails.root.join("tmp/storage") %> - -local: - service: Disk - root: <%= Rails.root.join("storage") %> - -# Use bin/rails credentials:edit to set the AWS secrets (as aws:access_key_id|secret_access_key) -# amazon: -# service: S3 -# access_key_id: <%= Rails.application.credentials.dig(:aws, :access_key_id) %> -# secret_access_key: <%= Rails.application.credentials.dig(:aws, :secret_access_key) %> -# region: us-east-1 -# bucket: your_own_bucket-<%= Rails.env %> - -# Remember not to checkin your GCS keyfile to a repository -# google: -# service: GCS -# project: your_project -# credentials: <%= Rails.root.join("path/to/gcs.keyfile") %> -# bucket: your_own_bucket-<%= Rails.env %> - -# Use bin/rails credentials:edit to set the Azure Storage secret (as azure_storage:storage_access_key) -# microsoft: -# service: AzureStorage -# storage_account_name: your_account_name -# storage_access_key: <%= Rails.application.credentials.dig(:azure_storage, :storage_access_key) %> -# container: your_container_name-<%= Rails.env %> - -# mirror: -# service: Mirror -# primary: local -# mirrors: [ amazon, google, microsoft ] diff --git a/tailwind.config.js b/tailwind.config.js index da752e4..6428daa 100644 --- a/tailwind.config.js +++ b/tailwind.config.js @@ -8,18 +8,49 @@ module.exports = { './app/javascript/**/*.js' ], theme: { - colors: { - beige: '#fff8ef', - ruby: '#d64045', - coffee: '#34312d', - red: colors.red, - transparent: 'transparent', - current: 'currentColor', - black: colors.black, - white: colors.white, - gray: colors.gray, - green: colors.green - } + extend: { + colors: { + beige: '#fff8ef', + ruby: { + DEFAULT: '#d64045', + 50: '#fef2f2', + 100: '#fee2e2', + 200: '#fecaca', + 300: '#fca5a5', + 400: '#f87171', + 500: '#d64045', + 600: '#dc2626', + 700: '#b91c1c', + 800: '#991b1b', + 900: '#7f1d1d', + }, + coffee: '#34312d', + cream: '#fdfbf7', + charcoal: '#1a1918', + }, + fontFamily: { + 'sans': ['Inter', 'system-ui', '-apple-system', 'sans-serif'], + 'display': ['Cal Sans', 'Inter', 'system-ui', 'sans-serif'], + }, + animation: { + 'fade-in': 'fadeIn 0.5s ease-in-out', + 'slide-up': 'slideUp 0.5s ease-out', + }, + keyframes: { + fadeIn: { + '0%': { opacity: '0' }, + '100%': { opacity: '1' }, + }, + slideUp: { + '0%': { transform: 'translateY(20px)', opacity: '0' }, + '100%': { transform: 'translateY(0)', opacity: '1' }, + }, + }, + boxShadow: { + 'soft': '0 2px 15px -3px rgba(0, 0, 0, 0.07), 0 10px 20px -2px rgba(0, 0, 0, 0.04)', + 'glow': '0 0 20px rgba(214, 64, 69, 0.1)', + }, + }, }, plugins: [ require('@tailwindcss/typography'), From bcc6dd93a3cd07de9082b9988b510cabf97dc815 Mon Sep 17 00:00:00 2001 From: Georges Gabereau Date: Wed, 18 Jun 2025 14:10:33 -0400 Subject: [PATCH 2/3] Clean up --- app/controllers/events_controller.rb | 6 -- app/views/events/show.html.erb | 7 --- config/database.yml.sample | 88 ++++++++++++++++++++++++++++ config/environments/development.rb | 2 - config/storage.yml.sample | 34 +++++++++++ 5 files changed, 122 insertions(+), 15 deletions(-) delete mode 100644 app/views/events/show.html.erb create mode 100644 config/database.yml.sample create mode 100644 config/storage.yml.sample diff --git a/app/controllers/events_controller.rb b/app/controllers/events_controller.rb index 14f10db..eee0b96 100644 --- a/app/controllers/events_controller.rb +++ b/app/controllers/events_controller.rb @@ -14,12 +14,6 @@ def all end end - def show - @event = Event.with_all_rich_text.find_by!(slug: params[:slug]) - rescue ActiveRecord::RecordNotFound - redirect_to all_events_path, error: 'Event not found' - end - def past @events = Event.with_all_rich_text.past end diff --git a/app/views/events/show.html.erb b/app/views/events/show.html.erb deleted file mode 100644 index ca8d9f7..0000000 --- a/app/views/events/show.html.erb +++ /dev/null @@ -1,7 +0,0 @@ -<% content_for :page_title do %> - <%== @event.name %> -<% end %> - -<%= content_for :event_content do %> - <%= render partial: "events/event", locals: { event: @event } %> -<% end %> \ No newline at end of file diff --git a/config/database.yml.sample b/config/database.yml.sample new file mode 100644 index 0000000..2bf56ed --- /dev/null +++ b/config/database.yml.sample @@ -0,0 +1,88 @@ +# PostgreSQL. Versions 9.3 and up are supported. +# +# Install the pg driver: +# gem install pg +# On macOS with Homebrew: +# gem install pg -- --with-pg-config=/usr/local/bin/pg_config +# On Windows: +# gem install pg +# Choose the win32 build. +# Install PostgreSQL and put its /bin directory on your path. +# +# Configure Using Gemfile +# gem "pg" +# +default: &default + adapter: postgresql + encoding: unicode + # For details on connection pooling, see Rails configuration guide + # https://guides.rubyonrails.org/configuring.html#database-pooling + pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %> + +development: + <<: *default + database: site_v2_development + + # The specified database role being used to connect to PostgreSQL. + # To create additional roles in PostgreSQL see `$ createuser --help`. + # When left blank, PostgreSQL will use the default role. This is + # the same name as the operating system user running Rails. + #username: site_v2 + + # The password associated with the PostgreSQL role (username). + #password: + + # Connect on a TCP socket. Omitted by default since the client uses a + # domain socket that doesn't need configuration. Windows does not have + # domain sockets, so uncomment these lines. + #host: localhost + + # The TCP port the server listens on. Defaults to 5432. + # If your server runs on a different port number, change accordingly. + #port: 5432 + + # Schema search path. The server defaults to $user,public + #schema_search_path: myapp,sharedapp,public + + # Minimum log levels, in increasing order: + # debug5, debug4, debug3, debug2, debug1, + # log, notice, warning, error, fatal, and panic + # Defaults to warning. + #min_messages: notice + +# Warning: The database defined as "test" will be erased and +# re-generated from your development database when you run "rake". +# Do not set this db to the same as development or production. +test: + <<: *default + database: site_v2_test + username: postgres + password: postgres + port: 5432 + host: localhost + encoding: utf8 + +# As with config/credentials.yml, you never want to store sensitive information, +# like your database password, in your source code. If your source code is +# ever seen by anyone, they now have access to your database. +# +# Instead, provide the password or a full connection URL as an environment +# variable when you boot the app. For example: +# +# DATABASE_URL="postgres://myuser:mypass@localhost/somedatabase" +# +# +# If the connection URL is provided in the special DATABASE_URL environment +# variable, Rails will automatically merge its configuration values on top of +# the values provided in this file. Alternatively, you can specify a connection +# URL environment variable explicitly: +# +# production: +# url: <%= ENV["MY_APP_DATABASE_URL"] %> +# +# Read https://guides.rubyonrails.org/configuring.html#configuring-a-database +# for a full overview on how database connection configuration can be specified. +# +production: + <<: *default + url: <%= ENV["DATABASE_URL"] %> diff --git a/config/environments/development.rb b/config/environments/development.rb index 9b5ac00..645becb 100644 --- a/config/environments/development.rb +++ b/config/environments/development.rb @@ -75,6 +75,4 @@ # Raise error when a before_action's only/except options reference missing actions config.action_controller.raise_on_missing_callback_actions = true - config.hosts << "8f5a-23-234-90-59.ngrok-free.app" - end diff --git a/config/storage.yml.sample b/config/storage.yml.sample new file mode 100644 index 0000000..4942ab6 --- /dev/null +++ b/config/storage.yml.sample @@ -0,0 +1,34 @@ +test: + service: Disk + root: <%= Rails.root.join("tmp/storage") %> + +local: + service: Disk + root: <%= Rails.root.join("storage") %> + +# Use bin/rails credentials:edit to set the AWS secrets (as aws:access_key_id|secret_access_key) +# amazon: +# service: S3 +# access_key_id: <%= Rails.application.credentials.dig(:aws, :access_key_id) %> +# secret_access_key: <%= Rails.application.credentials.dig(:aws, :secret_access_key) %> +# region: us-east-1 +# bucket: your_own_bucket-<%= Rails.env %> + +# Remember not to checkin your GCS keyfile to a repository +# google: +# service: GCS +# project: your_project +# credentials: <%= Rails.root.join("path/to/gcs.keyfile") %> +# bucket: your_own_bucket-<%= Rails.env %> + +# Use bin/rails credentials:edit to set the Azure Storage secret (as azure_storage:storage_access_key) +# microsoft: +# service: AzureStorage +# storage_account_name: your_account_name +# storage_access_key: <%= Rails.application.credentials.dig(:azure_storage, :storage_access_key) %> +# container: your_container_name-<%= Rails.env %> + +# mirror: +# service: Mirror +# primary: local +# mirrors: [ amazon, google, microsoft ] From 6986a5e9176bb65743d11364c2dbf3101d7dedc4 Mon Sep 17 00:00:00 2001 From: Georges Gabereau Date: Wed, 18 Jun 2025 14:21:39 -0400 Subject: [PATCH 3/3] Remove invalid test --- test/controllers/events_controller_test.rb | 7 ------- 1 file changed, 7 deletions(-) diff --git a/test/controllers/events_controller_test.rb b/test/controllers/events_controller_test.rb index bfd70e1..3b0a978 100644 --- a/test/controllers/events_controller_test.rb +++ b/test/controllers/events_controller_test.rb @@ -52,11 +52,4 @@ def setup assert_equal 0, events.count end - - test 'should redirect to events page if event is not found' do - get :show, params: { slug: 'nonexistent-event' } - - assert_response :found - assert_redirected_to all_events_path - end end