Skip to content

Commit 25ba0a7

Browse files
authored
Restore non-XML file generation (#415)
2 parents f120fe9 + 81b0a07 commit 25ba0a7

File tree

4 files changed

+57
-17
lines changed

4 files changed

+57
-17
lines changed

app/services/language_content_processor.rb

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -25,16 +25,16 @@ def provider_files
2525
# this is needed to avoid loading all files into memory at once
2626
def language_files
2727
{
28-
all_providers: FileToUpload.new(
29-
content: ->(language) { XmlGenerator::AllProviders.new(language).perform },
30-
name: "#{language.file_storage_prefix}Server_XML.xml",
31-
path: "#{language.file_storage_prefix}CMES-Pi/assets/XML",
32-
),
33-
all_providers_recent: FileToUpload.new(
34-
content: ->(language) { XmlGenerator::AllProviders.new(language, recent: true).perform },
35-
name: "#{language.file_storage_prefix}New_Uploads_Server_XML.xml",
36-
path: "#{language.file_storage_prefix}CMES-Pi/assets/XML",
37-
),
28+
# all_providers: FileToUpload.new(
29+
# content: ->(language) { XmlGenerator::AllProviders.new(language).perform },
30+
# name: "#{language.file_storage_prefix}Server_XML.xml",
31+
# path: "#{language.file_storage_prefix}CMES-Pi/assets/XML",
32+
# ),
33+
# all_providers_recent: FileToUpload.new(
34+
# content: ->(language) { XmlGenerator::AllProviders.new(language, recent: true).perform },
35+
# name: "#{language.file_storage_prefix}New_Uploads_Server_XML.xml",
36+
# path: "#{language.file_storage_prefix}CMES-Pi/assets/XML",
37+
# ),
3838
tags: FileToUpload.new(
3939
content: ->(language) { TextGenerator::Tags.new(language).perform },
4040
name: "#{language.file_storage_prefix}tags.txt",

config/recurring.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11

22
default: &default
3-
# language_files:
4-
# command: LanguageFilesScheduler.new.perform
5-
# queue: default
6-
# schedule: "@hourly"
3+
language_files:
4+
command: LanguageFilesScheduler.new.perform
5+
queue: default
6+
schedule: "@hourly"
77
clear_solid_queue_finished_jobs:
88
command: "SolidQueue::Job.clear_finished_in_batches(sleep_between_batches: 0.3)"
99
schedule: every hour at minute 12

lib/tasks/xml.rake

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
namespace :xml do
2+
desc "Generate CME XML to a local file or stdout (no Azure). ENV: SCOPE=all_providers|single_provider LANGUAGE=<id|code|name> PROVIDER_ID=<id> DEST=<path or '-'>"
3+
task generate: :environment do
4+
require "fileutils"
5+
6+
scope = ENV.fetch("SCOPE", "all_providers")
7+
lang_param = ENV["LANGUAGE"]
8+
provider_id = ENV["PROVIDER_ID"]
9+
dest = ENV["DEST"] || "tmp/cmes.xml"
10+
11+
language = if lang_param.present?
12+
Language.find_by(id: lang_param) || Language.find_by(code: lang_param) || Language.find_by(name: lang_param)
13+
else
14+
Language.joins(:topics).distinct.first
15+
end
16+
abort "LANGUAGE not found or no languages with topics" unless language
17+
18+
service = case scope
19+
when "single_provider"
20+
abort "PROVIDER_ID required for single_provider" unless provider_id.present?
21+
provider = Provider.find(provider_id)
22+
XmlGenerator::SingleProvider.new(provider)
23+
when "all_providers"
24+
XmlGenerator::AllProviders.new(language)
25+
else
26+
abort "Unknown SCOPE: #{scope}"
27+
end
28+
29+
xml = service.perform
30+
31+
if dest == "-"
32+
puts xml
33+
else
34+
path = Rails.root.join(dest)
35+
FileUtils.mkdir_p(File.dirname(path))
36+
File.write(path, xml)
37+
puts "Wrote XML to #{path} (#{xml.bytesize} bytes)"
38+
end
39+
end
40+
end

spec/services/language_content_processor_spec.rb

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,13 @@
1515
end
1616

1717
it "processes content for every language" do
18-
files_number = language.providers.size + 9 # 2 xml files for all provides, 2 text files for tags, 5 csv files
18+
files_number = language.providers.size + 7 # 2 xml files for all provides, 2 text files for tags, 5 csv files
1919
subject.perform
2020

2121
expect(FileUploadJob).to have_received(:perform_later).exactly(files_number).times
2222

23-
expect(FileUploadJob).to have_received(:perform_later).with(language.id, "all_providers", "file")
24-
expect(FileUploadJob).to have_received(:perform_later).with(language.id, "all_providers_recent", "file")
23+
# expect(FileUploadJob).to have_received(:perform_later).with(language.id, "all_providers", "file")
24+
# expect(FileUploadJob).to have_received(:perform_later).with(language.id, "all_providers_recent", "file")
2525
expect(FileUploadJob).to have_received(:perform_later).with(language.id, "tags", "file")
2626
expect(FileUploadJob).to have_received(:perform_later).with(language.id, "tags_and_title", "file")
2727
expect(FileUploadJob).to have_received(:perform_later).with(language.id, "files", "file")

0 commit comments

Comments
 (0)