Class: PhilColumns::Activerecord::Archivist
- Inherits:
-
Object
- Object
- PhilColumns::Activerecord::Archivist
- Includes:
- SilenceStreams
- Defined in:
- lib/phil_columns/activerecord/archivist.rb
Instance Method Summary collapse
- #clear_seeds ⇒ Object
- #ensure_schema_seeds_table! ⇒ Object
- #record_seed(version) ⇒ Object
- #remove_seed(version) ⇒ Object
- #seed_already_executed?(version) ⇒ Boolean
Instance Method Details
#clear_seeds ⇒ Object
23 24 25 |
# File 'lib/phil_columns/activerecord/archivist.rb', line 23 def clear_seeds SchemaSeed.delete_all end |
#ensure_schema_seeds_table! ⇒ Object
32 33 34 35 36 37 38 39 40 41 42 |
# File 'lib/phil_columns/activerecord/archivist.rb', line 32 def ensure_schema_seeds_table! return if ActiveRecord::Base.connection.table_exists?( :schema_seeds ) silence_streams do ActiveRecord::Schema.define do create_table :schema_seeds, id: false do |t| t.column :version, :string, limit: 20, null: false end end end end |
#record_seed(version) ⇒ Object
7 8 9 10 11 12 13 14 15 |
# File 'lib/phil_columns/activerecord/archivist.rb', line 7 def record_seed( version ) ensure_schema_seeds_table! return if seed_already_executed?( version ) SchemaSeed.new.tap do |schema_seed| schema_seed.version = version schema_seed.save! end end |
#remove_seed(version) ⇒ Object
17 18 19 20 21 |
# File 'lib/phil_columns/activerecord/archivist.rb', line 17 def remove_seed( version ) ensure_schema_seeds_table! SchemaSeed.where( version: version ).delete_all #first.tap do |schema_seed| end |
#seed_already_executed?(version) ⇒ Boolean
27 28 29 30 |
# File 'lib/phil_columns/activerecord/archivist.rb', line 27 def seed_already_executed?( version ) ensure_schema_seeds_table! SchemaSeed.where( version: version ).exists? end |