Commit 790f8b5b authored by Jasper Maes's avatar Jasper Maes Committed by Heinrich Lee Yu
Browse files

Upgrade Rails to 5.1.6.1

Model.new.attributes now also returns encrypted attributes.
parent 232d878afbb7
source 'https://rubygems.org' source 'https://rubygems.org'
gem 'rails', '5.0.7.2' gem 'rails', '5.1.6.1'
# Improves copy-on-write performance for MRI # Improves copy-on-write performance for MRI
gem 'nakayoshi_fork', '~> 0.0.4' gem 'nakayoshi_fork', '~> 0.0.4'
...@@ -18,7 +18,7 @@ gem 'mysql2', '~> 0.4.10', group: :mysql ...@@ -18,7 +18,7 @@ gem 'mysql2', '~> 0.4.10', group: :mysql
gem 'pg', '~> 1.1', group: :postgres gem 'pg', '~> 1.1', group: :postgres
gem 'rugged', '~> 0.28' gem 'rugged', '~> 0.28'
gem 'grape-path-helpers', '~> 1.0' gem 'grape-path-helpers', '~> 1.1'
gem 'faraday', '~> 0.12' gem 'faraday', '~> 0.12'
......
...@@ -4,41 +4,41 @@ GEM ...@@ -4,41 +4,41 @@ GEM
RedCloth (4.3.2) RedCloth (4.3.2)
abstract_type (0.0.7) abstract_type (0.0.7)
ace-rails-ap (4.1.2) ace-rails-ap (4.1.2)
actioncable (5.0.7.2) actioncable (5.1.6.1)
actionpack (= 5.0.7.2) actionpack (= 5.1.6.1)
nio4r (>= 1.2, < 3.0) nio4r (~> 2.0)
websocket-driver (~> 0.6.1) websocket-driver (~> 0.6.1)
actionmailer (5.0.7.2) actionmailer (5.1.6.1)
actionpack (= 5.0.7.2) actionpack (= 5.1.6.1)
actionview (= 5.0.7.2) actionview (= 5.1.6.1)
activejob (= 5.0.7.2) activejob (= 5.1.6.1)
mail (~> 2.5, >= 2.5.4) mail (~> 2.5, >= 2.5.4)
rails-dom-testing (~> 2.0) rails-dom-testing (~> 2.0)
actionpack (5.0.7.2) actionpack (5.1.6.1)
actionview (= 5.0.7.2) actionview (= 5.1.6.1)
activesupport (= 5.0.7.2) activesupport (= 5.1.6.1)
rack (~> 2.0) rack (~> 2.0)
rack-test (~> 0.6.3) rack-test (>= 0.6.3)
rails-dom-testing (~> 2.0) rails-dom-testing (~> 2.0)
rails-html-sanitizer (~> 1.0, >= 1.0.2) rails-html-sanitizer (~> 1.0, >= 1.0.2)
actionview (5.0.7.2) actionview (5.1.6.1)
activesupport (= 5.0.7.2) activesupport (= 5.1.6.1)
builder (~> 3.1) builder (~> 3.1)
erubis (~> 2.7.0) erubi (~> 1.4)
rails-dom-testing (~> 2.0) rails-dom-testing (~> 2.0)
rails-html-sanitizer (~> 1.0, >= 1.0.3) rails-html-sanitizer (~> 1.0, >= 1.0.3)
activejob (5.0.7.2) activejob (5.1.6.1)
activesupport (= 5.0.7.2) activesupport (= 5.1.6.1)
globalid (>= 0.3.6) globalid (>= 0.3.6)
activemodel (5.0.7.2) activemodel (5.1.6.1)
activesupport (= 5.0.7.2) activesupport (= 5.1.6.1)
activerecord (5.0.7.2) activerecord (5.1.6.1)
activemodel (= 5.0.7.2) activemodel (= 5.1.6.1)
activesupport (= 5.0.7.2) activesupport (= 5.1.6.1)
arel (~> 7.0) arel (~> 8.0)
activerecord_sane_schema_dumper (1.0) activerecord_sane_schema_dumper (1.0)
rails (>= 5, < 6) rails (>= 5, < 6)
activesupport (5.0.7.2) activesupport (5.1.6.1)
concurrent-ruby (~> 1.0, >= 1.0.2) concurrent-ruby (~> 1.0, >= 1.0.2)
i18n (>= 0.7, < 2) i18n (>= 0.7, < 2)
minitest (~> 5.1) minitest (~> 5.1)
...@@ -52,7 +52,7 @@ GEM ...@@ -52,7 +52,7 @@ GEM
public_suffix (>= 2.0.2, < 4.0) public_suffix (>= 2.0.2, < 4.0)
aes_key_wrap (1.0.1) aes_key_wrap (1.0.1)
akismet (2.0.0) akismet (2.0.0)
arel (7.1.4) arel (8.0.0)
asana (0.8.1) asana (0.8.1)
faraday (~> 0.9) faraday (~> 0.9)
faraday_middleware (~> 0.9) faraday_middleware (~> 0.9)
...@@ -186,7 +186,6 @@ GEM ...@@ -186,7 +186,6 @@ GEM
encryptor (3.0.0) encryptor (3.0.0)
equalizer (0.0.11) equalizer (0.0.11)
erubi (1.7.1) erubi (1.7.1)
erubis (2.7.0)
escape_utils (1.2.1) escape_utils (1.2.1)
et-orbi (1.1.7) et-orbi (1.1.7)
tzinfo tzinfo
...@@ -257,8 +256,8 @@ GEM ...@@ -257,8 +256,8 @@ GEM
fog-xml (0.1.3) fog-xml (0.1.3)
fog-core fog-core
nokogiri (>= 1.5.11, < 2.0.0) nokogiri (>= 1.5.11, < 2.0.0)
font-awesome-rails (4.7.0.1) font-awesome-rails (4.7.0.4)
railties (>= 3.2, < 5.1) railties (>= 3.2, < 6.0)
foreman (0.84.0) foreman (0.84.0)
thor (~> 0.19.1) thor (~> 0.19.1)
formatador (0.2.5) formatador (0.2.5)
...@@ -339,8 +338,8 @@ GEM ...@@ -339,8 +338,8 @@ GEM
grape-entity (0.7.1) grape-entity (0.7.1)
activesupport (>= 4.0) activesupport (>= 4.0)
multi_json (>= 1.3.2) multi_json (>= 1.3.2)
grape-path-helpers (1.0.6) grape-path-helpers (1.1.0)
activesupport (>= 4, < 5.1) activesupport
grape (~> 1.0) grape (~> 1.0)
rake (~> 12) rake (~> 12)
grape_logging (1.7.0) grape_logging (1.7.0)
...@@ -658,19 +657,19 @@ GEM ...@@ -658,19 +657,19 @@ GEM
rack rack
rack-proxy (0.6.0) rack-proxy (0.6.0)
rack rack
rack-test (0.6.3) rack-test (1.1.0)
rack (>= 1.0) rack (>= 1.0, < 3)
rails (5.0.7.2) rails (5.1.6.1)
actioncable (= 5.0.7.2) actioncable (= 5.1.6.1)
actionmailer (= 5.0.7.2) actionmailer (= 5.1.6.1)
actionpack (= 5.0.7.2) actionpack (= 5.1.6.1)
actionview (= 5.0.7.2) actionview (= 5.1.6.1)
activejob (= 5.0.7.2) activejob (= 5.1.6.1)
activemodel (= 5.0.7.2) activemodel (= 5.1.6.1)
activerecord (= 5.0.7.2) activerecord (= 5.1.6.1)
activesupport (= 5.0.7.2) activesupport (= 5.1.6.1)
bundler (>= 1.3.0) bundler (>= 1.3.0)
railties (= 5.0.7.2) railties (= 5.1.6.1)
sprockets-rails (>= 2.0.0) sprockets-rails (>= 2.0.0)
rails-controller-testing (1.0.2) rails-controller-testing (1.0.2)
actionpack (~> 5.x, >= 5.0.1) actionpack (~> 5.x, >= 5.0.1)
...@@ -1067,7 +1066,7 @@ DEPENDENCIES ...@@ -1067,7 +1066,7 @@ DEPENDENCIES
gpgme (~> 2.0.18) gpgme (~> 2.0.18)
grape (~> 1.1.0) grape (~> 1.1.0)
grape-entity (~> 0.7.1) grape-entity (~> 0.7.1)
grape-path-helpers (~> 1.0) grape-path-helpers (~> 1.1)
grape_logging (~> 1.7) grape_logging (~> 1.7)
graphiql-rails (~> 1.4.10) graphiql-rails (~> 1.4.10)
graphql (~> 1.8.0) graphql (~> 1.8.0)
...@@ -1142,7 +1141,7 @@ DEPENDENCIES ...@@ -1142,7 +1141,7 @@ DEPENDENCIES
rack-cors (~> 1.0.0) rack-cors (~> 1.0.0)
rack-oauth2 (~> 1.9.3) rack-oauth2 (~> 1.9.3)
rack-proxy (~> 0.6.0) rack-proxy (~> 0.6.0)
rails (= 5.0.7.2) rails (= 5.1.6.1)
rails-controller-testing rails-controller-testing
rails-i18n (~> 5.1) rails-i18n (~> 5.1)
rainbow (~> 3.0) rainbow (~> 3.0)
......
...@@ -56,7 +56,7 @@ class JobArtifact < ApplicationRecord ...@@ -56,7 +56,7 @@ class JobArtifact < ApplicationRecord
update_project_statistics stat: :build_artifacts_size update_project_statistics stat: :build_artifacts_size
after_save :update_file_store, if: :file_changed? after_save :update_file_store, if: :saved_change_to_file?
scope :with_files_stored_locally, -> { where(file_store: [nil, ::JobArtifactUploader::Store::LOCAL]) } scope :with_files_stored_locally, -> { where(file_store: [nil, ::JobArtifactUploader::Store::LOCAL]) }
......
...@@ -230,7 +230,7 @@ def prevent_modification ...@@ -230,7 +230,7 @@ def prevent_modification
end end
def update_kubernetes_namespace def update_kubernetes_namespace
return unless namespace_changed? return unless saved_change_to_namespace?
run_after_commit do run_after_commit do
ClusterConfigureWorker.perform_async(cluster_id) ClusterConfigureWorker.perform_async(cluster_id)
......
...@@ -13,8 +13,8 @@ def move_dir ...@@ -13,8 +13,8 @@ def move_dir
raise Gitlab::UpdatePathError.new("Namespace #{name} (#{id}) cannot be moved because at least one project (e.g. #{proj_with_tags.name} (#{proj_with_tags.id})) has tags in container registry") raise Gitlab::UpdatePathError.new("Namespace #{name} (#{id}) cannot be moved because at least one project (e.g. #{proj_with_tags.name} (#{proj_with_tags.id})) has tags in container registry")
end end
parent_was = if parent_changed? && parent_id_was.present? parent_was = if parent_changed? && parent_id_before_last_save.present?
Namespace.find(parent_id_was) # raise NotFound early if needed Namespace.find(parent_id_before_last_save) # raise NotFound early if needed
end end
move_repositories move_repositories
......
...@@ -61,7 +61,7 @@ class Group < Namespace ...@@ -61,7 +61,7 @@ class Group < Namespace
after_create :post_create_hook after_create :post_create_hook
after_destroy :post_destroy_hook after_destroy :post_destroy_hook
after_save :update_two_factor_requirement after_save :update_two_factor_requirement
after_update :path_changed_hook, if: :path_changed? after_update :path_changed_hook, if: :saved_change_to_path?
class << self class << self
def sort_by_attribute(method) def sort_by_attribute(method)
...@@ -411,7 +411,7 @@ def project_creation_level ...@@ -411,7 +411,7 @@ def project_creation_level
private private
def update_two_factor_requirement def update_two_factor_requirement
return unless require_two_factor_authentication_changed? || two_factor_grace_period_changed? return unless saved_change_to_require_two_factor_authentication? || saved_change_to_two_factor_grace_period?
users.find_each(&:update_two_factor_requirement) users.find_each(&:update_two_factor_requirement)
end end
......
...@@ -13,7 +13,7 @@ class LfsObject < ApplicationRecord ...@@ -13,7 +13,7 @@ class LfsObject < ApplicationRecord
mount_uploader :file, LfsObjectUploader mount_uploader :file, LfsObjectUploader
after_save :update_file_store, if: :file_changed? after_save :update_file_store, if: :saved_change_to_file?
def update_file_store def update_file_store
# The file.object_store is set during `uploader.store!` # The file.object_store is set during `uploader.store!`
......
...@@ -55,7 +55,7 @@ def post_create_hook ...@@ -55,7 +55,7 @@ def post_create_hook
end end
def post_update_hook def post_update_hook
if access_level_changed? if saved_change_to_access_level?
run_after_commit { notification_service.update_group_member(self) } run_after_commit { notification_service.update_group_member(self) }
end end
......
...@@ -111,7 +111,7 @@ def post_create_hook ...@@ -111,7 +111,7 @@ def post_create_hook
end end
def post_update_hook def post_update_hook
if access_level_changed? if saved_change_to_access_level?
run_after_commit { notification_service.update_project_member(self) } run_after_commit { notification_service.update_project_member(self) }
end end
......
...@@ -698,7 +698,7 @@ def clear_memoized_shas ...@@ -698,7 +698,7 @@ def clear_memoized_shas
end end
def reload_diff_if_branch_changed def reload_diff_if_branch_changed
if (source_branch_changed? || target_branch_changed?) && if (saved_change_to_source_branch? || saved_change_to_target_branch?) &&
(source_branch_head && target_branch_head) (source_branch_head && target_branch_head)
reload_diff reload_diff
end end
......
...@@ -50,6 +50,8 @@ class Namespace < ApplicationRecord ...@@ -50,6 +50,8 @@ class Namespace < ApplicationRecord
validate :nesting_level_allowed validate :nesting_level_allowed
validates_associated :runners
delegate :name, to: :owner, allow_nil: true, prefix: true delegate :name, to: :owner, allow_nil: true, prefix: true
delegate :avatar_url, to: :owner, allow_nil: true delegate :avatar_url, to: :owner, allow_nil: true
...@@ -57,7 +59,7 @@ class Namespace < ApplicationRecord ...@@ -57,7 +59,7 @@ class Namespace < ApplicationRecord
before_create :sync_share_with_group_lock_with_parent before_create :sync_share_with_group_lock_with_parent
before_update :sync_share_with_group_lock_with_parent, if: :parent_changed? before_update :sync_share_with_group_lock_with_parent, if: :parent_changed?
after_update :force_share_with_group_lock_on_descendants, if: -> { share_with_group_lock_changed? && share_with_group_lock? } after_update :force_share_with_group_lock_on_descendants, if: -> { saved_change_to_share_with_group_lock? && share_with_group_lock? }
# Legacy Storage specific hooks # Legacy Storage specific hooks
...@@ -292,7 +294,7 @@ def first_auto_devops_config ...@@ -292,7 +294,7 @@ def first_auto_devops_config
private private
def path_or_parent_changed? def path_or_parent_changed?
path_changed? || parent_changed? saved_change_to_path? || saved_change_to_parent_id?
end end
def refresh_access_of_projects_invited_groups def refresh_access_of_projects_invited_groups
......
...@@ -147,20 +147,20 @@ def update_daemon ...@@ -147,20 +147,20 @@ def update_daemon
# rubocop: enable CodeReuse/ServiceClass # rubocop: enable CodeReuse/ServiceClass
def pages_config_changed? def pages_config_changed?
project_id_changed? || saved_change_to_project_id? ||
domain_changed? || saved_change_to_domain? ||
certificate_changed? || saved_change_to_certificate? ||
key_changed? || saved_change_to_key? ||
became_enabled? || became_enabled? ||
became_disabled? became_disabled?
end end
def became_enabled? def became_enabled?
enabled_until.present? && !enabled_until_was.present? enabled_until.present? && !enabled_until_before_last_save.present?
end end
def became_disabled? def became_disabled?
!enabled_until.present? && enabled_until_was.present? !enabled_until.present? && enabled_until_before_last_save.present?
end end
def validate_matching_key def validate_matching_key
......
...@@ -90,7 +90,7 @@ class Project < ApplicationRecord ...@@ -90,7 +90,7 @@ class Project < ApplicationRecord
before_save :ensure_runners_token before_save :ensure_runners_token
after_save :update_project_statistics, if: :namespace_id_changed? after_save :update_project_statistics, if: :saved_change_to_namespace_id?
after_save :create_import_state, if: ->(project) { project.import? && project.import_state.nil? } after_save :create_import_state, if: ->(project) { project.import? && project.import_state.nil? }
...@@ -116,7 +116,7 @@ class Project < ApplicationRecord ...@@ -116,7 +116,7 @@ class Project < ApplicationRecord
after_initialize :use_hashed_storage after_initialize :use_hashed_storage
after_create :check_repository_absence! after_create :check_repository_absence!
after_create :ensure_storage_path_exists after_create :ensure_storage_path_exists
after_save :ensure_storage_path_exists, if: :namespace_id_changed? after_save :ensure_storage_path_exists, if: :saved_change_to_namespace_id?
acts_as_ordered_taggable acts_as_ordered_taggable
...@@ -1430,7 +1430,7 @@ def wiki_repository_exists? ...@@ -1430,7 +1430,7 @@ def wiki_repository_exists?
# update visibility_level of forks # update visibility_level of forks
def update_forks_visibility_level def update_forks_visibility_level
return unless visibility_level < visibility_level_was return unless visibility_level < visibility_level_before_last_save
forks.each do |forked_project| forks.each do |forked_project|
if forked_project.visibility_level > visibility_level if forked_project.visibility_level > visibility_level
......
...@@ -248,7 +248,7 @@ def refresh_remote ...@@ -248,7 +248,7 @@ def refresh_remote
# Before adding a new remote we have to delete the data from # Before adding a new remote we have to delete the data from
# the previous remote name # the previous remote name
prev_remote_name = remote_name_was || fallback_remote_name prev_remote_name = remote_name_before_last_save || fallback_remote_name
run_after_commit do run_after_commit do
project.repository.async_remove_remote(prev_remote_name) project.repository.async_remove_remote(prev_remote_name)
end end
......
...@@ -14,26 +14,26 @@ class Route < ApplicationRecord ...@@ -14,26 +14,26 @@ class Route < ApplicationRecord
before_validation :delete_conflicting_orphaned_routes before_validation :delete_conflicting_orphaned_routes
after_create :delete_conflicting_redirects after_create :delete_conflicting_redirects
after_update :delete_conflicting_redirects, if: :path_changed? after_update :delete_conflicting_redirects, if: :saved_change_to_path?
after_update :create_redirect_for_old_path after_update :create_redirect_for_old_path
after_update :rename_descendants after_update :rename_descendants
scope :inside_path, -> (path) { where('routes.path LIKE ?', "#{sanitize_sql_like(path)}/%") } scope :inside_path, -> (path) { where('routes.path LIKE ?', "#{sanitize_sql_like(path)}/%") }
def rename_descendants def rename_descendants
return unless path_changed? || name_changed? return unless saved_change_to_path? || saved_change_to_name?
descendant_routes = self.class.inside_path(path_was) descendant_routes = self.class.inside_path(path_before_last_save)
descendant_routes.each do |route| descendant_routes.each do |route|
attributes = {} attributes = {}
if path_changed? && route.path.present? if saved_change_to_path? && route.path.present?
attributes[:path] = route.path.sub(path_was, path) attributes[:path] = route.path.sub(path_before_last_save, path)
end end
if name_changed? && name_was.present? && route.name.present? if saved_change_to_name? && name_before_last_save.present? && route.name.present?
attributes[:name] = route.name.sub(name_was, name) attributes[:name] = route.name.sub(name_before_last_save, name)
end end
if attributes.present? if attributes.present?
...@@ -65,7 +65,7 @@ def create_redirect(path) ...@@ -65,7 +65,7 @@ def create_redirect(path)
private private
def create_redirect_for_old_path def create_redirect_for_old_path
create_redirect(path_was) if path_changed? create_redirect(path_before_last_save) if saved_change_to_path?
end end
def delete_conflicting_orphaned_routes def delete_conflicting_orphaned_routes
......
...@@ -194,7 +194,7 @@ def update_tracked_fields!(request) ...@@ -194,7 +194,7 @@ def update_tracked_fields!(request)
before_validation :ensure_namespace_correct before_validation :ensure_namespace_correct
before_save :ensure_namespace_correct # in case validation is skipped before_save :ensure_namespace_correct # in case validation is skipped
after_validation :set_username_errors after_validation :set_username_errors
after_update :username_changed_hook, if: :username_changed? after_update :username_changed_hook, if: :saved_change_to_username?
after_destroy :post_destroy_hook after_destroy :post_destroy_hook
after_destroy :remove_key_cache after_destroy :remove_key_cache
after_commit(on: :update) do after_commit(on: :update) do
......
...@@ -80,7 +80,7 @@ def service_hash ...@@ -80,7 +80,7 @@ def service_hash
value = value.is_a?(Hash) ? value.to_json : value value = value.is_a?(Hash) ? value.to_json : value
service_hash[ActiveRecord::Base.connection.quote_column_name(key)] = service_hash[ActiveRecord::Base.connection.quote_column_name(key)] =
ActiveRecord::Base.sanitize(value) ActiveRecord::Base.connection.quote(value)
end end
end end
end end
......
---
title: Rails 5.1
merge_request: 24852
author: Jasper Maes
type: other
...@@ -164,9 +164,6 @@ class Application < Rails::Application ...@@ -164,9 +164,6 @@ class Application < Rails::Application
# Version of your assets, change this if you want to expire all your assets # Version of your assets, change this if you want to expire all your assets
config.assets.version = '1.0' config.assets.version = '1.0'
# Can be removed once upgraded to Rails 5.1 or higher
config.action_controller.raise_on_unfiltered_parameters = true
# Nokogiri is significantly faster and uses less memory than REXML # Nokogiri is significantly faster and uses less memory than REXML
ActiveSupport::XmlMini.backend = 'Nokogiri' ActiveSupport::XmlMini.backend = 'Nokogiri'
......
# Remove once https://github.com/rails/rails/pull/32498
# is released on a 5.1.x rails version.
# Commit on 5-1-stable branch: https://github.com/rails/rails/commit/6ef736625eddf6700f2e67f7849c79c92381abee
module ActiveRecord
class AttributeMutationTracker
def changes
attr_names.each_with_object({}.with_indifferent_access) do |attr_name, result|
change = change_to_attribute(attr_name)
if change
result.merge!(attr_name => change)
end
end
end
end
end
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment