diff --git a/Gemfile b/Gemfile
index 5117962391..c3f50ec30c 100644
--- a/Gemfile
+++ b/Gemfile
@@ -153,7 +153,6 @@ end
group :production do
gem 'lograge', '~> 0.11'
- gem 'redis-rails', '~> 5.0'
end
gem 'concurrent-ruby', require: false
diff --git a/Gemfile.lock b/Gemfile.lock
index d2037b3bce..106c13554c 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -491,24 +491,8 @@ GEM
rdf-normalize (0.4.0)
rdf (~> 3.1)
redis (4.2.5)
- redis-actionpack (5.2.0)
- actionpack (>= 5, < 7)
- redis-rack (>= 2.1.0, < 3)
- redis-store (>= 1.1.0, < 2)
- redis-activesupport (5.2.0)
- activesupport (>= 3, < 7)
- redis-store (>= 1.3, < 2)
redis-namespace (1.8.1)
redis (>= 3.0.4)
- redis-rack (2.1.3)
- rack (>= 2.0.8, < 3)
- redis-store (>= 1.2, < 2)
- redis-rails (5.0.2)
- redis-actionpack (>= 5.0, < 6)
- redis-activesupport (>= 5.0, < 6)
- redis-store (>= 1.2, < 2)
- redis-store (1.9.0)
- redis (>= 4, < 5)
regexp_parser (2.1.1)
request_store (1.5.0)
rack (>= 1.4)
@@ -790,7 +774,6 @@ DEPENDENCIES
rdf-normalize (~> 0.4)
redis (~> 4.2)
redis-namespace (~> 1.8)
- redis-rails (~> 5.0)
rqrcode (~> 1.2)
rspec-rails (~> 5.0)
rspec-sidekiq (~> 3.1)
diff --git a/app/lib/formatter.rb b/app/lib/formatter.rb
index 7252234d6a..6fb5d54199 100644
--- a/app/lib/formatter.rb
+++ b/app/lib/formatter.rb
@@ -158,9 +158,9 @@ class Formatter
original_url, static_url = emoji
replacement = begin
if animate
- ""
+ image_tag(original_url, draggable: false, class: 'emojione', alt: ":#{shortcode}:", title: ":#{shortcode}:")
else
- ""
+ image_tag(original_url, draggable: false, class: 'emojione custom-emoji', alt: ":#{shortcode}:", title: ":#{shortcode}:", data: { original: original_url, static: static_url })
end
end
before_html = shortname_start_index.positive? ? html[0..shortname_start_index - 1] : ''
diff --git a/app/mailers/notification_mailer.rb b/app/mailers/notification_mailer.rb
index 54db892ccc..9e683b6a16 100644
--- a/app/mailers/notification_mailer.rb
+++ b/app/mailers/notification_mailer.rb
@@ -4,7 +4,7 @@ class NotificationMailer < ApplicationMailer
helper :accounts
helper :statuses
- add_template_helper RoutingHelper
+ helper RoutingHelper
def mention(recipient, notification)
@me = recipient
diff --git a/app/mailers/user_mailer.rb b/app/mailers/user_mailer.rb
index 95996ba3ff..68d1c4507e 100644
--- a/app/mailers/user_mailer.rb
+++ b/app/mailers/user_mailer.rb
@@ -8,7 +8,7 @@ class UserMailer < Devise::Mailer
helper :instance
helper :statuses
- add_template_helper RoutingHelper
+ helper RoutingHelper
def confirmation_instructions(user, token, **)
@resource = user
diff --git a/app/models/notification.rb b/app/models/notification.rb
index 98a6a618f5..3bf9dd483e 100644
--- a/app/models/notification.rb
+++ b/app/models/notification.rb
@@ -49,12 +49,12 @@ class Notification < ApplicationRecord
belongs_to :from_account, class_name: 'Account', optional: true
belongs_to :activity, polymorphic: true, optional: true
- belongs_to :mention, foreign_type: 'Mention', foreign_key: 'activity_id', optional: true
- belongs_to :status, foreign_type: 'Status', foreign_key: 'activity_id', optional: true
- belongs_to :follow, foreign_type: 'Follow', foreign_key: 'activity_id', optional: true
- belongs_to :follow_request, foreign_type: 'FollowRequest', foreign_key: 'activity_id', optional: true
- belongs_to :favourite, foreign_type: 'Favourite', foreign_key: 'activity_id', optional: true
- belongs_to :poll, foreign_type: 'Poll', foreign_key: 'activity_id', optional: true
+ belongs_to :mention, foreign_key: 'activity_id', optional: true
+ belongs_to :status, foreign_key: 'activity_id', optional: true
+ belongs_to :follow, foreign_key: 'activity_id', optional: true
+ belongs_to :follow_request, foreign_key: 'activity_id', optional: true
+ belongs_to :favourite, foreign_key: 'activity_id', optional: true
+ belongs_to :poll, foreign_key: 'activity_id', optional: true
validates :type, inclusion: { in: TYPES }
diff --git a/config/environments/development.rb b/config/environments/development.rb
index 0791b82ab6..d76361c602 100644
--- a/config/environments/development.rb
+++ b/config/environments/development.rb
@@ -17,7 +17,7 @@ Rails.application.configure do
if Rails.root.join('tmp/caching-dev.txt').exist?
config.action_controller.perform_caching = true
- config.cache_store = :redis_store, ENV['REDIS_URL'], REDIS_CACHE_PARAMS
+ config.cache_store = :redis_cache_store, REDIS_CACHE_PARAMS
config.public_file_server.headers = {
'Cache-Control' => "public, max-age=#{2.days.to_i}",
diff --git a/config/environments/production.rb b/config/environments/production.rb
index aaad2449f2..81a67902ea 100644
--- a/config/environments/production.rb
+++ b/config/environments/production.rb
@@ -52,7 +52,7 @@ Rails.application.configure do
config.log_tags = [:request_id]
# Use a different cache store in production.
- config.cache_store = :redis_store, ENV['CACHE_REDIS_URL'], REDIS_CACHE_PARAMS
+ config.cache_store = :redis_cache_store, REDIS_CACHE_PARAMS
# Ignore bad email addresses and do not raise email delivery errors.
# Set this to true and configure the email server for immediate delivery to raise delivery errors.
diff --git a/config/initializers/sidekiq.rb b/config/initializers/sidekiq.rb
index 9d348ddd08..fc85a39137 100644
--- a/config/initializers/sidekiq.rb
+++ b/config/initializers/sidekiq.rb
@@ -1,7 +1,7 @@
# frozen_string_literal: true
namespace = ENV.fetch('REDIS_NAMESPACE') { nil }
-redis_params = { url: ENV['REDIS_URL'] }
+redis_params = { url: ENV['REDIS_URL'], driver: :hiredis }
if namespace
redis_params[:namespace] = namespace
diff --git a/lib/mastodon/redis_config.rb b/lib/mastodon/redis_config.rb
index c3c8ff8005..3f2a8f7c26 100644
--- a/lib/mastodon/redis_config.rb
+++ b/lib/mastodon/redis_config.rb
@@ -27,6 +27,8 @@ namespace = ENV.fetch('REDIS_NAMESPACE', nil)
cache_namespace = namespace ? namespace + '_cache' : 'cache'
REDIS_CACHE_PARAMS = {
+ driver: :hiredis,
+ url: ENV['REDIS_URL'],
expires_in: 10.minutes,
namespace: cache_namespace,
}.freeze
diff --git a/spec/controllers/accounts_controller_spec.rb b/spec/controllers/accounts_controller_spec.rb
index f7d0b1af54..ac426b01e6 100644
--- a/spec/controllers/accounts_controller_spec.rb
+++ b/spec/controllers/accounts_controller_spec.rb
@@ -370,7 +370,7 @@ RSpec.describe AccountsController, type: :controller do
end
it 'returns application/activity+json' do
- expect(response.content_type).to eq 'application/activity+json'
+ expect(response.media_type).to eq 'application/activity+json'
end
it_behaves_like 'cachable response'
@@ -402,7 +402,7 @@ RSpec.describe AccountsController, type: :controller do
end
it 'returns application/activity+json' do
- expect(response.content_type).to eq 'application/activity+json'
+ expect(response.media_type).to eq 'application/activity+json'
end
it 'returns public Cache-Control header' do
@@ -428,7 +428,7 @@ RSpec.describe AccountsController, type: :controller do
end
it 'returns application/activity+json' do
- expect(response.content_type).to eq 'application/activity+json'
+ expect(response.media_type).to eq 'application/activity+json'
end
it_behaves_like 'cachable response'
@@ -446,7 +446,7 @@ RSpec.describe AccountsController, type: :controller do
end
it 'returns application/activity+json' do
- expect(response.content_type).to eq 'application/activity+json'
+ expect(response.media_type).to eq 'application/activity+json'
end
it 'returns private Cache-Control header' do
diff --git a/spec/controllers/activitypub/collections_controller_spec.rb b/spec/controllers/activitypub/collections_controller_spec.rb
index ac661e5e1d..d584136ff5 100644
--- a/spec/controllers/activitypub/collections_controller_spec.rb
+++ b/spec/controllers/activitypub/collections_controller_spec.rb
@@ -43,7 +43,7 @@ RSpec.describe ActivityPub::CollectionsController, type: :controller do
end
it 'returns application/activity+json' do
- expect(response.content_type).to eq 'application/activity+json'
+ expect(response.media_type).to eq 'application/activity+json'
end
it_behaves_like 'cachable response'
@@ -88,7 +88,7 @@ RSpec.describe ActivityPub::CollectionsController, type: :controller do
end
it 'returns application/activity+json' do
- expect(response.content_type).to eq 'application/activity+json'
+ expect(response.media_type).to eq 'application/activity+json'
end
it_behaves_like 'cachable response'
@@ -116,7 +116,7 @@ RSpec.describe ActivityPub::CollectionsController, type: :controller do
end
it 'returns application/activity+json' do
- expect(response.content_type).to eq 'application/activity+json'
+ expect(response.media_type).to eq 'application/activity+json'
end
it 'returns private Cache-Control header' do
@@ -141,7 +141,7 @@ RSpec.describe ActivityPub::CollectionsController, type: :controller do
end
it 'returns application/activity+json' do
- expect(response.content_type).to eq 'application/activity+json'
+ expect(response.media_type).to eq 'application/activity+json'
end
it 'returns private Cache-Control header' do
diff --git a/spec/controllers/activitypub/followers_synchronizations_controller_spec.rb b/spec/controllers/activitypub/followers_synchronizations_controller_spec.rb
index 88f4554c2d..d373f56bdb 100644
--- a/spec/controllers/activitypub/followers_synchronizations_controller_spec.rb
+++ b/spec/controllers/activitypub/followers_synchronizations_controller_spec.rb
@@ -40,7 +40,7 @@ RSpec.describe ActivityPub::FollowersSynchronizationsController, type: :controll
end
it 'returns application/activity+json' do
- expect(response.content_type).to eq 'application/activity+json'
+ expect(response.media_type).to eq 'application/activity+json'
end
it 'returns orderedItems with followers from example.com' do
diff --git a/spec/controllers/activitypub/outboxes_controller_spec.rb b/spec/controllers/activitypub/outboxes_controller_spec.rb
index 84e3a89560..d23f2c17cb 100644
--- a/spec/controllers/activitypub/outboxes_controller_spec.rb
+++ b/spec/controllers/activitypub/outboxes_controller_spec.rb
@@ -46,7 +46,7 @@ RSpec.describe ActivityPub::OutboxesController, type: :controller do
end
it 'returns application/activity+json' do
- expect(response.content_type).to eq 'application/activity+json'
+ expect(response.media_type).to eq 'application/activity+json'
end
it 'returns totalItems' do
@@ -85,7 +85,7 @@ RSpec.describe ActivityPub::OutboxesController, type: :controller do
end
it 'returns application/activity+json' do
- expect(response.content_type).to eq 'application/activity+json'
+ expect(response.media_type).to eq 'application/activity+json'
end
it 'returns orderedItems with public or unlisted statuses' do
@@ -133,7 +133,7 @@ RSpec.describe ActivityPub::OutboxesController, type: :controller do
end
it 'returns application/activity+json' do
- expect(response.content_type).to eq 'application/activity+json'
+ expect(response.media_type).to eq 'application/activity+json'
end
it 'returns orderedItems with public or unlisted statuses' do
@@ -159,7 +159,7 @@ RSpec.describe ActivityPub::OutboxesController, type: :controller do
end
it 'returns application/activity+json' do
- expect(response.content_type).to eq 'application/activity+json'
+ expect(response.media_type).to eq 'application/activity+json'
end
it 'returns orderedItems with private statuses' do
@@ -185,7 +185,7 @@ RSpec.describe ActivityPub::OutboxesController, type: :controller do
end
it 'returns application/activity+json' do
- expect(response.content_type).to eq 'application/activity+json'
+ expect(response.media_type).to eq 'application/activity+json'
end
it 'returns empty orderedItems' do
@@ -210,7 +210,7 @@ RSpec.describe ActivityPub::OutboxesController, type: :controller do
end
it 'returns application/activity+json' do
- expect(response.content_type).to eq 'application/activity+json'
+ expect(response.media_type).to eq 'application/activity+json'
end
it 'returns empty orderedItems' do
diff --git a/spec/controllers/activitypub/replies_controller_spec.rb b/spec/controllers/activitypub/replies_controller_spec.rb
index 2502597528..bf82fd0207 100644
--- a/spec/controllers/activitypub/replies_controller_spec.rb
+++ b/spec/controllers/activitypub/replies_controller_spec.rb
@@ -73,7 +73,7 @@ RSpec.describe ActivityPub::RepliesController, type: :controller do
end
it 'returns application/activity+json' do
- expect(response.content_type).to eq 'application/activity+json'
+ expect(response.media_type).to eq 'application/activity+json'
end
it_behaves_like 'cachable response'
@@ -120,7 +120,7 @@ RSpec.describe ActivityPub::RepliesController, type: :controller do
end
it 'returns application/activity+json' do
- expect(response.content_type).to eq 'application/activity+json'
+ expect(response.media_type).to eq 'application/activity+json'
end
it_behaves_like 'cachable response'
diff --git a/spec/controllers/concerns/export_controller_concern_spec.rb b/spec/controllers/concerns/export_controller_concern_spec.rb
index fce129bee2..1a5e46f8ef 100644
--- a/spec/controllers/concerns/export_controller_concern_spec.rb
+++ b/spec/controllers/concerns/export_controller_concern_spec.rb
@@ -22,8 +22,8 @@ describe ApplicationController, type: :controller do
get :index, format: :csv
expect(response).to have_http_status(200)
- expect(response.content_type).to eq 'text/csv'
- expect(response.headers['Content-Disposition']).to eq 'attachment; filename="anonymous.csv"'
+ expect(response.media_type).to eq 'text/csv'
+ expect(response.headers['Content-Disposition']).to start_with 'attachment; filename="anonymous.csv"'
expect(response.body).to eq user.account.username
end
diff --git a/spec/controllers/well_known/host_meta_controller_spec.rb b/spec/controllers/well_known/host_meta_controller_spec.rb
index 643ba9cd32..c02aa0d596 100644
--- a/spec/controllers/well_known/host_meta_controller_spec.rb
+++ b/spec/controllers/well_known/host_meta_controller_spec.rb
@@ -8,7 +8,7 @@ describe WellKnown::HostMetaController, type: :controller do
get :show, format: :xml
expect(response).to have_http_status(200)
- expect(response.content_type).to eq 'application/xrd+xml'
+ expect(response.media_type).to eq 'application/xrd+xml'
expect(response.body).to eq <
diff --git a/spec/controllers/well_known/keybase_proof_config_controller_spec.rb b/spec/controllers/well_known/keybase_proof_config_controller_spec.rb
index 9067e676de..00f251c3c6 100644
--- a/spec/controllers/well_known/keybase_proof_config_controller_spec.rb
+++ b/spec/controllers/well_known/keybase_proof_config_controller_spec.rb
@@ -8,7 +8,7 @@ describe WellKnown::KeybaseProofConfigController, type: :controller do
get :show
expect(response).to have_http_status(200)
- expect(response.content_type).to eq 'application/json'
+ expect(response.media_type).to eq 'application/json'
expect { JSON.parse(response.body) }.not_to raise_exception
end
end
diff --git a/spec/controllers/well_known/nodeinfo_controller_spec.rb b/spec/controllers/well_known/nodeinfo_controller_spec.rb
index 12e1fa4159..694bb0fb9f 100644
--- a/spec/controllers/well_known/nodeinfo_controller_spec.rb
+++ b/spec/controllers/well_known/nodeinfo_controller_spec.rb
@@ -8,7 +8,7 @@ describe WellKnown::NodeInfoController, type: :controller do
get :index
expect(response).to have_http_status(200)
- expect(response.content_type).to eq 'application/json'
+ expect(response.media_type).to eq 'application/json'
json = body_as_json
@@ -23,7 +23,7 @@ describe WellKnown::NodeInfoController, type: :controller do
get :show
expect(response).to have_http_status(200)
- expect(response.content_type).to eq 'application/json'
+ expect(response.media_type).to eq 'application/json'
json = body_as_json
diff --git a/spec/controllers/well_known/webfinger_controller_spec.rb b/spec/controllers/well_known/webfinger_controller_spec.rb
index cf7005b0e7..1075456f33 100644
--- a/spec/controllers/well_known/webfinger_controller_spec.rb
+++ b/spec/controllers/well_known/webfinger_controller_spec.rb
@@ -25,7 +25,7 @@ describe WellKnown::WebfingerController, type: :controller do
end
it 'returns application/jrd+json' do
- expect(response.content_type).to eq 'application/jrd+json'
+ expect(response.media_type).to eq 'application/jrd+json'
end
it 'returns links for the account' do
diff --git a/spec/requests/catch_all_route_request_spec.rb b/spec/requests/catch_all_route_request_spec.rb
index 22ce1cf59f..f965f55221 100644
--- a/spec/requests/catch_all_route_request_spec.rb
+++ b/spec/requests/catch_all_route_request_spec.rb
@@ -6,7 +6,7 @@ describe "The catch all route" do
get "/test"
expect(response.status).to eq 404
- expect(response.content_type).to eq "text/html"
+ expect(response.media_type).to eq "text/html"
end
end
@@ -15,7 +15,7 @@ describe "The catch all route" do
get "/test.test"
expect(response.status).to eq 404
- expect(response.content_type).to eq "text/html"
+ expect(response.media_type).to eq "text/html"
end
end
end
diff --git a/spec/requests/host_meta_request_spec.rb b/spec/requests/host_meta_request_spec.rb
index beb33a859e..0ca6414613 100644
--- a/spec/requests/host_meta_request_spec.rb
+++ b/spec/requests/host_meta_request_spec.rb
@@ -6,7 +6,7 @@ describe "The host_meta route" do
get host_meta_url
expect(response).to have_http_status(200)
- expect(response.content_type).to eq "application/xrd+xml"
+ expect(response.media_type).to eq "application/xrd+xml"
end
end
end
diff --git a/spec/requests/webfinger_request_spec.rb b/spec/requests/webfinger_request_spec.rb
index 48823714e2..209fda72aa 100644
--- a/spec/requests/webfinger_request_spec.rb
+++ b/spec/requests/webfinger_request_spec.rb
@@ -8,7 +8,7 @@ describe 'The webfinger route' do
get webfinger_url(resource: alice.to_webfinger_s)
expect(response).to have_http_status(200)
- expect(response.content_type).to eq 'application/jrd+json'
+ expect(response.media_type).to eq 'application/jrd+json'
end
end
@@ -17,7 +17,7 @@ describe 'The webfinger route' do
get webfinger_url(resource: alice.to_webfinger_s, format: :json)
expect(response).to have_http_status(200)
- expect(response.content_type).to eq 'application/jrd+json'
+ expect(response.media_type).to eq 'application/jrd+json'
end
it 'returns a json response for json accept header' do
@@ -25,7 +25,7 @@ describe 'The webfinger route' do
get webfinger_url(resource: alice.to_webfinger_s), headers: headers
expect(response).to have_http_status(200)
- expect(response.content_type).to eq 'application/jrd+json'
+ expect(response.media_type).to eq 'application/jrd+json'
end
end
end