From 5258adcbf4a452052de2d87317fbf9a29d73a17c Mon Sep 17 00:00:00 2001 From: wy1 Date: Wed, 14 Aug 2024 16:00:36 +0100 Subject: [PATCH 01/14] add wip_list method to return wip file list --- lib/record_loader/application_record_loader.rb | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/lib/record_loader/application_record_loader.rb b/lib/record_loader/application_record_loader.rb index b96a6a14e4..38d0cc5617 100644 --- a/lib/record_loader/application_record_loader.rb +++ b/lib/record_loader/application_record_loader.rb @@ -9,5 +9,13 @@ class ApplicationRecordLoader < RecordLoader::Base # Uses the standard RailsAdapter # @see https://rubydoc.info/github/sanger/record_loader/RecordLoader/Adapter adapter RecordLoader::Adapter::Rails.new + + def wip_list(directory) + wip_files = [] + Find.find(directory) do |path| + files << path if path =~ /\wip\.yml$/ + end + files + end end end From cc4efbbe24b3039abccaa8ed6bc877912e5770d7 Mon Sep 17 00:00:00 2001 From: Wendy Yang Date: Wed, 21 Aug 2024 10:48:40 +0100 Subject: [PATCH 02/14] remove directory parameter in wip_list method --- lib/record_loader/application_record_loader.rb | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/lib/record_loader/application_record_loader.rb b/lib/record_loader/application_record_loader.rb index 38d0cc5617..895de35cb8 100644 --- a/lib/record_loader/application_record_loader.rb +++ b/lib/record_loader/application_record_loader.rb @@ -1,4 +1,5 @@ # frozen_string_literal: true +require 'find' # This file was automatically generated by `rails g record_loader` module RecordLoader @@ -10,12 +11,13 @@ class ApplicationRecordLoader < RecordLoader::Base # @see https://rubydoc.info/github/sanger/record_loader/RecordLoader/Adapter adapter RecordLoader::Adapter::Rails.new - def wip_list(directory) + def wip_list wip_files = [] - Find.find(directory) do |path| - files << path if path =~ /\wip\.yml$/ + wip_files_path = Rails.root.join('config','default_records') + Find.find(wip_files_path) do |path| + wip_files << path if path =~ /\wip\.yml$/ end - files + wip_files end end end From 16f4d4ed8f2dfb4162316b38ab63b373ebba4158 Mon Sep 17 00:00:00 2001 From: Wendy Yang Date: Wed, 21 Aug 2024 11:02:08 +0100 Subject: [PATCH 03/14] fix the formatting --- lib/record_loader/application_record_loader.rb | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/lib/record_loader/application_record_loader.rb b/lib/record_loader/application_record_loader.rb index 895de35cb8..a73ba5651f 100644 --- a/lib/record_loader/application_record_loader.rb +++ b/lib/record_loader/application_record_loader.rb @@ -1,5 +1,5 @@ # frozen_string_literal: true -require 'find' +require 'find' # This file was automatically generated by `rails g record_loader` module RecordLoader @@ -10,13 +10,11 @@ class ApplicationRecordLoader < RecordLoader::Base # Uses the standard RailsAdapter # @see https://rubydoc.info/github/sanger/record_loader/RecordLoader/Adapter adapter RecordLoader::Adapter::Rails.new - + def wip_list wip_files = [] - wip_files_path = Rails.root.join('config','default_records') - Find.find(wip_files_path) do |path| - wip_files << path if path =~ /\wip\.yml$/ - end + wip_files_path = Rails.root.join('config', 'default_records') + Find.find(wip_files_path) { |path| wip_files << path if path =~ /\wip\.yml$/ } wip_files end end From e6b326ff3b767678abc21f53d305ddf188ac440a Mon Sep 17 00:00:00 2001 From: Wendy Yang Date: Wed, 21 Aug 2024 14:49:57 +0100 Subject: [PATCH 04/14] fix the format --- lib/record_loader/application_record_loader.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/record_loader/application_record_loader.rb b/lib/record_loader/application_record_loader.rb index a73ba5651f..20e87ac89a 100644 --- a/lib/record_loader/application_record_loader.rb +++ b/lib/record_loader/application_record_loader.rb @@ -13,8 +13,8 @@ class ApplicationRecordLoader < RecordLoader::Base def wip_list wip_files = [] - wip_files_path = Rails.root.join('config', 'default_records') - Find.find(wip_files_path) { |path| wip_files << path if path =~ /\wip\.yml$/ } + wip_files_path = Rails.root.join("config/default_records") + Find.find(wip_files_path) { |path| wip_files << path if /\wip\.yml$/.match?(path) } wip_files end end From 401cfa541df612afc0b11034ff5ea0797baedf36 Mon Sep 17 00:00:00 2001 From: Wendy Yang Date: Wed, 21 Aug 2024 14:58:49 +0100 Subject: [PATCH 05/14] fix the format --- lib/record_loader/application_record_loader.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/record_loader/application_record_loader.rb b/lib/record_loader/application_record_loader.rb index 20e87ac89a..32e909b8f8 100644 --- a/lib/record_loader/application_record_loader.rb +++ b/lib/record_loader/application_record_loader.rb @@ -13,7 +13,7 @@ class ApplicationRecordLoader < RecordLoader::Base def wip_list wip_files = [] - wip_files_path = Rails.root.join("config/default_records") + wip_files_path = Rails.root.join('config/default_records') Find.find(wip_files_path) { |path| wip_files << path if /\wip\.yml$/.match?(path) } wip_files end From d60b6bfd8fd6948910a50c8fe46db06acf24795d Mon Sep 17 00:00:00 2001 From: Wendy Yang Date: Wed, 21 Aug 2024 15:38:00 +0100 Subject: [PATCH 06/14] add deploy_wip_pipeline environment variable --- config/environments/development.rb | 2 ++ 1 file changed, 2 insertions(+) diff --git a/config/environments/development.rb b/config/environments/development.rb index 03eb9d6529..3247fea461 100644 --- a/config/environments/development.rb +++ b/config/environments/development.rb @@ -71,6 +71,8 @@ Bullet.bullet_logger = true Bullet.rails_logger = true end + + config.deploy_wip_pipelines = true end Rack::MiniProfiler.config.position = 'right' From e8d14fcb72efadfc2a6c24b44d88179478674a8e Mon Sep 17 00:00:00 2001 From: Wendy Yang Date: Thu, 22 Aug 2024 10:25:07 +0100 Subject: [PATCH 07/14] modify the wip_list to return file base name rather than file path --- lib/record_loader/application_record_loader.rb | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/lib/record_loader/application_record_loader.rb b/lib/record_loader/application_record_loader.rb index 32e909b8f8..a6a8a03aee 100644 --- a/lib/record_loader/application_record_loader.rb +++ b/lib/record_loader/application_record_loader.rb @@ -14,7 +14,12 @@ class ApplicationRecordLoader < RecordLoader::Base def wip_list wip_files = [] wip_files_path = Rails.root.join('config/default_records') - Find.find(wip_files_path) { |path| wip_files << path if /\wip\.yml$/.match?(path) } + Find.find(wip_files_path) do |path| + if path.match?(/\wip\.yml$/) + file_name = File.basename(path, '.wip.yml') + wip_files << file_name + end + end wip_files end end From af301823bb5c79af3083fff81a4637030713caca Mon Sep 17 00:00:00 2001 From: Wendy Yang Date: Thu, 22 Aug 2024 13:25:15 +0100 Subject: [PATCH 08/14] add config wip flag option in wip_list method --- lib/record_loader/application_record_loader.rb | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/lib/record_loader/application_record_loader.rb b/lib/record_loader/application_record_loader.rb index a6a8a03aee..a2d5694233 100644 --- a/lib/record_loader/application_record_loader.rb +++ b/lib/record_loader/application_record_loader.rb @@ -12,15 +12,19 @@ class ApplicationRecordLoader < RecordLoader::Base adapter RecordLoader::Adapter::Rails.new def wip_list - wip_files = [] - wip_files_path = Rails.root.join('config/default_records') - Find.find(wip_files_path) do |path| - if path.match?(/\wip\.yml$/) - file_name = File.basename(path, '.wip.yml') - wip_files << file_name + if Rails.application.config.deploy_wip_pipelines + wip_files = [] + wip_files_path = Rails.root.join('config/default_records') + Find.find(wip_files_path) do |path| + if path.match?(/\wip\.yml$/) + file_name = File.basename(path, '.wip.yml') + wip_files << file_name + end end + wip_files + else + [] end - wip_files end end end From ffca885ed3ad55922f59bea1551313016da79a08 Mon Sep 17 00:00:00 2001 From: Wendy Yang Date: Thu, 22 Aug 2024 13:35:08 +0100 Subject: [PATCH 09/14] fix formating --- .../application_record_loader.rb | 20 +++++++++---------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/lib/record_loader/application_record_loader.rb b/lib/record_loader/application_record_loader.rb index a2d5694233..c393467176 100644 --- a/lib/record_loader/application_record_loader.rb +++ b/lib/record_loader/application_record_loader.rb @@ -12,19 +12,17 @@ class ApplicationRecordLoader < RecordLoader::Base adapter RecordLoader::Adapter::Rails.new def wip_list - if Rails.application.config.deploy_wip_pipelines - wip_files = [] - wip_files_path = Rails.root.join('config/default_records') - Find.find(wip_files_path) do |path| - if path.match?(/\wip\.yml$/) - file_name = File.basename(path, '.wip.yml') - wip_files << file_name - end + return [] unless Rails.application.config.deploy_wip_pipelines + + wip_files = [] + wip_files_path = Rails.root.join('config/default_records') + Find.find(wip_files_path) do |path| + if path.match?(/\wip\.yml$/) + file_name = File.basename(path, '.wip.yml') + wip_files << file_name end - wip_files - else - [] end + wip_files end end end From 69ce5037326c264fb8c9d5a7fab1be4657070cd4 Mon Sep 17 00:00:00 2001 From: Wendy Yang Date: Thu, 22 Aug 2024 14:05:56 +0100 Subject: [PATCH 10/14] adding to handle if flag not set --- lib/record_loader/application_record_loader.rb | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/lib/record_loader/application_record_loader.rb b/lib/record_loader/application_record_loader.rb index c393467176..cbd066a8e3 100644 --- a/lib/record_loader/application_record_loader.rb +++ b/lib/record_loader/application_record_loader.rb @@ -12,7 +12,15 @@ class ApplicationRecordLoader < RecordLoader::Base adapter RecordLoader::Adapter::Rails.new def wip_list - return [] unless Rails.application.config.deploy_wip_pipelines + deploy_wip_pipelines = + ( + if Rails.application.config.respond_to?(:deploy_wip_pipelines) + Rails.application.config.deploy_wip_pipelines + else + false + end + ) + return [] unless deploy_wip_pipelines wip_files = [] wip_files_path = Rails.root.join('config/default_records') From 22d04b43b62a430555c3f94a117cf1aaff36664b Mon Sep 17 00:00:00 2001 From: Wendy Yang Date: Thu, 22 Aug 2024 14:39:11 +0100 Subject: [PATCH 11/14] refactor wip method --- lib/record_loader/application_record_loader.rb | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/lib/record_loader/application_record_loader.rb b/lib/record_loader/application_record_loader.rb index cbd066a8e3..9d7aa2a1a0 100644 --- a/lib/record_loader/application_record_loader.rb +++ b/lib/record_loader/application_record_loader.rb @@ -12,14 +12,7 @@ class ApplicationRecordLoader < RecordLoader::Base adapter RecordLoader::Adapter::Rails.new def wip_list - deploy_wip_pipelines = - ( - if Rails.application.config.respond_to?(:deploy_wip_pipelines) - Rails.application.config.deploy_wip_pipelines - else - false - end - ) + deploy_wip_pipelines = Rails.application.config.try(:deploy_wip_pipelines) || false return [] unless deploy_wip_pipelines wip_files = [] From df8acfb0cd41a56af4bb78df1fa4dbfc3115c49e Mon Sep 17 00:00:00 2001 From: Wendy Yang Date: Fri, 23 Aug 2024 18:39:51 +0100 Subject: [PATCH 12/14] add test for wip_list method --- config/environments/development.rb | 1 + .../application_record_loader.rb | 3 +- .../application_record_loader_spec.rb | 41 +++++++++++++++++++ 3 files changed, 44 insertions(+), 1 deletion(-) create mode 100644 spec/lib/record_loader/application_record_loader_spec.rb diff --git a/config/environments/development.rb b/config/environments/development.rb index 3247fea461..d633043d05 100644 --- a/config/environments/development.rb +++ b/config/environments/development.rb @@ -72,6 +72,7 @@ Bullet.rails_logger = true end + # load WIP features flag config.deploy_wip_pipelines = true end diff --git a/lib/record_loader/application_record_loader.rb b/lib/record_loader/application_record_loader.rb index 9d7aa2a1a0..51cc250102 100644 --- a/lib/record_loader/application_record_loader.rb +++ b/lib/record_loader/application_record_loader.rb @@ -12,11 +12,12 @@ class ApplicationRecordLoader < RecordLoader::Base adapter RecordLoader::Adapter::Rails.new def wip_list + # return a list of WIP files name as features if deploy_wip_pipelines is set to true, or return empty list deploy_wip_pipelines = Rails.application.config.try(:deploy_wip_pipelines) || false return [] unless deploy_wip_pipelines wip_files = [] - wip_files_path = Rails.root.join('config/default_records') + wip_files_path = @path Find.find(wip_files_path) do |path| if path.match?(/\wip\.yml$/) file_name = File.basename(path, '.wip.yml') diff --git a/spec/lib/record_loader/application_record_loader_spec.rb b/spec/lib/record_loader/application_record_loader_spec.rb new file mode 100644 index 0000000000..8f55825505 --- /dev/null +++ b/spec/lib/record_loader/application_record_loader_spec.rb @@ -0,0 +1,41 @@ +# frozen_string_literal: true + +require 'rails_helper' +require 'record_loader/application_record_loader' + +RSpec.describe RecordLoader::ApplicationRecordLoader, :loader, type: :model do + def a_new_record_loader + described_class.new(directory: test_directory) + end + + subject(:record_loader) { a_new_record_loader } + + let(:test_directory) { Rails.root.join('spec/data/record_loader/application_record_loader') } + + context 'when deploy_wip_pipelines is false' do + before { allow(Rails.application.config).to receive(:deploy_wip_pipelines).and_return(false) } + + it 'returns an empty array' do + expect(record_loader.wip_list).to eq([]) + end + end + + context 'when deploy_wip_pipelines is true' do + before do + allow(Rails.application.config).to receive(:deploy_wip_pipelines).and_return(true) + allow(Find).to receive(:find).with(test_directory).and_yield("#{test_directory}/example.wip.yml") + end + + it 'returns a list of WIP features' do + expect(record_loader.wip_list).to eq(['example']) + end + end + + context 'when deploy_wip_pipelines is not set' do + before { allow(Rails.application.config).to receive(:deploy_wip_pipelines).and_return(nil) } + + it 'returns an empty array' do + expect(record_loader.wip_list).to eq([]) + end + end +end From 68e710e1e044d916cecb5490ccc3a5305a8644ae Mon Sep 17 00:00:00 2001 From: Wendy Yang Date: Fri, 23 Aug 2024 20:06:18 +0100 Subject: [PATCH 13/14] add test config & test file --- config/environments/test.rb | 3 ++ .../application_record_loader/example.wip.yml | 40 +++++++++++++++++++ 2 files changed, 43 insertions(+) create mode 100644 spec/data/record_loader/application_record_loader/example.wip.yml diff --git a/config/environments/test.rb b/config/environments/test.rb index 1cd73956ed..b118bfe8c2 100644 --- a/config/environments/test.rb +++ b/config/environments/test.rb @@ -50,4 +50,7 @@ # Raises error for missing translations. # config.action_view.raise_on_missing_translations = true + + # load WIP features flag + config.deploy_wip_pipelines = true end diff --git a/spec/data/record_loader/application_record_loader/example.wip.yml b/spec/data/record_loader/application_record_loader/example.wip.yml new file mode 100644 index 0000000000..e4fc108981 --- /dev/null +++ b/spec/data/record_loader/application_record_loader/example.wip.yml @@ -0,0 +1,40 @@ +# Submission templates for the aggregation and library prep parts of the scRNA Core pipeline. +--- +Limber-Htp - scRNA Core Aggregation: + submission_class_name: "LinearSubmission" + related_records: + request_type_keys: ["limber_scrna_core_aggregation"] + product_line_name: Short Read + product_catalogue_name: scRNA Core +Limber-Htp - scRNA Core Library Prep: + submission_class_name: "LinearSubmission" + related_records: + request_type_keys: ["limber_scrna_core_library_prep"] + product_line_name: Short Read + product_catalogue_name: scRNA Core +Limber-Htp - scRNA Core Library Prep - Pool: + submission_class_name: "LinearSubmission" + related_records: + request_type_keys: ["limber_scrna_core_library_prep", "limber_multiplexing"] + product_line_name: Short Read + product_catalogue_name: scRNA Core +Limber-Htp - scRNA Core Library Prep - NovaSeqX paired end sequencing: + submission_class_name: "LinearSubmission" + related_records: + request_type_keys: + ["limber_scrna_core_library_prep", "limber_multiplexing", "illumina_htp_novaseqx_paired_end_sequencing"] + product_line_name: Short Read + product_catalogue_name: scRNA Core +Limber-Htp - scRNA Core Library Prep - NovaSeq 6000 paired end sequencing: + submission_class_name: "LinearSubmission" + related_records: + request_type_keys: + ["limber_scrna_core_library_prep", "limber_multiplexing", "illumina_htp_novaseq_6000_paired_end_sequencing"] + product_line_name: Short Read + product_catalogue_name: scRNA Core +Limber-Htp - scRNA Core Library Prep - MiSeq sequencing: + submission_class_name: "LinearSubmission" + related_records: + request_type_keys: ["limber_scrna_core_library_prep", "limber_multiplexing", "illumina_b_miseq_sequencing"] + product_line_name: Short Read + product_catalogue_name: scRNA Core From 9949dec9036c6ee30dfe45053b5ec34acfef5455 Mon Sep 17 00:00:00 2001 From: Wendy Yang Date: Tue, 27 Aug 2024 16:24:45 +0100 Subject: [PATCH 14/14] simplify test file & add comments --- .../application_record_loader.rb | 2 + .../application_record_loader/example.wip.yml | 42 ++----------------- 2 files changed, 5 insertions(+), 39 deletions(-) diff --git a/lib/record_loader/application_record_loader.rb b/lib/record_loader/application_record_loader.rb index 51cc250102..961a9c07c6 100644 --- a/lib/record_loader/application_record_loader.rb +++ b/lib/record_loader/application_record_loader.rb @@ -17,6 +17,8 @@ def wip_list return [] unless deploy_wip_pipelines wip_files = [] + # @path returns 'config/default_records' directory + # see https://github.com/sanger/record_loader/blob/master/lib/record_loader/base.rb wip_files_path = @path Find.find(wip_files_path) do |path| if path.match?(/\wip\.yml$/) diff --git a/spec/data/record_loader/application_record_loader/example.wip.yml b/spec/data/record_loader/application_record_loader/example.wip.yml index e4fc108981..51074a83b0 100644 --- a/spec/data/record_loader/application_record_loader/example.wip.yml +++ b/spec/data/record_loader/application_record_loader/example.wip.yml @@ -1,40 +1,4 @@ -# Submission templates for the aggregation and library prep parts of the scRNA Core pipeline. +# Test record loader records --- -Limber-Htp - scRNA Core Aggregation: - submission_class_name: "LinearSubmission" - related_records: - request_type_keys: ["limber_scrna_core_aggregation"] - product_line_name: Short Read - product_catalogue_name: scRNA Core -Limber-Htp - scRNA Core Library Prep: - submission_class_name: "LinearSubmission" - related_records: - request_type_keys: ["limber_scrna_core_library_prep"] - product_line_name: Short Read - product_catalogue_name: scRNA Core -Limber-Htp - scRNA Core Library Prep - Pool: - submission_class_name: "LinearSubmission" - related_records: - request_type_keys: ["limber_scrna_core_library_prep", "limber_multiplexing"] - product_line_name: Short Read - product_catalogue_name: scRNA Core -Limber-Htp - scRNA Core Library Prep - NovaSeqX paired end sequencing: - submission_class_name: "LinearSubmission" - related_records: - request_type_keys: - ["limber_scrna_core_library_prep", "limber_multiplexing", "illumina_htp_novaseqx_paired_end_sequencing"] - product_line_name: Short Read - product_catalogue_name: scRNA Core -Limber-Htp - scRNA Core Library Prep - NovaSeq 6000 paired end sequencing: - submission_class_name: "LinearSubmission" - related_records: - request_type_keys: - ["limber_scrna_core_library_prep", "limber_multiplexing", "illumina_htp_novaseq_6000_paired_end_sequencing"] - product_line_name: Short Read - product_catalogue_name: scRNA Core -Limber-Htp - scRNA Core Library Prep - MiSeq sequencing: - submission_class_name: "LinearSubmission" - related_records: - request_type_keys: ["limber_scrna_core_library_prep", "limber_multiplexing", "illumina_b_miseq_sequencing"] - product_line_name: Short Read - product_catalogue_name: scRNA Core +Test Record: + test_attribute: "A Value"