couch-warmer 1.0.5 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -2,7 +2,7 @@
2
2
 
3
3
  Couchdb view compilation copy trick command line implementation
4
4
 
5
- couch-warmer --host 10.0.0.8 --dbname design --name Work --suffix WarmUp
5
+ couch-warmer --host 10.0.0.8 --dbname mydb --suffix WarmUp
6
6
 
7
7
  == Contributing to couch-warmer
8
8
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.0.5
1
+ 2.0.0
@@ -8,7 +8,6 @@ opts = Trollop::options do
8
8
  opt :host, "Host addr", :default => '127.0.0.1'
9
9
  opt :port, "Port", :default => '5984'
10
10
  opt :dbname, "Database", :type => String
11
- opt :name, "View name", :type => String
12
11
  opt :suffix, "Warm suffix", :type => String
13
12
  end
14
13
 
@@ -16,4 +15,4 @@ db = "http://#{opts[:host]}:#{opts[:port]}/#{opts[:dbname]}"
16
15
  puts db
17
16
 
18
17
  warmer = CouchWarmer.new(db)
19
- warmer.warm(opts[:name],opts[:suffix])
18
+ warmer.warm_all(opts[:suffix])
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "couch-warmer"
8
- s.version = "1.0.5"
8
+ s.version = "2.0.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Mathieu Elie"]
12
- s.date = "2012-02-07"
12
+ s.date = "2012-02-09"
13
13
  s.description = "couchdb view generation could take a while. you could build temp views, then copy them in one shot"
14
14
  s.email = "mathieuelie@gmail.com"
15
15
  s.executables = ["couch-warmer"]
@@ -6,6 +6,20 @@ class CouchWarmer
6
6
  @db = CouchRest.database(database)
7
7
  end
8
8
 
9
+ def warm_all(suffix)
10
+ puts "warming all with suffix #{suffix}"
11
+ designs = get_all_design_docs suffix
12
+
13
+ designs.each do |design|
14
+ puts "warming #{design}"
15
+ begin
16
+ warm(design.gsub(suffix, ''), suffix)
17
+ rescue RestClient::InternalServerError => e
18
+ puts "error 500 on warming #{design} ..... -> next!"
19
+ end
20
+ end
21
+ end
22
+
9
23
  # name with suffix, suffix
10
24
  def warm(name, suffix)
11
25
  puts "warming.. #{name} from #{name}#{suffix}"
@@ -42,6 +56,7 @@ class CouchWarmer
42
56
 
43
57
  def is_active?
44
58
  tasks = CouchRest.get(@db.server.uri + '/_active_tasks')
59
+ tasks.reject! { |t| t['type'] != 'View Group Indexer' }
45
60
  tasks.map! { |t| t['task'] + ' ' + t['status'] }
46
61
  !tasks.empty?
47
62
  end
@@ -50,5 +65,11 @@ class CouchWarmer
50
65
  design_info = CouchRest.get(@db.server.uri + '/' + @db.name + '/_design/' + design_doc)
51
66
  design_info["views"].keys.first
52
67
  end
68
+
69
+ def get_all_design_docs(suffix)
70
+ designs = CouchRest.get(@db.server.uri + '/' + @db.name + '/_all_docs?startkey=%22_design/%22&endkey=%22_design0%22&include_docs=true')
71
+ designs["rows"].map {|d| d["id"].gsub '_design/', '' }.grep /#{suffix}$/
72
+ end
73
+
53
74
  end
54
75
 
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: couch-warmer
3
3
  version: !ruby/object:Gem::Version
4
- hash: 29
4
+ hash: 15
5
5
  prerelease:
6
6
  segments:
7
- - 1
7
+ - 2
8
8
  - 0
9
- - 5
10
- version: 1.0.5
9
+ - 0
10
+ version: 2.0.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - Mathieu Elie
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2012-02-07 00:00:00 Z
18
+ date: 2012-02-09 00:00:00 Z
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
21
21
  requirement: &id001 !ruby/object:Gem::Requirement