Skip to content

Commit 349c9f9

Browse files
Merge pull request #64 from brettshollenberger/aws-specs
rc99
2 parents 036bb37 + 332596d commit 349c9f9

File tree

7 files changed

+60
-9
lines changed

7 files changed

+60
-9
lines changed

.ruby-gemset

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
easy_ml

Gemfile.lock

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
PATH
22
remote: .
33
specs:
4-
easy_ml (0.2.0.pre.rc98)
4+
easy_ml (0.2.0.pre.rc99)
55
activerecord
66
activerecord-import (~> 1.8.1)
77
activesupport

app/models/easy_ml/cleaner.rb

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,6 @@ def clean
2929
end
3030
end
3131

32-
private
33-
3432
def files_to_keep_for_dir(dir)
3533
files_to_keep.map(&:to_s).select { |f| f.start_with?(dir.to_s) }
3634
end
@@ -55,24 +53,28 @@ def active_models
5553
end
5654
end
5755

56+
def test_mode?
57+
Rails.env.test?
58+
end
59+
5860
def model_files_to_keep
59-
if Rails.env.test?
61+
if test_mode?
6062
[]
6163
else
6264
active_models.map(&:model_file).compact.map(&:full_path).uniq
6365
end
6466
end
6567

6668
def dataset_files_to_keep
67-
if Rails.env.test?
69+
if test_mode?
6870
[]
6971
else
70-
EasyML::Dataset.all.flat_map(&:files).uniq
72+
EasyML::Dataset.all.flat_map(&:files).uniq + active_models.map(&:dataset).flat_map(&:files).uniq
7173
end
7274
end
7375

7476
def datasource_files_to_keep
75-
if Rails.env.test?
77+
if test_mode?
7678
Dir.glob(EasyML::Engine.root_dir.glob("datasources/**/*.{csv,parquet}")).uniq
7779
else
7880
EasyML::Datasource.all.flat_map(&:files).uniq

app/models/easy_ml/model.rb

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -559,7 +559,6 @@ def actually_deploy
559559
dataset.upload_remote_files
560560
model_snapshot = snapshot
561561

562-
Thread.current[:deploying] = true
563562
# Prepare the model to be retrained (reset values so they don't conflict with our snapshotted version)
564563
bump_version(force: true)
565564
dataset.bump_versions(version)

easy_ml-0.2.0.pre.rc99.gem

932 KB
Binary file not shown.

lib/easy_ml/version.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# frozen_string_literal: true
22

33
module EasyML
4-
VERSION = "0.2.0-rc98"
4+
VERSION = "0.2.0-rc99"
55

66
module Version
77
end

spec/app/models/easy_ml/deploy_spec.rb

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -236,6 +236,55 @@ def relative_dir(dir)
236236
Timecop.return
237237
end
238238

239+
it "does not clean up active datasets/models after deploy" do
240+
@t1 = EasyML::Support::UTC.parse("2025-01-01").beginning_of_day
241+
Timecop.freeze(@t1)
242+
243+
mock_s3_upload
244+
model.save
245+
model.unlock!
246+
247+
@t2 = EasyML::Support::UTC.parse("2025-01-02").beginning_of_day
248+
Timecop.freeze(@t2)
249+
250+
model.train(async: false)
251+
model.deploy(async: false)
252+
model_v1 = model.current_version
253+
dataset_v1 = model_v1.dataset
254+
255+
model.dataset.columns.where(name: "Age").update_all(hidden: true)
256+
model.dataset.refresh
257+
258+
@t3 = EasyML::Support::UTC.parse("2025-01-03").beginning_of_day
259+
Timecop.freeze(@t3)
260+
261+
model.train(async: false)
262+
model.deploy(async: false)
263+
model_v2 = model.current_version
264+
dataset_v2 = model_v2.dataset
265+
266+
cleaner = EasyML::Cleaner.new
267+
allow(cleaner).to receive(:test_mode?).and_return(false)
268+
269+
expect(cleaner.active_models).to include(model_v2)
270+
expect(cleaner.active_models).to include(model)
271+
expect(cleaner.active_models).to_not include(model_v1)
272+
273+
expect(cleaner.model_files_to_keep).to include(model_v2.model_file.full_path)
274+
expect(cleaner.model_files_to_keep).to include(model.model_file.full_path)
275+
expect(cleaner.model_files_to_keep).to_not include(model_v1.model_file.full_path)
276+
277+
dataset_v2.files.each do |file|
278+
expect(cleaner.dataset_files_to_keep).to include(file)
279+
end
280+
dataset.files.each do |file|
281+
expect(cleaner.dataset_files_to_keep).to include(file)
282+
end
283+
dataset_v1.files.each do |file|
284+
expect(cleaner.dataset_files_to_keep).to_not include(file)
285+
end
286+
end
287+
239288
it "uses deployed version for prediction" do
240289
mock_s3_upload
241290
@time = EasyML::Support::UTC.now

0 commit comments

Comments
 (0)