Maintenance: Updated to Ruby 2.7.3.

This commit is contained in:
Martin Gruner 2021-06-24 07:05:39 +00:00
parent ca56de3648
commit 22e0fc5520
23 changed files with 49 additions and 65 deletions

View file

@ -36,7 +36,7 @@ jobs:
- name: Set up Ruby - name: Set up Ruby
uses: ruby/setup-ruby@v1 uses: ruby/setup-ruby@v1
with: with:
ruby-version: 2.6.6 ruby-version: 2.7.3
- name: Increase MySQL max_allowed_packet to 1GB (workaround for unknown/missing service option) - name: Increase MySQL max_allowed_packet to 1GB (workaround for unknown/missing service option)
run: | run: |
sudo apt-get install -y mysql-client sudo apt-get install -y mysql-client

View file

@ -1,5 +1,5 @@
default: default:
image: registry.znuny.com/docker/zammad-ci:stable image: registry.znuny.com/docker/zammad-ci:test-ruby-3.7
include: include:
- local: '/.gitlab/ci/base.yml' - local: '/.gitlab/ci/base.yml'
@ -43,9 +43,9 @@ variables:
# Cache gems in between jobs and pipelines # Cache gems in between jobs and pipelines
# ATTENTION: We use a combination of the Ruby major and minor version number # ATTENTION: We use a combination of the Ruby major and minor version number
# as a key for the cache to avoid cache growth and incompatibilities between # as a key for the cache to avoid cache growth and incompatibilities between
# the gems. Search hook: 2.6.6 (change it when updating the Ruby version too) # the gems. Search hook: 2.7.2 (change it when updating the Ruby version too)
cache: cache:
key: "centos7ruby266rails6" key: "centos7ruby273"
paths: paths:
- vendor/ruby - vendor/ruby
# ATTENTION: This should be a dedicated cache only used in the job "TODO". # ATTENTION: This should be a dedicated cache only used in the job "TODO".

View file

@ -7,6 +7,7 @@ api_client_ruby:
- bundle exec rake zammad:ci:test:start - bundle exec rake zammad:ci:test:start
- git clone https://github.com/zammad/zammad-api-client-ruby.git - git clone https://github.com/zammad/zammad-api-client-ruby.git
- cd zammad-api-client-ruby - cd zammad-api-client-ruby
- bundle update --bundler
- bundle install -j $(nproc) - bundle install -j $(nproc)
- bundle exec rspec - bundle exec rspec

View file

@ -32,6 +32,17 @@ zeitwerk_check:
- bundle exec rake zammad:db:init - bundle exec rake zammad:db:init
- bundle exec rails zeitwerk:check - bundle exec rails zeitwerk:check
zeitwerk_check:
<<: *template_pre
extends:
- .tags_docker
- .services_postgresql
script:
- bundle install -j $(nproc) --path vendor
- bundle exec ruby script/build/database_config.rb
- bundle exec rake zammad:db:init
- bundle exec rails zeitwerk:check
coffeelint: coffeelint:
<<: *template_pre <<: *template_pre
script: script:

View file

@ -1 +1 @@
2.6.6 2.7.3

View file

@ -3,7 +3,7 @@
source 'https://rubygems.org' source 'https://rubygems.org'
# core - base # core - base
ruby '2.6.6' ruby '2.7.3'
gem 'rails', '6.0.4' gem 'rails', '6.0.4'
# core - rails additions # core - rails additions
@ -19,7 +19,7 @@ gem 'unicorn', group: :unicorn
# core - supported ORMs # core - supported ORMs
gem 'activerecord-nulldb-adapter', group: :nulldb gem 'activerecord-nulldb-adapter', group: :nulldb
gem 'mysql2', '0.4.10', group: :mysql gem 'mysql2', group: :mysql
gem 'pg', '0.21.0', group: :postgres gem 'pg', '0.21.0', group: :postgres
# core - asynchrous task execution # core - asynchrous task execution

View file

