Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[semver-major] drop support for Ruby before 3.2 #6183

Merged
merged 2 commits into from
Aug 25, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
207 changes: 0 additions & 207 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -137,187 +137,6 @@ jobs:
- ruby/rspec-test:
app-dir: /app/samvera/hyrax-engine

bundle:
parameters:
ruby_version:
type: string
default: 2.7.8
bundler_version:
type: string
default: 2.4.15
rails_version:
type: string
default: 6.1.7.4
executor:
name: 'samvera/ruby'
ruby_version: << parameters.ruby_version >>
resource_class: medium
environment:
RAILS_VERSION: << parameters.rails_version >>
NOKOGIRI_USE_SYSTEM_LIBRARIES: true
steps:
- samvera/cached_checkout

- run:
name: Check for a branch named 'master'
command: |
git fetch --all --quiet --prune --prune-tags
if [[ -n "$(git branch --all --list master */master)" ]]; then
echo "A branch named 'master' was found. Please remove it."
echo "$(git branch --all --list master */master)"
fi
[[ -z "$(git branch --all --list master */master)" ]]

- samvera/bundle:
ruby_version: << parameters.ruby_version >>
bundler_version: << parameters.bundler_version >>

# Run rubocop in parallel with caching
# This should get added to the orb once proven here

- restore_cache:
name: Restore rubocop cache
keys:
- v1-rubocop-ruby<< parameters.ruby_version >>-bundle{{ checksum "Gemfile.lock" }}
- v1-rubocop-ruby<< parameters.ruby_version >>
- v1

- run:
name: Run rubocop in parallel
command: bundle exec rubocop --parallel

- save_cache:
name: Save rubocop cache
key: v1-rubocop-ruby<< parameters.ruby_version >>-bundle{{ checksum "Gemfile.lock" }}
paths:
- ~/.cache/rubocop_cache

- persist_to_workspace:
root: ~/
paths:
- project/*
- project/**/*

build:
parameters:
ruby_version:
type: string
default: 2.7.8
bundler_version:
type: string
default: 2.4.15
rails_version:
type: string
default: 6.1.7.4
executor:
name: 'samvera/ruby_fcrepo_solr_redis_postgres'
ruby_version: << parameters.ruby_version >>
solr_version: 8.11-slim
resource_class: medium
environment:
RAILS_VERSION: << parameters.rails_version >>
NOKOGIRI_USE_SYSTEM_LIBRARIES: true
ENGINE_CART_RAILS_OPTIONS: --database=postgresql --skip-git --skip-bundle --skip-listen --skip-spring --skip-keeps --skip-test --skip-bootsnap --skip-javascript
DATABASE_URL: postgresql://postgres@127.0.0.1/circle_test # Hard-coded with data from CircleCI orb, related to https://github.com/samvera-labs/samvera-circleci-orb/issues/42
steps:
- attach_workspace:
at: ~/
- samvera/engine_cart_generate:
cache_key: v1-internal-test-app-{{ checksum "hyrax.gemspec" }}-{{ checksum ".regen" }}-{{ checksum ".circleci/config.yml" }}-<< parameters.rails_version >>-<< parameters.ruby_version >>
- samvera/bundle:
ruby_version: << parameters.ruby_version >>
bundler_version: << parameters.bundler_version >>
- run:
name: Generate .internal_test_app/Gemfile.lock
command: bundle lock
working_directory: .internal_test_app
- ruby/install-deps:
app-dir: .internal_test_app
- node/install-packages:
pkg-manager: yarn
app-dir: .internal_test_app
- persist_to_workspace:
root: ~/
paths:
- project/*
- project/**/*

test:
parameters:
ruby_version:
type: string
default: 2.7.8
bundler_version:
type: string
default: 2.4.15
hyrax_valkyrie:
type: string
default: "false"
executor:
name: 'samvera/ruby_fcrepo_solr_redis_postgres'
ruby_version: << parameters.ruby_version >>
solr_version: 8.11-slim
resource_class: medium+
parallelism: 10
environment:
HYRAX_VALKYRIE: << parameters.hyrax_valkyrie >>
VALKYRIE_SOLR_PORT: 8985
DATABASE_URL: postgresql://postgres@127.0.0.1/circle_test # Hard-coded with data from CircleCI orb, related to https://github.com/samvera-labs/samvera-circleci-orb/issues/42
KARMA_BROWSER: ChromeHeadlessCustom
RAILS_ROOT: .internal_test_app
SPEC_OPTS: "" # Clear output conflicts between samvera orb executor and ruby orb rspec command
steps:
- attach_workspace:
at: ~/
- run:
name: Install system dependencies
command: |
sudo apt-get update
sudo apt-get install imagemagick librsvg2-bin lsof
- browser-tools/install-chrome
- browser-tools/install-chromedriver
- run:
name: Check Chrome install
command: |
google-chrome --version
chromedriver --version
- restore_cache:
keys:
- engine-node-v1-{{ checksum "package.json" }}
# Call yarn directly for hyrax engine; node orb demands a lockfile to use caching
- run:
name: Yarn Install (engine)
command: yarn install
- save_cache:
key: engine-node-v1-{{ checksum "package.json" }}
paths:
- node_modules
- samvera/install_solr_core:
solr_config_path: .internal_test_app/solr/conf
- samvera/install_solr_core:
solr_config_path: .internal_test_app/solr/conf
core_name: hyrax-valkyrie-test
# Rerun bundler in case this is a different ruby version than bundle and build steps
- samvera/bundle:
ruby_version: << parameters.ruby_version >>
bundler_version: << parameters.bundler_version >>
# Ensure gems needed by the test app are installed
- ruby/install-deps:
app-dir: .internal_test_app
- node/install-packages:
pkg-manager: yarn
app-dir: .internal_test_app
- run:
command: bundle exec rake db:migrate
working_directory: .internal_test_app
- ruby/rspec-test
- store_artifacts:
path: Gemfile.lock
destination: engine-gemfile-lock
- store_artifacts:
path: .internal_test_app/Gemfile.lock
destination: webapp-gemfile-lock

