active_encode 0.5.0 → 0.8.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (89) hide show
  1. checksums.yaml +4 -4
  2. data/.circleci/config.yml +80 -0
  3. data/.rubocop.yml +9 -70
  4. data/.rubocop_todo.yml +68 -0
  5. data/Gemfile +5 -4
  6. data/README.md +69 -0
  7. data/active_encode.gemspec +12 -3
  8. data/app/controllers/active_encode/encode_record_controller.rb +1 -0
  9. data/app/jobs/active_encode/polling_job.rb +1 -1
  10. data/app/models/active_encode/encode_record.rb +1 -0
  11. data/db/migrate/20180822021048_create_active_encode_encode_records.rb +1 -0
  12. data/db/migrate/20190702153755_add_create_options_to_active_encode_encode_records.rb +6 -0
  13. data/db/migrate/20190712174821_add_progress_to_active_encode_encode_records.rb +6 -0
  14. data/lib/active_encode.rb +1 -0
  15. data/lib/active_encode/base.rb +2 -2
  16. data/lib/active_encode/callbacks.rb +1 -0
  17. data/lib/active_encode/core.rb +4 -3
  18. data/lib/active_encode/engine.rb +1 -0
  19. data/lib/active_encode/engine_adapter.rb +1 -0
  20. data/lib/active_encode/engine_adapters.rb +4 -1
  21. data/lib/active_encode/engine_adapters/elastic_transcoder_adapter.rb +31 -29
  22. data/lib/active_encode/engine_adapters/ffmpeg_adapter.rb +138 -87
  23. data/lib/active_encode/engine_adapters/matterhorn_adapter.rb +5 -4
  24. data/lib/active_encode/engine_adapters/media_convert_adapter.rb +399 -0
  25. data/lib/active_encode/engine_adapters/media_convert_output.rb +104 -0
  26. data/lib/active_encode/engine_adapters/pass_through_adapter.rb +239 -0
  27. data/lib/active_encode/engine_adapters/test_adapter.rb +5 -4
  28. data/lib/active_encode/engine_adapters/zencoder_adapter.rb +3 -2
  29. data/lib/active_encode/errors.rb +6 -0
  30. data/lib/active_encode/global_id.rb +2 -1
  31. data/lib/active_encode/input.rb +3 -2
  32. data/lib/active_encode/output.rb +3 -2
  33. data/lib/active_encode/persistence.rb +11 -5
  34. data/lib/active_encode/polling.rb +3 -2
  35. data/lib/active_encode/spec/shared_specs.rb +2 -0
  36. data/{spec/shared_specs/engine_adapter_specs.rb → lib/active_encode/spec/shared_specs/engine_adapter.rb} +37 -38
  37. data/lib/active_encode/status.rb +1 -0
  38. data/lib/active_encode/technical_metadata.rb +3 -2
  39. data/lib/active_encode/version.rb +2 -1
  40. data/lib/file_locator.rb +8 -9
  41. data/spec/controllers/encode_record_controller_spec.rb +4 -3
  42. data/spec/fixtures/ffmpeg/cancelled-id/cancelled +0 -0
  43. data/spec/fixtures/file with space.low.mp4 +0 -0
  44. data/spec/fixtures/file with space.mp4 +0 -0
  45. data/spec/fixtures/fireworks.low.mp4 +0 -0
  46. data/spec/fixtures/media_convert/endpoints.json +1 -0
  47. data/spec/fixtures/media_convert/job_canceled.json +412 -0
  48. data/spec/fixtures/media_convert/job_canceling.json +1 -0
  49. data/spec/fixtures/media_convert/job_completed.json +359 -0
  50. data/spec/fixtures/media_convert/job_completed_detail.json +1 -0
  51. data/spec/fixtures/media_convert/job_completed_detail_query.json +1 -0
  52. data/spec/fixtures/media_convert/job_completed_empty_detail.json +1 -0
  53. data/spec/fixtures/media_convert/job_created.json +408 -0
  54. data/spec/fixtures/media_convert/job_failed.json +406 -0
  55. data/spec/fixtures/media_convert/job_progressing.json +414 -0
  56. data/spec/fixtures/pass_through/cancelled-id/cancelled +0 -0
  57. data/spec/fixtures/pass_through/cancelled-id/input_metadata +90 -0
  58. data/spec/fixtures/pass_through/completed-id/completed +0 -0
  59. data/spec/fixtures/pass_through/completed-id/input_metadata +102 -0
  60. data/spec/fixtures/pass_through/completed-id/output_metadata-high +90 -0
  61. data/spec/fixtures/pass_through/completed-id/output_metadata-low +90 -0
  62. data/spec/fixtures/pass_through/completed-id/video-high.mp4 +0 -0
  63. data/spec/fixtures/pass_through/completed-id/video-low.mp4 +0 -0
  64. data/spec/fixtures/pass_through/failed-id/error.log +1 -0
  65. data/spec/fixtures/pass_through/failed-id/input_metadata +90 -0
  66. data/spec/fixtures/pass_through/running-id/input_metadata +90 -0
  67. data/spec/integration/elastic_transcoder_adapter_spec.rb +30 -30
  68. data/spec/integration/ffmpeg_adapter_spec.rb +93 -25
  69. data/spec/integration/matterhorn_adapter_spec.rb +45 -44
  70. data/spec/integration/media_convert_adapter_spec.rb +152 -0
  71. data/spec/integration/pass_through_adapter_spec.rb +151 -0
  72. data/spec/integration/zencoder_adapter_spec.rb +210 -209
  73. data/spec/rails_helper.rb +1 -0
  74. data/spec/routing/encode_record_controller_routing_spec.rb +1 -0
  75. data/spec/spec_helper.rb +2 -2
  76. data/spec/test_app_templates/lib/generators/test_app_generator.rb +13 -12
  77. data/spec/units/callbacks_spec.rb +3 -2
  78. data/spec/units/core_spec.rb +26 -25
  79. data/spec/units/engine_adapter_spec.rb +1 -0
  80. data/spec/units/file_locator_spec.rb +20 -19
  81. data/spec/units/global_id_spec.rb +12 -11
  82. data/spec/units/input_spec.rb +8 -5
  83. data/spec/units/output_spec.rb +8 -5
  84. data/spec/units/persistence_spec.rb +15 -11
  85. data/spec/units/polling_job_spec.rb +7 -6
  86. data/spec/units/polling_spec.rb +1 -0
  87. data/spec/units/status_spec.rb +3 -3
  88. metadata +158 -14
  89. data/.travis.yml +0 -19
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a4a97d45ac966ff1988311fd6787fde4bc9b40850fb83ddd78aaa79ef495a885
4
- data.tar.gz: f66be6fc89de6e14cb192cc55f6d467a211598804511f8aca981e3d441dd9493
3
+ metadata.gz: 5347f6f8d85a2181c8a2a8961edfaea95c4e29606ef02b13eaa44145e322bfb2
4
+ data.tar.gz: '05810638aea1f82ae53098c06099990e07ee1bc7c0c513d7088e90ab79b7f8b8'
5
5
  SHA512:
