mirror of
https://github.com/mastodon/mastodon.git
synced 2024-11-20 03:25:17 +01:00
Drop support for ruby 3.1 (#32363)
This commit is contained in:
parent
a20ac20302
commit
b231c3c1bf
4
.github/workflows/test-ruby.yml
vendored
4
.github/workflows/test-ruby.yml
vendored
@ -124,7 +124,6 @@ jobs:
|
|||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
ruby-version:
|
ruby-version:
|
||||||
- '3.1'
|
|
||||||
- '3.2'
|
- '3.2'
|
||||||
- '.ruby-version'
|
- '.ruby-version'
|
||||||
steps:
|
steps:
|
||||||
@ -226,7 +225,6 @@ jobs:
|
|||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
ruby-version:
|
ruby-version:
|
||||||
- '3.1'
|
|
||||||
- '3.2'
|
- '3.2'
|
||||||
- '.ruby-version'
|
- '.ruby-version'
|
||||||
steps:
|
steps:
|
||||||
@ -305,7 +303,6 @@ jobs:
|
|||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
ruby-version:
|
ruby-version:
|
||||||
- '3.1'
|
|
||||||
- '3.2'
|
- '3.2'
|
||||||
- '.ruby-version'
|
- '.ruby-version'
|
||||||
|
|
||||||
@ -422,7 +419,6 @@ jobs:
|
|||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
ruby-version:
|
ruby-version:
|
||||||
- '3.1'
|
|
||||||
- '3.2'
|
- '3.2'
|
||||||
- '.ruby-version'
|
- '.ruby-version'
|
||||||
search-image:
|
search-image:
|
||||||
|
@ -8,7 +8,7 @@ AllCops:
|
|||||||
- lib/mastodon/migration_helpers.rb
|
- lib/mastodon/migration_helpers.rb
|
||||||
ExtraDetails: true
|
ExtraDetails: true
|
||||||
NewCops: enable
|
NewCops: enable
|
||||||
TargetRubyVersion: 3.1 # Oldest supported ruby version
|
TargetRubyVersion: 3.2 # Oldest supported ruby version
|
||||||
|
|
||||||
inherit_from:
|
inherit_from:
|
||||||
- .rubocop/layout.yml
|
- .rubocop/layout.yml
|
||||||
|
2
Gemfile
2
Gemfile
@ -1,7 +1,7 @@
|
|||||||
# frozen_string_literal: true
|
# frozen_string_literal: true
|
||||||
|
|
||||||
source 'https://rubygems.org'
|
source 'https://rubygems.org'
|
||||||
ruby '>= 3.1.0'
|
ruby '>= 3.2.0'
|
||||||
|
|
||||||
gem 'propshaft'
|
gem 'propshaft'
|
||||||
gem 'puma', '~> 6.3'
|
gem 'puma', '~> 6.3'
|
||||||
|
@ -69,7 +69,7 @@ Mastodon acts as an OAuth2 provider, so 3rd party apps can use the REST and Stre
|
|||||||
|
|
||||||
- **PostgreSQL** 12+
|
- **PostgreSQL** 12+
|
||||||
- **Redis** 4+
|
- **Redis** 4+
|
||||||
- **Ruby** 3.1+
|
- **Ruby** 3.2+
|
||||||
- **Node.js** 18+
|
- **Node.js** 18+
|
||||||
|
|
||||||
The repository includes deployment configurations for **Docker and docker-compose** as well as specific platforms like **Heroku**, and **Scalingo**. For Helm charts, reference the [mastodon/chart repository](https://github.com/mastodon/chart). The [**standalone** installation guide](https://docs.joinmastodon.org/admin/install/) is available in the documentation.
|
The repository includes deployment configurations for **Docker and docker-compose** as well as specific platforms like **Heroku**, and **Scalingo**. For Helm charts, reference the [mastodon/chart repository](https://github.com/mastodon/chart). The [**standalone** installation guide](https://docs.joinmastodon.org/admin/install/) is available in the documentation.
|
||||||
|
@ -41,11 +41,11 @@ class ActivityPub::OutboxesController < ActivityPub::BaseController
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def outbox_url(**kwargs)
|
def outbox_url(**)
|
||||||
if params[:account_username].present?
|
if params[:account_username].present?
|
||||||
account_outbox_url(@account, **kwargs)
|
account_outbox_url(@account, **)
|
||||||
else
|
else
|
||||||
instance_actor_outbox_url(**kwargs)
|
instance_actor_outbox_url(**)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -106,8 +106,8 @@ class Api::V1::AccountsController < Api::BaseController
|
|||||||
render json: { error: I18n.t('accounts.self_follow_error') }, status: 403 if current_user.account.id == @account.id
|
render json: { error: I18n.t('accounts.self_follow_error') }, status: 403 if current_user.account.id == @account.id
|
||||||
end
|
end
|
||||||
|
|
||||||
def relationships(**options)
|
def relationships(**)
|
||||||
AccountRelationshipsPresenter.new([@account], current_user.account_id, **options)
|
AccountRelationshipsPresenter.new([@account], current_user.account_id, **)
|
||||||
end
|
end
|
||||||
|
|
||||||
def account_ids
|
def account_ids
|
||||||
|
@ -28,8 +28,8 @@ class Api::V1::FollowRequestsController < Api::BaseController
|
|||||||
@account ||= Account.find(params[:id])
|
@account ||= Account.find(params[:id])
|
||||||
end
|
end
|
||||||
|
|
||||||
def relationships(**options)
|
def relationships(**)
|
||||||
AccountRelationshipsPresenter.new([account], current_user.account_id, **options)
|
AccountRelationshipsPresenter.new([account], current_user.account_id, **)
|
||||||
end
|
end
|
||||||
|
|
||||||
def load_accounts
|
def load_accounts
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
# frozen_string_literal: true
|
# frozen_string_literal: true
|
||||||
|
|
||||||
module MediaComponentHelper
|
module MediaComponentHelper
|
||||||
def render_video_component(status, **options)
|
def render_video_component(status, **)
|
||||||
video = status.ordered_media_attachments.first
|
video = status.ordered_media_attachments.first
|
||||||
|
|
||||||
meta = video.file.meta || {}
|
meta = video.file.meta || {}
|
||||||
@ -18,14 +18,14 @@ module MediaComponentHelper
|
|||||||
media: [
|
media: [
|
||||||
serialize_media_attachment(video),
|
serialize_media_attachment(video),
|
||||||
].as_json,
|
].as_json,
|
||||||
}.merge(**options)
|
}.merge(**)
|
||||||
|
|
||||||
react_component :video, component_params do
|
react_component :video, component_params do
|
||||||
render partial: 'statuses/attachment_list', locals: { attachments: status.ordered_media_attachments }
|
render partial: 'statuses/attachment_list', locals: { attachments: status.ordered_media_attachments }
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def render_audio_component(status, **options)
|
def render_audio_component(status, **)
|
||||||
audio = status.ordered_media_attachments.first
|
audio = status.ordered_media_attachments.first
|
||||||
|
|
||||||
meta = audio.file.meta || {}
|
meta = audio.file.meta || {}
|
||||||
@ -38,19 +38,19 @@ module MediaComponentHelper
|
|||||||
foregroundColor: meta.dig('colors', 'foreground'),
|
foregroundColor: meta.dig('colors', 'foreground'),
|
||||||
accentColor: meta.dig('colors', 'accent'),
|
accentColor: meta.dig('colors', 'accent'),
|
||||||
duration: meta.dig('original', 'duration'),
|
duration: meta.dig('original', 'duration'),
|
||||||
}.merge(**options)
|
}.merge(**)
|
||||||
|
|
||||||
react_component :audio, component_params do
|
react_component :audio, component_params do
|
||||||
render partial: 'statuses/attachment_list', locals: { attachments: status.ordered_media_attachments }
|
render partial: 'statuses/attachment_list', locals: { attachments: status.ordered_media_attachments }
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def render_media_gallery_component(status, **options)
|
def render_media_gallery_component(status, **)
|
||||||
component_params = {
|
component_params = {
|
||||||
sensitive: sensitive_viewer?(status, current_account),
|
sensitive: sensitive_viewer?(status, current_account),
|
||||||
autoplay: prefers_autoplay?,
|
autoplay: prefers_autoplay?,
|
||||||
media: status.ordered_media_attachments.map { |a| serialize_media_attachment(a).as_json },
|
media: status.ordered_media_attachments.map { |a| serialize_media_attachment(a).as_json },
|
||||||
}.merge(**options)
|
}.merge(**)
|
||||||
|
|
||||||
react_component :media_gallery, component_params do
|
react_component :media_gallery, component_params do
|
||||||
render partial: 'statuses/attachment_list', locals: { attachments: status.ordered_media_attachments }
|
render partial: 'statuses/attachment_list', locals: { attachments: status.ordered_media_attachments }
|
||||||
|
@ -14,8 +14,8 @@ module RoutingHelper
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def full_asset_url(source, **options)
|
def full_asset_url(source, **)
|
||||||
source = ActionController::Base.helpers.asset_url(source, **options) unless use_storage?
|
source = ActionController::Base.helpers.asset_url(source, **) unless use_storage?
|
||||||
|
|
||||||
URI.join(asset_host, source).to_s
|
URI.join(asset_host, source).to_s
|
||||||
end
|
end
|
||||||
@ -24,12 +24,12 @@ module RoutingHelper
|
|||||||
Rails.configuration.action_controller.asset_host || root_url
|
Rails.configuration.action_controller.asset_host || root_url
|
||||||
end
|
end
|
||||||
|
|
||||||
def frontend_asset_path(source, **options)
|
def frontend_asset_path(source, **)
|
||||||
asset_pack_path("media/#{source}", **options)
|
asset_pack_path("media/#{source}", **)
|
||||||
end
|
end
|
||||||
|
|
||||||
def frontend_asset_url(source, **options)
|
def frontend_asset_url(source, **)
|
||||||
full_asset_url(frontend_asset_path(source, **options))
|
full_asset_url(frontend_asset_path(source, **))
|
||||||
end
|
end
|
||||||
|
|
||||||
def use_storage?
|
def use_storage?
|
||||||
|
@ -20,9 +20,9 @@ class ActivityPub::Activity
|
|||||||
end
|
end
|
||||||
|
|
||||||
class << self
|
class << self
|
||||||
def factory(json, account, **options)
|
def factory(json, account, **)
|
||||||
@json = json
|
@json = json
|
||||||
klass&.new(json, account, **options)
|
klass&.new(json, account, **)
|
||||||
end
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
# frozen_string_literal: true
|
# frozen_string_literal: true
|
||||||
|
|
||||||
class RSS::Element
|
class RSS::Element
|
||||||
def self.with(*args, &block)
|
def self.with(*, &block)
|
||||||
new(*args).tap(&block).to_element
|
new(*).tap(&block).to_element
|
||||||
end
|
end
|
||||||
|
|
||||||
def create_element(name, content = nil)
|
def create_element(name, content = nil)
|
||||||
|
@ -42,8 +42,8 @@ class TranslationService::DeepL < TranslationService
|
|||||||
subtags.join('-')
|
subtags.join('-')
|
||||||
end
|
end
|
||||||
|
|
||||||
def request(verb, path, **options)
|
def request(verb, path, **)
|
||||||
req = Request.new(verb, "#{base_url}#{path}", **options)
|
req = Request.new(verb, "#{base_url}#{path}", **)
|
||||||
req.add_headers(Authorization: "DeepL-Auth-Key #{@api_key}")
|
req.add_headers(Authorization: "DeepL-Auth-Key #{@api_key}")
|
||||||
req.perform do |res|
|
req.perform do |res|
|
||||||
case res.code
|
case res.code
|
||||||
|
@ -27,8 +27,8 @@ class TranslationService::LibreTranslate < TranslationService
|
|||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
def request(verb, path, **options)
|
def request(verb, path, **)
|
||||||
req = Request.new(verb, "#{@base_url}#{path}", allow_local: true, **options)
|
req = Request.new(verb, "#{@base_url}#{path}", allow_local: true, **)
|
||||||
req.add_headers('Content-Type': 'application/json')
|
req.add_headers('Content-Type': 'application/json')
|
||||||
req.perform do |res|
|
req.perform do |res|
|
||||||
case res.code
|
case res.code
|
||||||
|
@ -29,7 +29,7 @@ module Status::SnapshotConcern
|
|||||||
)
|
)
|
||||||
end
|
end
|
||||||
|
|
||||||
def snapshot!(**options)
|
def snapshot!(**)
|
||||||
build_snapshot(**options).save!
|
build_snapshot(**).save!
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -35,8 +35,8 @@ class SessionActivation < ApplicationRecord
|
|||||||
id && exists?(session_id: id)
|
id && exists?(session_id: id)
|
||||||
end
|
end
|
||||||
|
|
||||||
def activate(**options)
|
def activate(**)
|
||||||
activation = create!(**options)
|
activation = create!(**)
|
||||||
purge_old
|
purge_old
|
||||||
activation
|
activation
|
||||||
end
|
end
|
||||||
|
@ -405,8 +405,8 @@ class User < ApplicationRecord
|
|||||||
@pending_devise_notifications ||= []
|
@pending_devise_notifications ||= []
|
||||||
end
|
end
|
||||||
|
|
||||||
def render_and_send_devise_message(notification, *args, **kwargs)
|
def render_and_send_devise_message(notification, *, **)
|
||||||
devise_mailer.send(notification, self, *args, **kwargs).deliver_later
|
devise_mailer.send(notification, self, *, **).deliver_later
|
||||||
end
|
end
|
||||||
|
|
||||||
def set_approved
|
def set_approved
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
# frozen_string_literal: true
|
# frozen_string_literal: true
|
||||||
|
|
||||||
require 'set'
|
|
||||||
require_relative 'base'
|
require_relative 'base'
|
||||||
|
|
||||||
module Mastodon::CLI
|
module Mastodon::CLI
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
# frozen_string_literal: true
|
# frozen_string_literal: true
|
||||||
|
|
||||||
module CommandLineHelpers
|
module CommandLineHelpers
|
||||||
def output_results(*args)
|
def output_results(*)
|
||||||
output(
|
output(
|
||||||
include(*args)
|
include(*)
|
||||||
).to_stdout
|
).to_stdout
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
Loading…
Reference in New Issue
Block a user