@ -129,7 +129,7 @@ GEM
biz (1.8.2) biz (1.8.2)
clavius (~> 1.0) clavius (~> 1.0)
tzinfo tzinfo
bootsnap (1.3.2) bootsnap (1.5.1)
msgpack (~> 1.0) msgpack (~> 1.0)
browser (2.5.3) browser (2.5.3)
buftok (0.2.0) buftok (0.2.0)
@ -296,19 +296,19 @@ GEM
memoizable (0.4.2) memoizable (0.4.2)
thread_safe (~> 0.3, >= 0.3.1) thread_safe (~> 0.3, >= 0.3.1)
method_source (0.9.2) method_source (0.9.2)
mime-types (3.2.2) mime-types (3.3.1)
mime-types-data (~> 3.2015) mime-types-data (~> 3.2015)
mime-types-data (3.2019.0331) mime-types-data (3.2020.1104)
mini_mime (1.1.0) mini_mime (1.1.0)
mini_portile2 (2.5.3) mini_portile2 (2.5.3)
mini_racer (0.2.9) mini_racer (0.2.9)
libv8 (>= 6.9.411) libv8 (>= 6.9.411)
minitest (5.14.4) minitest (5.14.4)
msgpack (1.2.4) msgpack (1.3.3)
multi_json (1.15.0) multi_json (1.15.0)
multi_xml (0.6.0) multi_xml (0.6.0)
multipart-post (2.1.1) multipart-post (2.1.1)
mysql2 (0.4.10) mysql2 (0.5.3)
naught (1.1.0) naught (1.1.0)
nenv (0.3.0) nenv (0.3.0)
nestful (1.1.3) nestful (1.1.3)
@ -638,7 +638,7 @@ DEPENDENCIES
mail! mail!
mime-types mime-types
mini_racer mini_racer
mysql2 (= 0.4.10) mysql2
net-ldap net-ldap
oauth2 oauth2
omniauth-facebook omniauth-facebook
@ -699,7 +699,7 @@ DEPENDENCIES
zendesk_api zendesk_api
RUBY VERSION RUBY VERSION
ruby 2.6.6p146 ruby 2.7.3p183
BUNDLED WITH BUNDLED WITH
1.17.3 2.2.20

View file

@ -75,7 +75,7 @@ class KnowledgeBase::AnswersController < KnowledgeBase::BaseController
assets = object.assets({}) assets = object.assets({})
contents = object.translations.map(&:content).compact contents = object.translations.filter_map(&:content)
assets = ApplicationModel::CanAssets.reduce contents, assets assets = ApplicationModel::CanAssets.reduce contents, assets
render json: { id: object.id, assets: assets }, status: :created render json: { id: object.id, assets: assets }, status: :created

View file

