ShyCouch 0.0.0 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{ShyCouch}
8
- s.version = "0.0.0"
8
+ s.version = "0.1.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = [%q{Shy Inc.}, %q{Daniel Bryan}, %q{Cerales}]
12
- s.date = %q{2011-08-14}
12
+ s.date = %q{2011-08-19}
13
13
  s.description = %q{Ruby API for CouchDB, designed to work with the Camping micro-framework.}
14
14
  s.email = %q{danbryan@gmail.com}
15
15
  s.extra_rdoc_files = [
@@ -34,6 +34,7 @@ Gem::Specification.new do |s|
34
34
  "test/test_couch_document.rb",
35
35
  "test/test_couchdb_api.rb",
36
36
  "test/test_couchdb_factory.rb",
37
+ "test/test_design_documents.rb",
37
38
  "test/test_fields.rb"
38
39
  ]
39
40
  s.homepage = %q{http://github.com/Cerales/ShyCouch}
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.0
1
+ 0.1.0
@@ -32,42 +32,9 @@ module ShyCouch
32
32
  end
33
33
  end
34
34
 
35
-
36
35
  module Data
37
- class Model < Hash
38
- # takes hash that will be the document contents as well as an array of expected keys for validation
39
- # todo - enforce keys that work as attrs
40
-
41
- def initialize(hash=nil, requirements)
42
- @requirements = requirements
43
- merge!(hash) if hash
44
- raise TypeError unless valid? #TODO - should raise a more specific and useful error
45
- end
46
-
47
- def method_missing(name, *args)
48
- # Makes the object behave as if the hash keys are instance properties with attr_accessors
49
- if name.to_s
50
- if name[name.length-1] == "="
51
- key = name[0, name.length-1]
52
- if self.key?(key)
53
- self[key] = args
54
- return args
55
- end
56
- else
57
- return self[name.to_s] unless !self[name.to_s]
58
- end
59
- end
60
- super
61
- end
62
-
63
- def respond_to?(method)
64
- # so that testing for whether it responds to a method is equivalent to testing for the existence of a key
65
- return true if self.key?(method.to_s)
66
- super
67
- end
68
- end
69
36
 
70
- class CouchDocument < Model
37
+ class CouchDocument < Hash
71
38
  class << self
72
39
  # allows instance.class.requirements to be called
73
40
  attr_accessor :requirements
@@ -77,9 +44,17 @@ module ShyCouch
77
44
  # Assumes that the "kind" is the class name unless explicitly stated otherwise
78
45
  # TODO - maybe just force it to be the class name no matter what tbh
79
46
  hash["kind"] = self.class.to_s unless hash["kind"]
80
- super(hash, @requirements)
47
+ merge!(hash)
48
+ raise TypeError unless valid?
49
+ # super(hash)
81
50
  end
82
51
 
52
+ # def initialize(hash=nil, requirements)
53
+ # @requirements = requirements
54
+ # merge!(hash) if hash
55
+ # raise TypeError unless valid? #TODO - should raise a more specific and useful error
56
+ # end
57
+
83
58
  def self.all
84
59
  database = CouchDatabase.new($settings)
85
60
  database.get()
@@ -134,7 +109,31 @@ module ShyCouch
134
109
  rescue JSON::GeneratorError
135
110
  false
136
111
  end
112
+
113
+ def method_missing(m, *a)
114
+ # Makes the object behave as if the hash keys are instance properties with attr_accessors
115
+ # Had a dozen lines or so for this and found a one-line implementation of the same thing in Camping.
116
+ m.to_s =~ /=$/ ? self[$`] = a[0] : a == [] ? self[m.to_s] : super
117
+ end
118
+
119
+ def respond_to?(method)
120
+ # so that testing for whether it responds to a method is equivalent to testing for the existence of a key
121
+ self.key?(method.to_s) ? true : super
122
+ end
123
+
137
124
  end
125
+
126
+ class Design < CouchDocument
127
+ # this is used to manage design documents
128
+ # In practise, the Controllers should be a list of classes corresponding to design documents
129
+
130
+ def map(&block);end
131
+
132
+ def reduce(&block);end
133
+
134
+ def push;end #must override push in order to set the ID
135
+ end
136
+
138
137
  end
139
138
 
140
139
  module Fields
@@ -25,4 +25,8 @@ require_relative 'test_fields'
25
25
  # test ShyCouch::Data::CouchDocument
26
26
  require_relative 'test_couch_document'
27
27
 
28
- require_relative 'test_camping_integration'
28
+ require_relative 'test_camping_integration'
29
+
30
+ require_relative 'test_couchdb_factory'
31
+
32
+ require_relative 'test_design_documents'
@@ -10,6 +10,6 @@ class TestCouchDBFactory < Test::Unit::TestCase
10
10
  end
11
11
 
12
12
  def test_create_database
13
- assert_kind_of(ShyCouch::CouchDBAPI, ShyCouch::Create.go(@valid_settings))
13
+ assert_kind_of(ShyCouch::CouchDBAPI, ShyCouch::Connection.Create(@valid_settings))
14
14
  end
15
15
  end
@@ -0,0 +1,25 @@
1
+ require 'test/unit'
2
+ require_relative '../lib/ShyCouch.rb'
3
+
4
+ class DesignDocumentTests
5
+ class TestDesignDocumentCreation < Test::Unit::TestCase
6
+ Design = ShyCouch::Data::Design
7
+ def setup; end
8
+ def teardown; end
9
+
10
+ class TestDesign < Design
11
+ def view_cigars
12
+ map do
13
+
14
+ end
15
+ reduce do
16
+
17
+ end
18
+ end
19
+ end
20
+ def test_define_design_document
21
+ #todo
22
+
23
+ end
24
+ end
25
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ShyCouch
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.0
4
+ version: 0.1.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -11,11 +11,11 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2011-08-14 00:00:00.000000000Z
14
+ date: 2011-08-19 00:00:00.000000000Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: bundler
18
- requirement: &70299706365800 !ruby/object:Gem::Requirement
18
+ requirement: &70325757147520 !ruby/object:Gem::Requirement
19
19
  none: false
20
20
  requirements:
21
21
  - - ~>
@@ -23,10 +23,10 @@ dependencies:
23
23
  version: 1.0.0
24
24
  type: :development
25
25
  prerelease: false
26
- version_requirements: *70299706365800
26
+ version_requirements: *70325757147520
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: jeweler
29
- requirement: &70299706364960 !ruby/object:Gem::Requirement
29
+ requirement: &70325757146600 !ruby/object:Gem::Requirement
30
30
  none: false
31
31
  requirements:
32
32
  - - ~>
@@ -34,10 +34,10 @@ dependencies:
34
34
  version: 1.6.4
35
35
  type: :development
36
36
  prerelease: false
37
- version_requirements: *70299706364960
37
+ version_requirements: *70325757146600
38
38
  - !ruby/object:Gem::Dependency
39
39
  name: rcov
40
- requirement: &70299706364040 !ruby/object:Gem::Requirement
40
+ requirement: &70325757145640 !ruby/object:Gem::Requirement
41
41
  none: false
42
42
  requirements:
43
43
  - - ! '>='
@@ -45,10 +45,10 @@ dependencies:
45
45
  version: '0'
46
46
  type: :development
47
47
  prerelease: false
48
- version_requirements: *70299706364040
48
+ version_requirements: *70325757145640
49
49
  - !ruby/object:Gem::Dependency
50
50
  name: sourcify
51
- requirement: &70299706363060 !ruby/object:Gem::Requirement
51
+ requirement: &70325757144660 !ruby/object:Gem::Requirement
52
52
  none: false
53
53
  requirements:
54
54
  - - ~>
@@ -56,10 +56,10 @@ dependencies:
56
56
  version: 0.5.0
57
57
  type: :development
58
58
  prerelease: false
59
- version_requirements: *70299706363060
59
+ version_requirements: *70325757144660
60
60
  - !ruby/object:Gem::Dependency
61
61
  name: ShyRubyJS
62
- requirement: &70299706361900 !ruby/object:Gem::Requirement
62
+ requirement: &70325757143980 !ruby/object:Gem::Requirement
63
63
  none: false
64
64
  requirements:
65
65
  - - ! '>='
@@ -67,10 +67,10 @@ dependencies:
67
67
  version: '0'
68
68
  type: :development
69
69
  prerelease: false
70
- version_requirements: *70299706361900
70
+ version_requirements: *70325757143980
71
71
  - !ruby/object:Gem::Dependency
72
72
  name: ShyRubyJS
73
- requirement: &70299706360460 !ruby/object:Gem::Requirement
73
+ requirement: &70325757142780 !ruby/object:Gem::Requirement
74
74
  none: false
75
75
  requirements:
76
76
  - - ! '>='
@@ -78,10 +78,10 @@ dependencies:
78
78
  version: '0'
79
79
  type: :runtime
80
80
  prerelease: false
81
- version_requirements: *70299706360460
81
+ version_requirements: *70325757142780
82
82
  - !ruby/object:Gem::Dependency
83
83
  name: sourcify
84
- requirement: &70299706359260 !ruby/object:Gem::Requirement
84
+ requirement: &70325757120860 !ruby/object:Gem::Requirement
85
85
  none: false
86
86
  requirements:
87
87
  - - ! '>='
@@ -89,7 +89,7 @@ dependencies:
89
89
  version: '0'
90
90
  type: :runtime
91
91
  prerelease: false
92
- version_requirements: *70299706359260
92
+ version_requirements: *70325757120860
93
93
  description: Ruby API for CouchDB, designed to work with the Camping micro-framework.
94
94
  email: danbryan@gmail.com
95
95
  executables: []
@@ -115,6 +115,7 @@ files:
115
115
  - test/test_couch_document.rb
116
116
  - test/test_couchdb_api.rb
117
117
  - test/test_couchdb_factory.rb
118
+ - test/test_design_documents.rb
118
119
  - test/test_fields.rb
119
120
  homepage: http://github.com/Cerales/ShyCouch
120
121
  licenses:
@@ -131,7 +132,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
131
132
  version: '0'
132
133
  segments:
133
134
  - 0
134
- hash: 2260560036860812579
135
+ hash: -2665238797282085994
135
136
  required_rubygems_version: !ruby/object:Gem::Requirement
136
137
  none: false
137
138
  requirements: