ShyCouch 0.0.0 → 0.1.0

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.
@@ -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: