diff --git a/.github/workflows/future_proof.yml b/.github/workflows/future_proof.yml index a3b3370e..822fe90c 100644 --- a/.github/workflows/future_proof.yml +++ b/.github/workflows/future_proof.yml @@ -17,8 +17,9 @@ jobs: fail-fast: false matrix: ruby-version: - - '3.2' # Latest ruby 3.2.x + - '3.2' # Latest ruby 3.2.x (no longer used, but preserve the option to rollback) - '3.3' # Latest ruby 3.3.x + - '3.4' # Latest ruby 3.4.x name: "Ruby ${{ matrix.ruby-version }} Smoke Tests" diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index bdb4bcd4..625f9ac6 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -16,7 +16,7 @@ jobs: fail-fast: false matrix: ruby-version: - - '3.2.8' + - '3.3.9' test-group: - "[a-b]" - "[c]" @@ -94,7 +94,7 @@ jobs: fail-fast: false matrix: ruby-version: - - '3.2.8' + - '3.3.9' test-group: - "[a-z]" diff --git a/.ruby-version b/.ruby-version index f092941a..3b47f2e4 100644 --- a/.ruby-version +++ b/.ruby-version @@ -1 +1 @@ -3.2.8 +3.3.9 diff --git a/Gemfile b/Gemfile index 51bb7e65..4637ec2d 100644 --- a/Gemfile +++ b/Gemfile @@ -11,9 +11,6 @@ gem 'rails', '~> 7.2.2', '>= 7.2.2.2' # Fixes uninitialized constant ActiveSupport::LoggerThreadSafeLevel::Logger on Rails 7.0x # and earlier. See https://github.com/rails/rails/issues/54260. gem 'concurrent-ruby', '1.3.4' -# Use old psych for YAML on Ruby 3.1 until we move to Rails 7.0.4 -# so that we can continue to use aliases in config/locales/en.yml -# cf. https://stackoverflow.com/questions/71191685/visit-psych-nodes-alias-unknown-alias-default-psychbadalias gem 'psych', '4.0.4' # Exactly match the version on Ruby 3.1 gem 'stringio', '3.1.1' # psych dependency: exactly match the default version on Ruby 3.3 @@ -62,7 +59,7 @@ gem 'will_paginate' # gem 'capistrano-rails', group: :development # net-imap (via ndr_error) requires date. Puma needs us to stick to the ruby default version. -gem 'date', '3.1.3' # Lock to Ruby 3.0 version of gem for live service +gem 'date', '3.3.4' # Lock to Ruby 3.3 version of gem for live service gem 'ndr_authenticate', '~> 0.3', '>= 0.3.3' gem 'ndr_error', '~> 2.0' diff --git a/Gemfile.lock b/Gemfile.lock index 222c61f7..a6d0ce8b 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -149,7 +149,7 @@ GEM crass (1.0.6) csv (3.3.0) daemons (1.4.1) - date (3.1.3) + date (3.3.4) delayed_job (4.1.13) activesupport (>= 3.0, < 9.0) delayed_job_active_record (4.1.11) @@ -273,7 +273,7 @@ GEM net-ldap rails (>= 7.0, < 7.3) yubikey - ndr_dev_support (7.3.3) + ndr_dev_support (7.3.4) activesupport (>= 6.1, < 8.1) brakeman (>= 4.7.1) bundler-audit @@ -605,7 +605,7 @@ DEPENDENCIES coffee-rails concurrent-ruby (= 1.3.4) daemons - date (= 3.1.3) + date (= 3.3.4) delayed_job (~> 4.1) delayed_job_active_record devise (~> 4.7, >= 4.7.1) @@ -656,4 +656,4 @@ DEPENDENCIES will_paginate BUNDLED WITH - 2.4.19 + 2.5.22 diff --git a/README.md b/README.md index 3dc1e3da..23df3004 100644 --- a/README.md +++ b/README.md @@ -1,14 +1,14 @@ # Data Management System [![Build Status](https://github.com/publichealthengland/data_management_system/workflows/Test/badge.svg)](https://github.com/publichealthengland/data_management_system/actions?query=workflow%3Atest) -* Rails version 6.1.7 -* Ruby version is 3.0.4 +* Rails version 7.2.x +* Ruby version is 3.3.x ## System dependencies - * ndr_dev_support ~> 6.0 + * ndr_dev_support '~> 7.0' * ndr_error '~> 2.0' * ndr_support '~> 5.9' - * ndr_ui (3.3.1) + * ndr_ui '~> 3.3' ## Configuration diff --git a/app/models/project_dataset_level.rb b/app/models/project_dataset_level.rb index 5caa75ca..4d431b49 100644 --- a/app/models/project_dataset_level.rb +++ b/app/models/project_dataset_level.rb @@ -12,7 +12,7 @@ class ProjectDatasetLevel < ApplicationRecord validates :status, uniqueness: { scope: %i[access_level_id project_dataset_id] }, if: proc { |pdl| %w[request approved renewable].include?(pdl.status) } - enum status: { request: 1, approved: 2, rejected: 3, renewable: 4, closed: 5 } + enum :status, { request: 1, approved: 2, rejected: 3, renewable: 4, closed: 5 } scope :same_access_level_levels, lambda { |pdl| where(project_dataset_id: pdl.project_dataset_id, access_level_id: pdl.access_level_id). diff --git a/config/deploy.rb b/config/deploy.rb index a6c6055e..b046cf62 100644 --- a/config/deploy.rb +++ b/config/deploy.rb @@ -220,15 +220,16 @@ # deploying user, rather than the application user. # You can override the path using e.g. set :pg_conf_path, '/usr/pgsql-9.5/bin/pg_config' # otherwise the latest installed version will be used. + # Note that the relevant postgresql-devel package is required, not just postgresql run <<~SHELL set -e; cd #{release_path}; pg_conf_path="#{fetch(:pg_conf_path, '')}"; if [ -z "$pg_conf_path" ]; then - pg_conf_path=`ls -1d /usr/pgsql-{9,[1-8]*}/bin/pg_config 2> /dev/null | tail -1`; + pg_conf_path=`ls -1d /usr/pgsql-{9*,[1-8]*}/include 2> /dev/null | sed -e 's:/include$:/bin/pg_config:' | tail -1`; fi; if [ -n "$pg_conf_path" ]; then - echo Using pg_conf_path=\"$pg_conf_path\"; + echo Using pg_conf_path=\\"$pg_conf_path\\"; bundle config --local build.pg --with-pg-config="$pg_conf_path"; fi SHELL diff --git a/config/deployments.yml b/config/deployments.yml index 9a145de6..005d63f0 100644 --- a/config/deployments.yml +++ b/config/deployments.yml @@ -4,7 +4,7 @@ --- beta: branch: 'main' - ruby: 3.2.8 + ruby: 3.3.9 live: branch: 'main' - ruby: 3.2.8 + ruby: 3.3.9 diff --git a/lib/tasks/seed_cas_dataset.rake b/lib/tasks/seed_cas_dataset.rake index c632383d..0f512c6f 100644 --- a/lib/tasks/seed_cas_dataset.rake +++ b/lib/tasks/seed_cas_dataset.rake @@ -21,7 +21,7 @@ namespace :cas do fname = Rails.root.join('lib', 'tasks', 'xsd', 'nodes_cas.yml') Node.transaction do - YAML.safe_load(File.open(fname), [Symbol]).each do |row| + YAML.safe_load(File.open(fname), permitted_classes: [Symbol]).each do |row| version = row['dataset_version'] dataset = row['name'] print "Building nodes for #{version}\n" diff --git a/lib/tasks/xsd_seed.rake b/lib/tasks/xsd_seed.rake index 48637901..69d7304f 100644 --- a/lib/tasks/xsd_seed.rake +++ b/lib/tasks/xsd_seed.rake @@ -44,7 +44,7 @@ namespace :xsd do fname = Rails.root.join('lib', 'tasks', 'xsd', 'nodes.yml') Node.transaction do - YAML.safe_load(File.open(fname), [Symbol]).each do |row| + YAML.safe_load(File.open(fname), permitted_classes: [Symbol]).each do |row| version = row['dataset_version'] dataset = row['name'] print "Building nodes for #{version}\n" @@ -103,7 +103,7 @@ namespace :xsd do fname = Rails.root.join('lib', 'tasks', 'xsd', 'xml_types.yml') before = XmlType.count XmlType.transaction do - YAML.safe_load(File.open(fname), [Symbol]).each do |row| + YAML.safe_load(File.open(fname), permitted_classes: [Symbol]).each do |row| row.delete(:pattern) if row[:pattern].blank? row.delete(:decimal_places) if row[:decimal_places].blank? ignore = %w[xml_attribute_for_value enumeration_values attribute_names] @@ -142,7 +142,7 @@ namespace :xsd do fname = Rails.root.join('lib', 'tasks', 'xsd', 'datasets.yml') before = Dataset.count Dataset.transaction do - YAML.safe_load(File.open(fname), [Symbol]).each_value do |row| + YAML.safe_load(File.open(fname), permitted_classes: [Symbol]).each_value do |row| d = Dataset.new(row) d.dataset_type = DatasetType.find_by(name: 'XML Schema') d.save!(validate: false) @@ -157,7 +157,7 @@ namespace :xsd do fname = Rails.root.join('lib', 'tasks', 'xsd', 'dataset_versions.yml') before = DatasetVersion.count DatasetVersion.transaction do - YAML.safe_load(File.open(fname), [Symbol]).each_value do |row| + YAML.safe_load(File.open(fname), permitted_classes: [Symbol]).each_value do |row| d = DatasetVersion.new(row.except('dataset')) d.dataset = Dataset.find_by(name: row['dataset']) d.save! @@ -172,7 +172,7 @@ namespace :xsd do attrs = Rails.root.join('lib', 'tasks', 'xsd', 'xml_attributes.yml') counter = 0 Nodes::DataItem.transaction do - YAML.safe_load(File.open(attrs), [Symbol]).each_value do |row| + YAML.safe_load(File.open(attrs), permitted_classes: [Symbol]).each_value do |row| x = XmlAttribute.new(row) x.save! counter += 1 @@ -187,7 +187,7 @@ namespace :xsd do fname = Rails.root.join('lib', 'tasks', 'xsd', 'categories.yml') before = Category.count Category.transaction do - YAML.safe_load(File.open(fname), [Symbol]).each_value do |row| + YAML.safe_load(File.open(fname), permitted_classes: [Symbol]).each_value do |row| ignored_fields = %w[dataset_name dataset_version] e = Category.new(row.except(*ignored_fields)) e.dataset_version = version_for_dataset(row['dataset_name'], row['dataset_version']) @@ -203,7 +203,7 @@ namespace :xsd do fname = Rails.root.join('lib', 'tasks', 'xsd', 'data_dictionary_element.yml') before = DataDictionaryElement.count DataDictionaryElement.transaction do - YAML.safe_load(File.open(fname), [Symbol]).each do |row| + YAML.safe_load(File.open(fname), permitted_classes: [Symbol]).each do |row| dde = DataDictionaryElement.new(row.except('xml_type')) dde.xml_type = XmlType.find_by(name: row['xml_type']) unless row['xml_type'].nil? dde.save! @@ -238,7 +238,7 @@ namespace :xsd do # Task for updating fixtures task upp: :environment do fname = Rails.root.join('lib', 'tasks', 'xsd', 'nodes.yml') - x = YAML.safe_load(File.open(fname), [Symbol]).each do |row| + x = YAML.safe_load(File.open(fname), permitted_classes: [Symbol]).each do |row| child_up(row) end puts x.to_yaml @@ -373,7 +373,7 @@ namespace :xsd do fname = Rails.root.join('lib', 'tasks', 'xsd', 'categories.yml') before = Category.count Category.transaction do - YAML.safe_load(File.open(fname), [Symbol]).each_value do |row| + YAML.safe_load(File.open(fname), permitted_classes: [Symbol]).each_value do |row| next unless row['dataset_version'] == '4-1-1' ignored_fields = %w[dataset_name dataset_version] @@ -392,7 +392,7 @@ namespace :xsd do fname = Rails.root.join('lib', 'tasks', 'xsd', 'nodes.yml') Node.transaction do - YAML.safe_load(File.open(fname), [Symbol]).each do |row| + YAML.safe_load(File.open(fname), permitted_classes: [Symbol]).each do |row| version = row['dataset_version'] next unless version == '4-1-1' @@ -457,7 +457,7 @@ namespace :xsd do fname = Rails.root.join('lib', 'tasks', 'xsd', 'COSDv9.0.1.yml') - YAML.safe_load(File.open(fname), [Symbol]).each do |row| + YAML.safe_load(File.open(fname), permitted_classes: [Symbol]).each do |row| print "Building nodes for #{v9_0_1.semver_version}\n" node = build_node(row, v9_0_1) if row['children'].present? diff --git a/vendor/cache/date-3.1.3.gem b/vendor/cache/date-3.1.3.gem deleted file mode 100644 index 987b8e29..00000000 Binary files a/vendor/cache/date-3.1.3.gem and /dev/null differ diff --git a/vendor/cache/date-3.3.4.gem b/vendor/cache/date-3.3.4.gem new file mode 100644 index 00000000..712d2c03 Binary files /dev/null and b/vendor/cache/date-3.3.4.gem differ diff --git a/vendor/cache/ndr_dev_support-7.3.3.gem b/vendor/cache/ndr_dev_support-7.3.3.gem deleted file mode 100644 index 1601aae3..00000000 Binary files a/vendor/cache/ndr_dev_support-7.3.3.gem and /dev/null differ diff --git a/vendor/cache/ndr_dev_support-7.3.4.gem b/vendor/cache/ndr_dev_support-7.3.4.gem new file mode 100644 index 00000000..6fa2ff76 Binary files /dev/null and b/vendor/cache/ndr_dev_support-7.3.4.gem differ diff --git a/vendor/rbenv/cache/ruby-3.2.8.tar.gz b/vendor/rbenv/cache/ruby-3.3.9.tar.gz similarity index 66% rename from vendor/rbenv/cache/ruby-3.2.8.tar.gz rename to vendor/rbenv/cache/ruby-3.3.9.tar.gz index 6fdc990e..7d4bd494 100644 Binary files a/vendor/rbenv/cache/ruby-3.2.8.tar.gz and b/vendor/rbenv/cache/ruby-3.3.9.tar.gz differ diff --git a/vendor/rbenv/rbenv.tar.gz b/vendor/rbenv/rbenv.tar.gz index 1e1f6cd8..cfb20435 100644 Binary files a/vendor/rbenv/rbenv.tar.gz and b/vendor/rbenv/rbenv.tar.gz differ diff --git a/vendor/rbenv/ruby-build.tar.gz b/vendor/rbenv/ruby-build.tar.gz index db626ed4..4e148042 100644 Binary files a/vendor/rbenv/ruby-build.tar.gz and b/vendor/rbenv/ruby-build.tar.gz differ