summaryrefslogtreecommitdiff
path: root/lib/tasks/leap_web_core_tasks.rake
blob: e446f93d888f21e8e25a108b0299c97823378550 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
namespace :couchrest do

  desc "Dump all the design docs found in each model"
  task :dump => :environment do
    CouchRest::Model::Utils::Migrate.load_all_models
    CouchRest::Model::Utils::Migrate.dump_all_models
  end
end

namespace :cleanup do
  desc "Cleanup all expired session documents"
  task :sessions => :environment do
    # make sure this is the same as in
    #   config/initializers/session_store.rb
    store = CouchRest::Session::Store.new expire_after: 1800
    store.cleanup(store.expired)
  end

  desc "Cleanup all expired tokens"
  task :tokens => :environment do
    Token.destroy_all_expired
  end
end

namespace :db do
  desc "Rotate the databases, as needed."
  task :rotate => :environment do
    #
    # db rotation must be performed by admin, and since
    # CouchRest::Session::Document is not a CouchRest::Model, we need to
    # override the default config twice.
    #

    CouchRest::Model::Base.configure do |conf|
      conf.environment = Rails.env
      conf.connection_config_file = File.join(Rails.root, 'config', 'couchdb.admin.yml')
    end
    Token.rotate_database_now(:window => 1.day)

    CouchRest::Session::Document.configure do |conf|
      conf.environment = Rails.env
      conf.connection_config_file = File.join(Rails.root, 'config', 'couchdb.admin.yml')
    end
    CouchRest::Session::Document.rotate_database_now(:window => 1.day)
  end

  desc "Delete and recreate temporary databases."
  task :deletetmp => :environment do
    # db deletion and creation must be performed by admin
    CouchRest::Model::Base.configure do |conf|
      conf.environment = Rails.env
      conf.connection_config_file = File.join(Rails.root, 'config', 'couchdb.admin.yml')
    end
    User.tmp_database.recreate!
    User.design_doc.sync!(User.tmp_database)
  end

end