Class: RelaxDB::Migration
- Inherits:
-
Object
- Object
- RelaxDB::Migration
- Defined in:
- lib/relaxdb/migration.rb
Class Method Summary collapse
- .fv(file_name) ⇒ Object
- .run(klass, limit = 1000) ⇒ Object
-
.run_all(file_names, action = lambda { |fn| require fn }) ⇒ Object
Runs all outstanding migrations in a given directory.
Class Method Details
.fv(file_name) ⇒ Object
34 35 36 |
# File 'lib/relaxdb/migration.rb', line 34 def self.fv file_name File.basename(file_name).split("_")[0].to_i end |
.run(klass, limit = 1000) ⇒ Object
5 6 7 8 9 10 11 12 13 14 15 16 17 |
# File 'lib/relaxdb/migration.rb', line 5 def self.run klass, limit = 1000 query = lambda do |page_params| RelaxDB.paginate_view "#{klass}_all", :startkey => nil, :endkey => {}, :attributes => [:_id], :page_params => page_params, :limit => limit end objs = query.call({}) until objs.empty? migrated = objs.map { |o| yield o }.flatten.reject { |o| o.nil? } RelaxDB.bulk_save! *migrated objs = objs.next_params ? query.call(objs.next_params) : [] end end |
.run_all(file_names, action = lambda { |fn| require fn }) ⇒ Object
25 26 27 28 29 30 31 32 |
# File 'lib/relaxdb/migration.rb', line 25 def self.run_all file_names, action = lambda { |fn| require fn } v = RelaxDB::MigrationVersion.version file_names.select { |fn| fv(fn) > v }.each do |fn| RelaxDB.logger.info "Applying #{fn}" action.call fn RelaxDB::MigrationVersion.update fv(fn) end end |