Project

General

Profile

Actions

Feature #41976

open

Ruby 3.4 support

Added by Go MAEDA 6 days ago. Updated 3 days ago.

Status:
New
Priority:
Normal
Assignee:
-
Category:
Ruby support
Target version:
Start date:
Due date:
% Done:

0%

Estimated time:
Resolution:

Description

Ruby 3.4.0 will be released on December 25, 2024.


Files


Related issues

Copied from Redmine - Feature #39761: Ruby 3.3 supportClosedGo MAEDA

Actions
Actions #1

Updated by Go MAEDA 6 days ago

Actions #2

Updated by Go MAEDA 6 days ago

  • Resolution deleted (Fixed)
Actions #3

Updated by Go MAEDA 6 days ago

The attached patch fixes "literal string will be frozen in the future" warnings on Ruby 3.4.0 rc1.

/path/to/redmine/app/views/gantts/show.html.erb:342: warning: literal string will be frozen in the future (run with --debug-frozen-string-literal for more information)
/path/to/redmine/app/views/repositories/_breadcrumbs.html.erb:18: warning: literal string will be frozen in the future (run with --debug-frozen-string-literal for more information)
/path/to/redmine/lib/redmine/i18n.rb:154: warning: warning: string returned by :ar.to_s will be frozen in the future
Actions #4

Updated by Katsuya HIDAKA 3 days ago

+1

0001-Fix-Avoid-literal-string-will-be-frozen-in-the-futur.patch

-      clss << " nwday" if @gantt.non_working_week_days.include?(wday)
+      clss += " nwday" if @gantt.non_working_week_days.include?(wday)

How about modifying it like this?

       clss = "gantt_hdr" 
       clss << " nwday" if @gantt.non_working_week_days.include?(wday)
     %>
-    <%= content_tag(:div, :style => style, :class => clss) do %>
+    <%= content_tag(:div, :style => style, :class => ["gantt_hdr", { nwday: @gantt.non_working_week_days.include?(wday) }]) do %>
       <%= day_num.day %>
     <% end %>
     <%

With this change, the class attribute would produce the following results:

redmine-app(dev)> helper.content_tag(:div, "", :class => ["gantt_hdr", { nwday: false }])
=> "<div class=\"gantt_hdr\"></div>" 
redmine-app(dev)> helper.content_tag(:div, "", :class => ["gantt_hdr", { nwday: true }])
=> "<div class=\"gantt_hdr nwday\"></div>" 

Alternatively, this approach would also work:

-      clss = "gantt_hdr" 
+      clss = +"gantt_hdr" 
       clss << " nwday" if @gantt.non_working_week_days.include?(wday)
Reasons:
  • The current implementation in the patch always creates a new string instance.
  • Other similar parts of the code use String#+@, so this would improve consistency.

Personally, I think the former approach is preferable, but the latter also seems like a valid option.

Actions

Also available in: Atom PDF