diff --git a/Gemfile b/Gemfile
index 511796239..c3f50ec30 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 d2037b3bc..106c13554 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 7252234d6..6fb5d5419 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 54db892cc..9e683b6a1 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 95996ba3f..68d1c4507 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 98a6a618f..3bf9dd483 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 0791b82ab..d76361c60 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 aaad2449f..81a67902e 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 9d348ddd0..fc85a3913 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 c3c8ff800..3f2a8f7c2 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 f7d0b1af5..ac426b01e 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 ac661e5e1..d584136ff 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 88f4554c2..d373f56bd 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 84e3a8956..d23f2c17c 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 250259752..bf82fd020 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 fce129bee..1a5e46f8e 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 643ba9cd3..c02aa0d59 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 9067e676d..00f251c3c 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 12e1fa415..694bb0fb9 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 cf7005b0e..1075456f3 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 22ce1cf59..f965f5522 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 beb33a859..0ca641461 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 48823714e..209fda72a 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