zdzolton-cambric 0.7.0 → 0.7.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README.rdoc +1 -1
- data/VERSION +1 -1
- data/cambric.gemspec +7 -2
- data/lib/cambric.rb +25 -7
- data/spec/cambric/cambric_spec.rb +22 -0
- data/spec/fixtures/twitter-clone-modified/tweets/views/by_follower_and_created_at/map.js +7 -0
- data/spec/fixtures/twitter-clone-modified/users/views/bad/map.js +7 -0
- data/spec/fixtures/twitter-clone-modified/users/views/bad/reduce.js +4 -0
- data/spec/fixtures/twitter-clone-modified/users/views/followers/map.js +6 -0
- data/spec/fixtures/twitter-clone-modified/users/views/followers/reduce.js +7 -0
- data/spec/spec_helper.rb +9 -0
- metadata +8 -4
data/README.rdoc
CHANGED
@@ -104,7 +104,7 @@ by the application.
|
|
104
104
|
|
105
105
|
* Install gems:
|
106
106
|
|
107
|
-
$ sudo gem install
|
107
|
+
$ sudo gem install mattetti-couchrest zdzolton-cambric
|
108
108
|
|
109
109
|
* Configure Rails:
|
110
110
|
* create a config/initializers/cambric.rb file as follows:
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.7.
|
1
|
+
0.7.1
|
data/cambric.gemspec
CHANGED
@@ -2,11 +2,11 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = %q{cambric}
|
5
|
-
s.version = "0.7.
|
5
|
+
s.version = "0.7.1"
|
6
6
|
|
7
7
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
8
8
|
s.authors = ["Zachary Zolton", "Geoff Buesing"]
|
9
|
-
s.date = %q{2009-
|
9
|
+
s.date = %q{2009-09-01}
|
10
10
|
s.email = %q{zachary.zolton@gmail.com}
|
11
11
|
s.extra_rdoc_files = [
|
12
12
|
"LICENSE",
|
@@ -29,6 +29,11 @@ Gem::Specification.new do |s|
|
|
29
29
|
"spec/cambric/cambric_spec.rb",
|
30
30
|
"spec/cambric/configurator_spec.rb",
|
31
31
|
"spec/cambric/test_helpers_spec.rb",
|
32
|
+
"spec/fixtures/twitter-clone-modified/tweets/views/by_follower_and_created_at/map.js",
|
33
|
+
"spec/fixtures/twitter-clone-modified/users/views/bad/map.js",
|
34
|
+
"spec/fixtures/twitter-clone-modified/users/views/bad/reduce.js",
|
35
|
+
"spec/fixtures/twitter-clone-modified/users/views/followers/map.js",
|
36
|
+
"spec/fixtures/twitter-clone-modified/users/views/followers/reduce.js",
|
32
37
|
"spec/fixtures/twitter-clone/tweets/views/by_follower_and_created_at/map.js",
|
33
38
|
"spec/fixtures/twitter-clone/users/views/bad/map.js",
|
34
39
|
"spec/fixtures/twitter-clone/users/views/bad/reduce.js",
|
data/lib/cambric.rb
CHANGED
@@ -46,12 +46,12 @@ module Cambric
|
|
46
46
|
@databases.each_pair{ |name,db| db.server.create_db db.name rescue nil }
|
47
47
|
end
|
48
48
|
|
49
|
-
def self.[](
|
50
|
-
@databases[
|
49
|
+
def self.[](database_name)
|
50
|
+
@databases[database_name.to_sym]
|
51
51
|
end
|
52
52
|
|
53
|
-
def self.push_design_docs
|
54
|
-
@databases.keys.each{ |db_sym| push_design_doc_for db_sym
|
53
|
+
def self.push_design_docs ddoc_name=nil
|
54
|
+
@databases.keys.each{ |db_sym| push_design_doc_for db_sym, ddoc_name }
|
55
55
|
end
|
56
56
|
|
57
57
|
def self.prepare_databases
|
@@ -63,14 +63,32 @@ module Cambric
|
|
63
63
|
create_databases!
|
64
64
|
push_design_docs
|
65
65
|
end
|
66
|
-
|
66
|
+
|
67
|
+
def self.prime_view_changes_in_temp
|
68
|
+
ddoc_name = "#{@design_doc_name}-temp"
|
69
|
+
push_design_docs ddoc_name
|
70
|
+
@databases.keys.map do |db_name|
|
71
|
+
Thread.new{ prime_views_for @databases[db_name], ddoc_name }
|
72
|
+
end.each{ |t| t.join }
|
73
|
+
end
|
74
|
+
|
67
75
|
private
|
68
76
|
|
69
|
-
def self.
|
77
|
+
def self.prime_views_for database, ddoc_name=nil
|
78
|
+
ddoc = database.get "_design/#{ddoc_name}"
|
79
|
+
view_name, view_def = ddoc['views'].first
|
80
|
+
opts = { :limit => 1 }
|
81
|
+
opts[:reduce] = false if view_def['reduce']
|
82
|
+
view_url = "#{database.root}/_design/#{ddoc_name}/_view/#{view_name}"
|
83
|
+
%x[curl --silent '#{CouchRest.paramify_url view_url, opts}']
|
84
|
+
end
|
85
|
+
|
86
|
+
def self.push_design_doc_for database_name, ddoc_name=nil
|
87
|
+
database = database_name.to_s
|
70
88
|
design_doc_path = File.join @db_dir, database
|
71
89
|
if File.exist?(design_doc_path)
|
72
90
|
fm = FileManager.new self[database].name, self[database].host
|
73
|
-
fm.push_app design_doc_path, @design_doc_name
|
91
|
+
fm.push_app design_doc_path, ddoc_name || @design_doc_name
|
74
92
|
end
|
75
93
|
end
|
76
94
|
|
@@ -131,6 +131,28 @@ describe Cambric do
|
|
131
131
|
design_doc = Cambric[:tweets].get("_design/twitter-clone")
|
132
132
|
design_doc['views']['by_follower_and_created_at'].should_not be_nil
|
133
133
|
end
|
134
|
+
|
135
|
+
describe "after priming modified views in a temp design doc" do
|
136
|
+
before :all do
|
137
|
+
Cambric[:tweets].save_doc :message => 'ohai!',
|
138
|
+
:author => 'zach',
|
139
|
+
:followers => %w(trevor geoff),
|
140
|
+
:created_at => '2009/09/01T12:51:42Z'
|
141
|
+
reconfigure_twitter_clone_to_modified_code
|
142
|
+
Cambric.prime_view_changes_in_temp
|
143
|
+
end
|
144
|
+
|
145
|
+
it "should be able to hit new views on temp design doc" do
|
146
|
+
db = CouchRest.database('http://127.0.0.1:5984/tweets-testing')
|
147
|
+
result = db.view 'twitter-clone-temp/by_follower_and_created_at', :limit => 1
|
148
|
+
result['rows'].first['key'].should be_a(String)
|
149
|
+
end
|
150
|
+
|
151
|
+
it "should be able to hit old views on original design doc" do
|
152
|
+
result = Cambric[:tweets].view :by_follower_and_created_at, :limit => 1
|
153
|
+
result['rows'].first['key'].should be_an(Array)
|
154
|
+
end
|
155
|
+
end
|
134
156
|
end
|
135
157
|
|
136
158
|
describe "when the design doc already exists" do
|
data/spec/spec_helper.rb
CHANGED
@@ -34,6 +34,15 @@ def configure_twitter_clone
|
|
34
34
|
end
|
35
35
|
end
|
36
36
|
|
37
|
+
def reconfigure_twitter_clone_to_modified_code
|
38
|
+
Cambric.configure do |config|
|
39
|
+
config.design_doc_name = 'twitter-clone'
|
40
|
+
config.db_dir = 'spec/fixtures/twitter-clone-modified'
|
41
|
+
config.environment = 'test'
|
42
|
+
config.databases = TWITTER_CLONE_DATABASES
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
37
46
|
def delete_twitter_clone_databases
|
38
47
|
%w(users tweets).each{ |db| Cambric[db].delete! rescue nil }
|
39
48
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: zdzolton-cambric
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.7.
|
4
|
+
version: 0.7.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Zachary Zolton
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2009-
|
13
|
+
date: 2009-09-01 00:00:00 -07:00
|
14
14
|
default_executable:
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
@@ -49,6 +49,11 @@ files:
|
|
49
49
|
- spec/cambric/cambric_spec.rb
|
50
50
|
- spec/cambric/configurator_spec.rb
|
51
51
|
- spec/cambric/test_helpers_spec.rb
|
52
|
+
- spec/fixtures/twitter-clone-modified/tweets/views/by_follower_and_created_at/map.js
|
53
|
+
- spec/fixtures/twitter-clone-modified/users/views/bad/map.js
|
54
|
+
- spec/fixtures/twitter-clone-modified/users/views/bad/reduce.js
|
55
|
+
- spec/fixtures/twitter-clone-modified/users/views/followers/map.js
|
56
|
+
- spec/fixtures/twitter-clone-modified/users/views/followers/reduce.js
|
52
57
|
- spec/fixtures/twitter-clone/tweets/views/by_follower_and_created_at/map.js
|
53
58
|
- spec/fixtures/twitter-clone/users/views/bad/map.js
|
54
59
|
- spec/fixtures/twitter-clone/users/views/bad/reduce.js
|
@@ -58,7 +63,6 @@ files:
|
|
58
63
|
- spec/spec_helper.rb
|
59
64
|
has_rdoc: false
|
60
65
|
homepage: http://github.com/zdzolton/cambric
|
61
|
-
licenses:
|
62
66
|
post_install_message:
|
63
67
|
rdoc_options:
|
64
68
|
- --charset=UTF-8
|
@@ -79,7 +83,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
79
83
|
requirements: []
|
80
84
|
|
81
85
|
rubyforge_project:
|
82
|
-
rubygems_version: 1.
|
86
|
+
rubygems_version: 1.2.0
|
83
87
|
signing_key:
|
84
88
|
specification_version: 3
|
85
89
|
summary: Opinionated management and usage of CouchDB from your Ruby apps.
|