@ -12,8 +12,7 @@ class LinksController < ApplicationController
) )
linked_objects = links linked_objects = links
.map { |elem| elem['link_object']&.safe_constantize&.lookup(id: elem['link_object_value']) } .filter_map { |elem| elem['link_object']&.safe_constantize&.lookup(id: elem['link_object_value']) }
.compact
# return result # return result
render json: { render json: {

View file

@ -53,10 +53,8 @@ class ChecksKbClientNotificationJob < ApplicationJob
def users_for(permission_suffix) def users_for(permission_suffix)
Sessions Sessions
.sessions .sessions
.map { |client_id| Sessions.get(client_id)&.dig(:user, 'id') } .filter_map { |client_id| Sessions.get(client_id)&.dig(:user, 'id') }
.compact .filter_map { |user_id| User.find_by(id: user_id) }
.map { |user_id| User.find_by(id: user_id) }
.compact
.select { |user| user.permissions? "knowledge_base.#{permission_suffix}" } .select { |user| user.permissions? "knowledge_base.#{permission_suffix}" }
end end

View file

@ -377,7 +377,7 @@ returns
def self.sender_attributes(from) def self.sender_attributes(from)
if from.is_a?(HashWithIndifferentAccess) if from.is_a?(HashWithIndifferentAccess)
from = SENDER_FIELDS.map { |f| from[f] }.compact from = SENDER_FIELDS.filter_map { |f| from[f] }
.map(&:to_utf8).reject(&:blank?) .map(&:to_utf8).reject(&:blank?)
.partition { |address| address.match?(EMAIL_REGEX) } .partition { |address| address.match?(EMAIL_REGEX) }
.flatten.first .flatten.first
@ -743,7 +743,7 @@ process unprocessable_mails (tmp/unprocessable_mail/*.eml) again
end end
# for some broken sm mail clients (X-MimeOLE: Produced By Microsoft Exchange V6.5) # for some broken sm mail clients (X-MimeOLE: Produced By Microsoft Exchange V6.5)
filename ||= file.header[:content_location].to_s.force_encoding('utf-8') filename ||= file.header[:content_location].to_s.dup.force_encoding('utf-8')
file_body = String.new(file.body.to_s) file_body = String.new(file.body.to_s)

View file

@ -11,8 +11,7 @@ module ChecksClientNotification
end end
def notify_clients_data(event) def notify_clients_data(event)
class_name = self.class.name class_name = self.class.name.gsub(%r{::}, '')
class_name.gsub!(%r{::}, '')
{ {
message: { message: {

View file

@ -309,7 +309,7 @@ returns
.map { |p| p.slice(:from, :to) } .map { |p| p.slice(:from, :to) }
.map(&:values).flatten .map(&:values).flatten
.pluck(:user_id).compact .pluck(:user_id).compact
.map { |user_id| User.lookup(id: user_id) }.compact .filter_map { |user_id| User.lookup(id: user_id) }
.each.with_object({}) { |user, a| user.assets(a) } .each.with_object({}) { |user, a| user.assets(a) }
{ {

View file

@ -37,7 +37,7 @@ class KnowledgeBase
es_response = SearchIndexBackend.search(query, name, options) es_response = SearchIndexBackend.search(query, name, options)
es_response = search_es_filter(es_response, query, kb_locales, options) if defined? :search_es_filter es_response = search_es_filter(es_response, query, kb_locales, options) if defined? :search_es_filter
es_response.map { |item| lookup(id: item[:id]) }.compact es_response.filter_map { |item| lookup(id: item[:id]) }
end end
def search_sql(query, kb_locales, options) def search_sql(query, kb_locales, options)

View file

@ -230,8 +230,7 @@ class Link < ApplicationModel
def self.reduce_assets(assets, link_references) def self.reduce_assets(assets, link_references)
link_items = link_references link_items = link_references
.map { |elem| lookup_linked_object(elem) } .filter_map { |elem| lookup_linked_object(elem) }
.compact
ApplicationModel::CanAssets.reduce(link_items, assets) ApplicationModel::CanAssets.reduce(link_items, assets)
end end

View file

@ -12,11 +12,11 @@ lookup by name and create tag item
=end =end
def self.lookup_by_name_and_create(name) def self.lookup_by_name_and_create(name)
name.strip! lookup = name.strip
tag_object = Tag::Object.lookup(name: name) tag_object = Tag::Object.lookup(name: lookup)
return tag_object if tag_object return tag_object if tag_object
Tag::Object.create(name: name) Tag::Object.create(name: lookup)
end end
end end

View file

@ -1,21 +0,0 @@
# Copyright (C) 2012-2021 Zammad Foundation, http://zammad-foundation.org/
if Kernel.respond_to?(:open_uri_original_open)
module Kernel
module_function
# see: https://github.com/ruby/ruby/pull/1675
def open(name, *rest, &block)
if name.respond_to?(:open) && name.method(:open).parameters.present?
name.open(*rest, &block)
elsif name.respond_to?(:to_str) &&
%r{\A[A-Za-z][A-Za-z0-9+\-.]*://} =~ name &&
(uri = URI.parse(name)).respond_to?(:open)
uri.open(*rest, &block)
else
open_uri_original_open(name, *rest, &block)
end
end
end
end

View file

@ -83,7 +83,7 @@ class KnowledgeBase
def all_ids_present? def all_ids_present?
old_ids = scope.pluck(:id) old_ids = scope.pluck(:id)
new_ids = @menu_items_data.map { |elem| elem[:id]&.to_i }.compact new_ids = @menu_items_data.filter_map { |elem| elem[:id]&.to_i }
old_ids.sort == new_ids.sort old_ids.sort == new_ids.sort
end end

View file

@ -136,13 +136,13 @@ class Ldap
end end
def group_user_dns_memberuid(entry) def group_user_dns_memberuid(entry)
entry[:memberuid].collect do |uid| entry[:memberuid].filter_map do |uid|
dn = nil dn = nil
@ldap.search("(&(uid=#{uid})#{Import::Ldap.config[:user_filter]})", attributes: %w[dn]) do |user| @ldap.search("(&(uid=#{uid})#{Import::Ldap.config[:user_filter]})", attributes: %w[dn]) do |user|
dn = user.dn dn = user.dn
end end
dn dn
end.compact end
end end
end end
end end

View file

@ -261,8 +261,7 @@ remove whole data from index
end end
index index
.map { |local_index| search_by_index(query, local_index, options) } .filter_map { |local_index| search_by_index(query, local_index, options) }
.compact
.flatten(1) .flatten(1)
end end

View file

@ -16,13 +16,13 @@ class Sequencer
ids = ews_folder_ids ids = ews_folder_ids
ids ||= [] ids ||= []
ews_folder.id_folder_map.collect do |id, folder| ews_folder.id_folder_map.filter_map do |id, folder|
next if ids.present? && ids.exclude?(id) next if ids.present? && ids.exclude?(id)
next if folder.total_count.blank? next if folder.total_count.blank?
next if folder.total_count.zero? next if folder.total_count.zero?
[id, ews_folder.display_path(folder)] [id, ews_folder.display_path(folder)]
end.compact.to_h end.to_h
end end
end end
end end

View file

@ -16,7 +16,7 @@ class Sequencer
def process def process
state.provide(:associations) do state.provide(:associations) do
associations.collect do |association| associations.filter_map do |association|
logger.debug { "Checking association '#{association}'" } logger.debug { "Checking association '#{association}'" }
next if !mapped.key?(association) next if !mapped.key?(association)
@ -30,7 +30,7 @@ class Sequencer
logger.debug { "Using value of association '#{association}'" } logger.debug { "Using value of association '#{association}'" }
[association, value] [association, value]
end.compact.to_h end.to_h
end end
end end

View file

@ -12,8 +12,7 @@ class Sequencer
private private
def groups def groups
remote_ids.map { |remote_id| group_map[remote_id] } remote_ids.filter_map { |remote_id| group_map[remote_id] }
.compact
.map { |local_id| ::Group.find(local_id) } .map { |local_id| ::Group.find(local_id) }
end end