diff options
author | Azul <azul@leap.se> | 2013-11-19 11:51:42 +0100 |
---|---|---|
committer | Azul <azul@leap.se> | 2013-11-19 11:51:47 +0100 |
commit | e7a8b49ae30bce36846a5ab8f1fa2bb981100224 (patch) | |
tree | 90e7f54be3233ef789f31ba701ca368bc194d01c /core/lib/extensions | |
parent | d2eaffde87286c0cc9c0658503a60706759f7f51 (diff) |
add dump_design_docs to CouchRest::Model::Utils:Migrate
This is similar to the migrations but instead of uploading the design
documents to couch it stores them in
tmp/database/design.json
within the rails directory.
database is the supposed database name without prefixes or suffixes
design is the name of the design doc CouchRest model would have created
The files also contain a couchrest checksum so couchrest can detect they
are up to date.
This commit also cleans up a few redundant things in the extension to
CouchRest::Model:Utils::Migrate that we used to have. There's no need
to loop through the 'normal' models in load_all_models_with_engines
since load_all_models_without_engines already does that. We were also
overwriting all_models_and_proxies with exactly the same code as in
the original.
Diffstat (limited to 'core/lib/extensions')
-rw-r--r-- | core/lib/extensions/couchrest.rb | 35 |
1 files changed, 26 insertions, 9 deletions
diff --git a/core/lib/extensions/couchrest.rb b/core/lib/extensions/couchrest.rb index 91dfc1c..84cfbb3 100644 --- a/core/lib/extensions/couchrest.rb +++ b/core/lib/extensions/couchrest.rb @@ -47,28 +47,45 @@ module CouchRest def self.load_all_models_with_engines self.load_all_models_without_engines return unless defined?(Rails) - Dir[Rails.root + 'app/models/**/*.rb'].each do |path| - require path - end Dir[Rails.root + '*/app/models/**/*.rb'].each do |path| require path end end - def self.all_models_and_proxies - callbacks = migrate_each_model(find_models) - callbacks += migrate_each_proxying_model(find_proxying_models) - cleanup(callbacks) + class << self + alias_method_chain :load_all_models, :engines + end + + def dump_all_models + prepare_directory + find_models.each do |model| + model.design_docs.each do |design| + dump_design(model, design) + end + end end + protected + def dump_design(model, design) + dir = prepare_directory model.name.tableize + filename = design.id.sub('_design/','') + '.json' + puts dir + filename + design.checksum + File.open(dir + filename, "w") do |file| + file.write(JSON.pretty_generate(design.to_hash)) + end + end - class << self - alias_method_chain :load_all_models, :engines + def prepare_directory(dir = '') + dir = Rails.root + 'tmp' + 'designs' + dir + Dir.mkdir(dir) unless Dir.exists?(dir) + return dir end end end + end class ModelRailtie |