diff --git a/Gemfile b/Gemfile index 3d2af797..6a16b77e 100644 --- a/Gemfile +++ b/Gemfile @@ -145,6 +145,7 @@ group :development do gem 'derailed_benchmarks' gem 'rack-mini-profiler' gem 'stackprof' + gem 'benchmark-ips' end group :production do diff --git a/Gemfile.lock b/Gemfile.lock index d0fca141..c5604a15 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -683,6 +683,7 @@ DEPENDENCIES addressable (~> 2.6) annotate (~> 2.7) aws-sdk-s3 (~> 1.41) + benchmark-ips better_errors (~> 2.5) binding_of_caller (~> 0.7) blurhash (~> 0.1) diff --git a/app/helpers/jsonld_helper.rb b/app/helpers/jsonld_helper.rb index 331899af..60dc25dd 100644 --- a/app/helpers/jsonld_helper.rb +++ b/app/helpers/jsonld_helper.rb @@ -53,7 +53,7 @@ module JsonLdHelper needle = Addressable::URI.parse(url).host haystack = Addressable::URI.parse(@account.uri).host - !haystack.casecmp(needle).zero? + !haystack.casecmp?(needle) end def canonicalize(json) diff --git a/app/lib/formatter.rb b/app/lib/formatter.rb index 21cd4f17..068fab7c 100644 --- a/app/lib/formatter.rb +++ b/app/lib/formatter.rb @@ -370,7 +370,7 @@ class Formatter escaped = text.chars.map do |c| output = begin - if c.ord.to_s(16).length > 2 && UNICODE_ESCAPE_BLACKLIST_RE.match(c).nil? + if c.ord > 255 && !UNICODE_ESCAPE_BLACKLIST_RE.match?(c) CGI.escape(c) else c diff --git a/app/lib/tag_manager.rb b/app/lib/tag_manager.rb index aaee7ef5..c4655965 100644 --- a/app/lib/tag_manager.rb +++ b/app/lib/tag_manager.rb @@ -7,11 +7,11 @@ class TagManager include RoutingHelper def web_domain?(domain) - domain.nil? || domain.gsub(/[\/]/, '').casecmp(Rails.configuration.x.web_domain).zero? + domain.nil? || domain.gsub(/[\/]/, '').casecmp?(Rails.configuration.x.web_domain) end def local_domain?(domain) - domain.nil? || domain.gsub(/[\/]/, '').casecmp(Rails.configuration.x.local_domain).zero? + domain.nil? || domain.gsub(/[\/]/, '').casecmp?(Rails.configuration.x.local_domain) end def normalize_domain(domain) @@ -35,9 +35,9 @@ class TagManager end def same_acct?(canonical, needle) - return true if canonical.casecmp(needle).zero? + return true if canonical.casecmp?(needle) username, domain = needle.split('@') - local_domain?(domain) && canonical.casecmp(username).zero? + local_domain?(domain) && canonical.casecmp?(username) end def local_url?(url) diff --git a/app/serializers/rest/status_serializer.rb b/app/serializers/rest/status_serializer.rb index 184c6c35..b6ecd1f5 100644 --- a/app/serializers/rest/status_serializer.rb +++ b/app/serializers/rest/status_serializer.rb @@ -8,7 +8,7 @@ class REST::StatusSerializer < ActiveModel::Serializer attribute :favourited, if: :current_user? attribute :reblogged, if: :current_user? - + attribute :content, unless: :source_requested? attribute :rich_content, unless: :source_requested? attribute :plain_markdown, unless: :source_requested? @@ -110,11 +110,12 @@ class REST::StatusSerializer < ActiveModel::Serializer return end + PINNABLE_VISIBILITIES = %w(public unlisted).freeze def pinnable current_user? && current_user.account_id == object.account_id && !object.reblog? && - %w(public unlisted).include?(object.visibility) + PINNABLE_VISIBILITIES.include?(object.visibility) end def pinned_by_group @@ -122,11 +123,7 @@ class REST::StatusSerializer < ActiveModel::Serializer end def pinnable_by_group - if object.group_id? - true - else - false - end + object.group_id? end def source_requested? diff --git a/config/initializers/active_model_serializers.rb b/config/initializers/active_model_serializers.rb index 329a5fb2..fc2dafff 100644 --- a/config/initializers/active_model_serializers.rb +++ b/config/initializers/active_model_serializers.rb @@ -11,7 +11,10 @@ class ActiveModel::Serializer::Reflection def build_association(parent_serializer, parent_serializer_options, include_slice = {}) serializer = options[:serializer] - parent_serializer_options.merge!(named_contexts: serializer._named_contexts, context_extensions: serializer._context_extensions) if serializer.respond_to?(:_named_contexts) + if serializer.respond_to?(:_named_contexts) + parent_serializer_options[:named_contexts] = serializer._named_contexts + parent_serializer_options[:context_extensions] = serializer._context_extensions + end association_options = { parent_serializer: parent_serializer, diff --git a/config/initializers/open_uri_redirection.rb b/config/initializers/open_uri_redirection.rb index e9de85bd..6be84105 100644 --- a/config/initializers/open_uri_redirection.rb +++ b/config/initializers/open_uri_redirection.rb @@ -2,7 +2,7 @@ require 'open-uri' module OpenURI def self.redirectable?(uri1, uri2) # :nodoc: - uri1.scheme.casecmp(uri2.scheme).zero? || + uri1.scheme.casecmp?(uri2.scheme) || (/\A(?:http|https|ftp)\z/i =~ uri1.scheme && /\A(?:http|https|ftp)\z/i =~ uri2.scheme) end end diff --git a/lib/gabsocial/migration_helpers.rb b/lib/gabsocial/migration_helpers.rb index 4737cfc9..f8fc80b0 100644 --- a/lib/gabsocial/migration_helpers.rb +++ b/lib/gabsocial/migration_helpers.rb @@ -44,13 +44,13 @@ module GabSocial # Stub for Database.postgresql? from GitLab def self.postgresql? %w[postgresql postgresql_makara].any? do |adapter| - ActiveRecord::Base.configurations[Rails.env]['adapter'].casecmp(adapter).zero? + ActiveRecord::Base.configurations[Rails.env]['adapter'].casecmp?(adapter) end end # Stub for Database.mysql? from GitLab def self.mysql? - ActiveRecord::Base.configurations[Rails.env]['adapter'].casecmp('mysql2').zero? + ActiveRecord::Base.configurations[Rails.env]['adapter'].casecmp?('mysql2') end # Model that can be used for querying permissions of a SQL user.