6
- metadata.gz: 360d90909956f64d5e499e1260128a85ac498891cdc4eb448e9ce53f5e4cc02372bec4df79143129202963fab95d8e4fc6c79f83335346d82b2fa2a20bf4d4df
7
- data.tar.gz: 76bf91cce817790e2b9775e83df44208812f024e353524cccbfc470525b083c2b172c6576af8f8711896b227e5fab438feb97c3da4b9849c1b378451ebfb62a8
6
+ metadata.gz: 7e4447428944fb5a156ed73d13f5b6a9480b237fc6021ddcbee3d7975bb7d390793a3796fe41cd6b2f2f55486d148aac157850168ea215e34fc5debbb536cd41
7
+ data.tar.gz: 63911ec850c0648e57d3b180b629464e26ee7ffe623f0f787cd2ee79b69ca1af5e06d0e7569a5e975a6d6540b325f44410d2830aadf1f309374bb779101990ef
@@ -0,0 +1,80 @@
1
+ version: 2.1
2
+ orbs:
3
+ samvera: samvera/circleci-orb@0.3.2
4
+ jobs:
5
+ bundle_and_test:
6
+ parameters:
7
+ ruby_version:
8
+ type: string
9
+ default: 2.6.3
10
+ rails_version:
11
+ type: string
12
+ default: 5.2.3
13
+ bundler_version:
14
+ type: string
15
+ default: 2.0.2
16
+ ffmpeg_version:
17
+ type: string
18
+ default: 4.1.4
19
+ executor:
20
+ name: 'samvera/ruby'
21
+ ruby_version: << parameters.ruby_version >>
22
+ environment:
23
+ ENGINE_CART_RAILS_OPTIONS: --skip-git --skip-bundle --skip-listen --skip-spring --skip-yarn --skip-keeps --skip-coffee --skip-puma --skip-test
24
+ RAILS_VERSION: << parameters.rails_version >>
25
+ FFMPEG_PATH: /tmp/ffmpeg
26
+ working_directory: ~/project
27
+ steps:
28
+ - run:
29
+ command: |
30
+ sudo apt-get install libmms0
31
+ sudo wget -P /tmp/ https://mediaarea.net/download/binary/libzen0/0.4.37/libzen0v5_0.4.37-1_amd64.Debian_9.0.deb
32
+ sudo wget -P /tmp/ https://mediaarea.net/download/binary/libmediainfo0/19.04/libmediainfo0v5_19.04-1_amd64.Debian_9.0.deb
33
+ sudo wget -P /tmp/ https://mediaarea.net/download/binary/mediainfo/19.04/mediainfo_19.04-1_amd64.Debian_9.0.deb
34
+ sudo dpkg -i /tmp/libzen0v5_0.4.37-1_amd64.Debian_9.0.deb /tmp/libmediainfo0v5_19.04-1_amd64.Debian_9.0.deb /tmp/mediainfo_19.04-1_amd64.Debian_9.0.deb
35
+
36
+ - restore_cache:
37
+ keys:
38
+ - v1-ffmpeg-<< parameters.ffmpeg_version >>
39
+
40
+ - run: curl https://www.johnvansickle.com/ffmpeg/old-releases/ffmpeg-<< parameters.ffmpeg_version >>-amd64-static.tar.xz | tar xJ -C /tmp/ --strip-components=1
41
+
42
+ - save_cache:
43
+ key: v1-ffmpeg-<< parameters.ffmpeg_version >>`
44
+ paths:
45
+ - /tmp/ffmpeg
46
+
47
+ - samvera/cached_checkout
48
+
49
+ - samvera/bundle:
50
+ ruby_version: << parameters.ruby_version >>
51
+ bundler_version: << parameters.bundler_version >>
52
+
53
+ - samvera/engine_cart_generate:
54
+ cache_key: v2-internal-test-app-{{ checksum "active_encode.gemspec" }}-{{ checksum "spec/test_app_templates/lib/generators/test_app_generator.rb" }}-<< parameters.rails_version >>-<< parameters.ruby_version >>
55
+
56
+ - samvera/bundle:
57
+ ruby_version: << parameters.ruby_version >>
58
+ bundler_version: << parameters.bundler_version >>
59
+
60
+ - samvera/rubocop
61
+
62
+ - samvera/parallel_rspec
63
+
64
+ workflows:
65
+ ci:
66
+ jobs:
67
+ - bundle_and_test:
68
+ name: "ruby2-6_rails5-2"
69
+ ruby_version: "2.6.3"
70
+ - bundle_and_test:
71
+ name: "ruby2-5_rails5-2"
72
+ ruby_version: "2.5.5"
73
+ - bundle_and_test:
74
+ name: "ruby2-6_rails5-1"
75
+ ruby_version: "2.6.3"
76
+ rails_version: "5.1.7"
77
+ - bundle_and_test:
78
+ name: "ruby2-5_rails5-1"
79
+ ruby_version: "2.5.5"
80
+ rails_version: "5.1.7"
data/.rubocop.yml CHANGED
@@ -1,75 +1,14 @@
1
- require: rubocop-rspec
1
+ inherit_gem:
2
+ bixby: bixby_default.yml
3
+
4
+ inherit_from: .rubocop_todo.yml
5
+
2
6
 
3
7
  AllCops:
8
+ TargetRubyVersion: 2.4
4
9
  DisplayCopNames: true
5
- Include:
6
- - '**/Rakefile'
7
10
  Exclude:
8
- - 'spec/**/*'
11
+ - 'active_encode.gemspec'
9
12
  - 'vendor/**/*'
10
-
11
- Rails:
12
- Enabled: True
13
-
14
- Metrics/LineLength:
15
- Enabled: false
16
-
17
- Metrics/AbcSize:
18
- Enabled: false
19
-
20
- Metrics/MethodLength:
21
- Exclude:
22
- - 'lib/active_encode/engine_adapters/*'
23
-
24
- Metrics/ClassLength:
25
- Exclude:
26
- - 'lib/active_encode/engine_adapters/*'
27
-
28
- Metrics/CyclomaticComplexity:
29
- Exclude:
30
- - 'lib/active_encode/engine_adapters/*'
31
-
32
- Style/IndentationConsistency:
33
- EnforcedStyle: rails
34
-
35
- Style/CollectionMethods:
36
- PreferredMethods:
37
- collect: 'map'
38
- collect!: 'map!'
39
- inject: 'reduce'
40
- detect: 'find'
41
- find_all: 'select'
42
-
43
- Style/FileName: # https://github.com/bbatsov/rubocop/issues/2973
44
- Exclude:
45
- - 'Gemfile'
46
-
47
- Style/WordArray:
48
- Enabled: false
49
-
50
- Style/RegexpLiteral:
51
- Enabled: false
52
-
53
- Style/StringLiterals:
54
- Enabled: false
55
-
56
- Style/ClassAndModuleChildren:
57
- Enabled: false
58
-
59
- Style/Documentation:
60
- Enabled: false
61
-
62
- RSpec/ExampleWording:
63
- CustomTransform:
64
- be: is
65
- have: has
66
- not: does not
67
- NOT: does NOT
68
- IgnoredWords:
69
- - only
70
-
71
- RSpec/FilePath:
72
- Enabled: false
73
-
74
- RSpec/InstanceVariable:
75
- Enabled: false
13
+ Include:
14
+ - '**/Rakefile'
data/.rubocop_todo.yml ADDED
@@ -0,0 +1,68 @@
1
+ Bundler/DuplicatedGem:
2
+ Enabled: false
3
+
4
+ Metrics/AbcSize:
5
+ Exclude:
6
+ - 'lib/active_encode/engine_adapters/*'
7
+
8
+ Metrics/BlockLength:
9
+ Exclude:
10
+ - 'lib/active_encode/spec/shared_specs/*'
11
+ - 'spec/**/*'
12
+
13
+ Metrics/BlockNesting:
14
+ Exclude:
15
+ - 'lib/file_locator.rb'
16
+
17
+ Metrics/ClassLength:
18
+ Exclude:
19
+ - 'lib/active_encode/engine_adapters/*'
20
+
21
+ Metrics/CyclomaticComplexity:
22
+ Exclude:
23
+ - 'lib/active_encode/engine_adapters/ffmpeg_adapter.rb'
24
+ - 'lib/active_encode/engine_adapters/zencoder_adapter.rb'
25
+
26
+ Metrics/LineLength:
27
+ Exclude:
28
+ - 'lib/active_encode/engine_adapters/matterhorn_adapter.rb'
29
+ - 'spec/**/*'
30
+
31
+ Metrics/MethodLength:
32
+ Exclude:
33
+ - 'lib/active_encode/engine_adapters/*'
34
+ - 'lib/file_locator.rb'
35
+
36
+ Metrics/PerceivedComplexity:
37
+ Exclude:
38
+ - 'lib/active_encode/engine_adapters/ffmpeg_adapter.rb'
39
+ - 'lib/file_locator.rb'
40
+
41
+ RSpec/AnyInstance:
42
+ Exclude:
43
+ - 'spec/integration/ffmpeg_adapter_spec.rb'
44
+ - 'spec/integration/pass_through_adapter_spec.rb'
45
+
46
+ RSpec/ExampleLength:
47
+ Enabled: false
48
+
49
+ RSpec/InstanceVariable:
50
+ Exclude:
51
+ - 'spec/integration/ffmpeg_adapter_spec.rb'
52
+ - 'spec/integration/pass_through_adapter_spec.rb'
53
+
54
+ RSpec/MessageSpies:
55
+ Exclude:
56
+ - 'spec/integration/matterhorn_adapter_spec.rb'
57
+ - 'spec/integration/ffmpeg_adapter_spec.rb'
58
+
59
+ RSpec/NamedSubject:
60
+ Enabled: false
61
+
62
+ RSpec/VerifiedDoubles:
63
+ Enabled: false
64
+
65
+ Style/GuardClause:
66
+ Exclude:
67
+ - 'lib/active_encode/engine_adapters/pass_through_adapter.rb'
68
+ - 'lib/file_locator.rb'
data/Gemfile CHANGED
@@ -1,12 +1,13 @@
1
+ # frozen_string_literal: true
1
2
  source 'https://rubygems.org'
2
3
 
3
4
  # Specify your gem's dependencies in hydra-transcoder.gemspec
4
5
  gemspec
5
6
 
6
- gem 'aws-sdk'
7
+ gem 'addressable'
8
+ gem 'aws-sdk-elastictranscoder'
9
+ gem 'aws-sdk-s3'
7
10
  gem 'byebug'
8
- gem 'rubocop', require: false
9
- gem 'rubocop-rspec', require: false
10
11
  gem 'rubyhorn', git: "https://github.com/avalonmediasystem/rubyhorn.git"
11
12
  gem 'shingoncoder'
12
13
  gem 'zencoder'
@@ -37,9 +38,9 @@ else
37
38
 
38
39
  case ENV['RAILS_VERSION']
39
40
  when /^4.2/
41
+ gem 'coffee-rails', '~> 4.1.0'
40
42
  gem 'responders', '~> 2.0'
41
43
  gem 'sass-rails', '>= 5.0'
42
- gem 'coffee-rails', '~> 4.1.0'
43
44
  when /^4.[01]/
44
45
  gem 'sass-rails', '< 5.0'
45
46
  end
data/README.md CHANGED
@@ -124,6 +124,75 @@ end
124
124
 
125
125
  Engine adapters are shims between ActiveEncode and the back end encoding service. You can add an additional engine by creating an engine adapter class that implements `:create`, `:find`, and `:cancel` and passes the shared specs.
126
126
 
127
+ For example:
128
+ ```ruby
129
+ # In your application at:
130
+ # lib/active_encode/engine_adapters/my_custom_adapter.rb
131
+ module ActiveEncode
132
+ module EngineAdapters
133
+ class MyCustomAdapter
134
+ def create(input_url, options = {})
135
+ # Start a new encoding job. This may be an external service, or a
136
+ # locally queued job.
137
+
138
+ # Return an instance ActiveEncode::Base (or subclass) that represents
139
+ # the encoding job that was just started.
140
+ end
141
+
142
+ def find(id, opts = {})
143
+ # Find the encoding job for the given parameters.
144
+
145
+ # Return an instance of ActiveEncode::Base (or subclass) that represents
146
+ # the found encoding job.
147
+ end
148
+
149
+ def cancel(id)
150
+ # Cancel the encoding job for the given id.
151
+
152
+ # Return an instance of ActiveEncode::Base (or subclass) that represents
153
+ # the canceled job.
154
+ end
155
+ end
156
+ end
157
+ end
158
+ ```
159
+ Then, use the shared specs...
160
+ ```ruby
161
+ # In your application at...
162
+ # spec/lib/active_encode/engine_adapters/my_custom_adapter_spec.rb
163
+ require 'spec_helper'
164
+ require 'active_encode/spec/shared_specs'
165
+ RSpec.describe MyCustomAdapter do
166
+ let(:created_job) {
167
+ # an instance of ActiveEncode::Base represented a newly created encode job
168
+ }
169
+ let(:running_job) {
170
+ # an instance of ActiveEncode::Base represented a running encode job
171
+ }
172
+ let(:canceled_job) {
173
+ # an instance of ActiveEncode::Base represented a canceled encode job
174
+ }
175
+ let(:completed_job) {
176
+ # an instance of ActiveEncode::Base represented a completed encode job
177
+ }
178
+ let(:failed_job) {
179
+ # an instance of ActiveEncode::Base represented a failed encode job
180
+ }
181
+ let(:completed_tech_metadata) {
182
+ # a hash representing completed technical metadata
183
+ }
184
+ let(:completed_output) {
185
+ # data representing completed output
186
+ }
187
+ let(:failed_tech_metadata) {
188
+ # a hash representing failed technical metadata
189
+ }
190
+
191
+ # Run the shared specs.
192
+ it_behaves_like 'an ActiveEncode::EngineAdapter'
193
+ end
194
+ ```
195
+
127
196
  # Acknowledgments
128
197
 
129
198
  This software has been developed by and is brought to you by the Samvera community. Learn more at the
@@ -1,4 +1,5 @@
1
1
  # coding: utf-8
2
+ # frozen_string_literal: true
2
3
 
3
4
  lib = File.expand_path('../lib', __FILE__)
4
5
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
@@ -10,7 +11,7 @@ Gem::Specification.new do |spec|
10
11
  spec.authors = ["Michael Klein, Chris Colvard, Phuong Dinh"]
11
12
  spec.email = ["mbklein@gmail.com, chris.colvard@gmail.com, phuongdh@gmail.com"]
12
13
  spec.summary = 'Declare encode job classes that can be run by a variety of encoding services'
13
- spec.description = 'This gem serves as the basis for the interface between a Ruby (Rails) application and a provider of transcoding services such as Opencast Matterhorn, Zencoder, and Amazon Elastic Transcoder.'
14
+ spec.description = 'This gem provides an interface to transcoding services such as Ffmpeg, Amazon Elastic Transcoder, or Zencoder.'
14
15
  spec.homepage = "https://github.com/samvera-labs/active_encode"
15
16
  spec.license = "Apache-2.0"
16
17
 
@@ -21,13 +22,21 @@ Gem::Specification.new do |spec|
21
22
 
22
23
  spec.add_dependency "rails"
23
24
 
24
- spec.add_development_dependency "aws-sdk"
25
+ spec.add_development_dependency "aws-sdk-cloudwatchevents"
26
+ spec.add_development_dependency "aws-sdk-cloudwatchlogs"
27
+ spec.add_development_dependency "aws-sdk-elastictranscoder"
28
+ spec.add_development_dependency "aws-sdk-mediaconvert"
29
+ spec.add_development_dependency "aws-sdk-s3"
30
+ spec.add_development_dependency "bixby", '~> 1.0.0'
25
31
  spec.add_development_dependency "bundler"
26
32
  spec.add_development_dependency "coveralls"
27
33
  spec.add_development_dependency "database_cleaner"
28
34
  spec.add_development_dependency "engine_cart", "~> 2.2"
29
35
  spec.add_development_dependency "rake"
30
36
  spec.add_development_dependency "rspec"
31
- spec.add_development_dependency "rspec-its"
37
+ spec.add_development_dependency 'rspec_junit_formatter'
32
38
  spec.add_development_dependency "rspec-rails"
39
+
40
+ # Pin sprockets to < 4 so it works with ruby 2.5+
41
+ spec.add_dependency 'sprockets', '< 4'
33
42
  end
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module ActiveEncode
2
3
  class EncodeRecordController < ActionController::Base
3
4
  rescue_from ActiveRecord::RecordNotFound do |e|
@@ -1,6 +1,6 @@
1
+ # frozen_string_literal: true
1
2
  module ActiveEncode
2
3
  class PollingJob < ActiveJob::Base
3
-
4
4
  def perform(encode)
5
5
  encode.run_callbacks(:status_update) { encode }
6
6
  case encode.state
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module ActiveEncode
2
3
  class EncodeRecord < ActiveRecord::Base
3
4
  # sql id, globalid, state, adapter, input filename/job title, timestamps
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  class CreateActiveEncodeEncodeRecords < ActiveRecord::Migration[5.0]
2
3
  def change
3
4
  create_table :active_encode_encode_records do |t|
@@ -0,0 +1,6 @@
1
+ # frozen_string_literal: true
2
+ class AddCreateOptionsToActiveEncodeEncodeRecords < ActiveRecord::Migration[5.0]
3
+ def change
4
+ add_column :active_encode_encode_records, :create_options, :text
5
+ end
6
+ end
@@ -0,0 +1,6 @@
1
+ # frozen_string_literal: true
2
+ class AddProgressToActiveEncodeEncodeRecords < ActiveRecord::Migration[5.1]
3
+ def change
4
+ add_column :active_encode_encode_records, :progress, :float
5
+ end
6
+ end
data/lib/active_encode.rb CHANGED
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  require 'active_encode/version'
2
3
  require 'active_encode/base'
3
4
  require 'active_encode/engine'
@@ -1,5 +1,7 @@
1
+ # frozen_string_literal: true
1
2
  require 'active_encode/core'
2
3
  require 'active_encode/engine_adapter'
4
+ require 'active_encode/errors'
3
5
  require 'active_encode/status'
4
6
  require 'active_encode/technical_metadata'
5
7
  require 'active_encode/input'
@@ -17,6 +19,4 @@ module ActiveEncode #:nodoc:
17
19
  include Callbacks
18
20
  include GlobalID
19
21
  end
20
-
21
- class NotFound < RuntimeError; end
22
22
  end