workflows:
version: 2
dassie:
Expand All @@ -339,29 +158,3 @@ workflows:
hyrax_valkyrie: "1"
requires:
- dassie-build

ruby2-7:
jobs:
- bundle:
ruby_version: "2.7.8"
rails_version: "6.1.7.4"
bundler_version: "2.4.15"
- build:
ruby_version: "2.7.8"
rails_version: "6.1.7.4"
bundler_version: "2.4.15"
requires:
- bundle
- test:
name: "ruby2-7"
ruby_version: "2.7.8"
bundler_version: "2.4.15"
requires:
- build
- test:
name: "ruby2-7-valkyrie"
ruby_version: "2.7.8"
bundler_version: "2.4.15"
hyrax_valkyrie: "true"
requires:
- build
17 changes: 3 additions & 14 deletions .dassie/db/schema.rb
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,15 @@
# of editing this file, please use the migrations feature of Active Record to
# incrementally modify your database, and then regenerate this schema definition.
#
# This file is the source Rails uses to define your schema when running `rails
# db:schema:load`. When creating a new database, `rails db:schema:load` tends to
# This file is the source Rails uses to define your schema when running `bin/rails
# db:schema:load`. When creating a new database, `bin/rails db:schema:load` tends to
# be faster and is potentially less error prone than running all of your
# migrations from scratch. Old migrations may fail to apply correctly if those
# migrations use external dependencies or application code.
#
# It's strongly recommended that you check this file into your version control system.

ActiveRecord::Schema.define(version: 2023_07_25_222727) do
ActiveRecord::Schema.define(version: 2021_11_30_181150) do

# These are extensions that must be enabled in order to support this database
enable_extension "plpgsql"
Expand Down Expand Up @@ -140,17 +140,6 @@
t.index ["machine_id"], name: "index_hyrax_collection_types_on_machine_id", unique: true
end

create_table "hyrax_counter_metrics", force: :cascade do |t|
t.string "worktype"
t.string "resource_type"
t.integer "work_id"
t.date "date"
t.integer "total_item_investigations"
t.integer "total_item_requests"
t.datetime "created_at", precision: 6, null: false
t.datetime "updated_at", precision: 6, null: false
end

create_table "hyrax_default_administrative_set", force: :cascade do |t|
t.string "default_admin_set_id", null: false
t.datetime "created_at", null: false
Expand Down
5 changes: 1 addition & 4 deletions app/services/hyrax/visibility_intention.rb
Original file line number Diff line number Diff line change
Expand Up @@ -86,10 +86,7 @@ def a_valid_date?(date)
return true if date.is_a?(Date)
return true if date.is_a?(Time)
Date.parse(date)
# In Ruby 2.7.x, Date::Error descends from ArgumentError; Once
# we stop supporting pre-2.7, we can switch this to the more
# narrow Date::Error
rescue ArgumentError
rescue Date::Error
false
end
end
Expand Down
2 changes: 1 addition & 1 deletion app/services/hyrax/workflow/grant_edit_to_depositor.rb
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ def self.call(target:, **)
return true unless target.try(:depositor)

model = target.try(:model) || target # get the model if target is a ChangeSet
model.edit_users = model.edit_users.to_a + Array.wrap(target.depositor) # += works in Ruby 2.6+
model.edit_users += Array.wrap(target.depositor)
model.try(:permission_manager)&.acl&.save

# If there are a lot of members, granting access to each could take a
Expand Down
2 changes: 1 addition & 1 deletion app/services/hyrax/workflow/grant_read_to_depositor.rb
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ def self.call(target:, **)
return true unless target.try(:depositor)

model = target.try(:model) || target # get the model if target is a ChangeSet
model.read_users = model.read_users.to_a + Array.wrap(target.depositor) # += works in Ruby 2.6+
model.read_users += Array.wrap(target.depositor)
model.try(:permission_manager)&.acl&.save

# If there are a lot of members, granting access to each could take a
Expand Down
2 changes: 1 addition & 1 deletion documentation/developing-your-hyrax-based-app.md
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,7 @@ Note here that the following commands assume you're setting up Hyrax in a develo

First, you'll need a working Ruby installation. You can install this via your operating system's package manager -- you are likely to get farther with OSX, Linux, or UNIX than Windows but your mileage may vary -- but we recommend using a Ruby version manager such as [RVM](https://rvm.io/) or [rbenv](https://github.com/sstephenson/rbenv).

Hyrax supports Ruby 2.5, 2.6, and 2.7. When starting a new project, we recommend using the latest Ruby 2.7 version.
Hyrax supports Ruby 3.2. When starting a new project, we recommend using the latest Ruby 3.2 version.

## Redis

Expand Down
2 changes: 1 addition & 1 deletion hyrax.gemspec
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ SUMMARY
spec.license = 'Apache-2.0'
spec.metadata = { "rubygems_mfa_required" => "true" }

spec.required_ruby_version = '>= 2.7'
spec.required_ruby_version = '>= 3.2'

# NOTE: rails does not follow sem-ver conventions, it's
# minor version releases can include breaking changes; see
Expand Down