couch_rest_adapter 0.1.3 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.rdoc +31 -1
- data/lib/couch_rest_adapter/db_config.rb +4 -0
- data/lib/couch_rest_adapter/document_management.rb +1 -1
- data/lib/couch_rest_adapter/query_views.rb +3 -3
- data/lib/couch_rest_adapter/version.rb +1 -1
- data/lib/couch_rest_adapter.rb +32 -13
- data/test/couch_rest_adapter_test.rb +7 -0
- data/test/dummy/config/database.yml +1 -0
- data/test/dummy/log/test.log +180 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ce2435af2159efb62cb05eb28a983283e637549e
|
4
|
+
data.tar.gz: 73da822c0f41cbe0a25f0b36427ffca9c4138664
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b3d2ea59b7a6f3e4d82fad656758a52f5e1b909a984afb39a584fb80d36fc55756a0614d6dc2314c1ef6d588b6e9a3cd8111bcf0fba005af7a7d5731421d9500
|
7
|
+
data.tar.gz: 38e677ac00092705b26001b5cc52e6c99a7ad7d4d23e6e1d45f261a7b7202bc2c4ab32763b2b2ee2b58deb9c3fefcf2f4bb6fc6f668ec32ad060b96bf78a8941
|
data/README.rdoc
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
= CouchRestAdapter
|
2
2
|
|
3
|
+
This is a realy early version.
|
4
|
+
|
3
5
|
This project rocks and uses MIT-LICENSE.
|
4
6
|
|
5
7
|
== Requirements
|
@@ -13,7 +15,34 @@ This project rocks and uses MIT-LICENSE.
|
|
13
15
|
|
14
16
|
=== In Gemfile
|
15
17
|
|
16
|
-
gem 'couch_rest_adapter'
|
18
|
+
gem 'couch_rest_adapter'
|
19
|
+
|
20
|
+
=== Sample config/database.yml
|
21
|
+
|
22
|
+
defaults: &defaults
|
23
|
+
host: localhost
|
24
|
+
port: 5984
|
25
|
+
protocol: http
|
26
|
+
|
27
|
+
development:
|
28
|
+
<<: *defaults
|
29
|
+
name: db
|
30
|
+
|
31
|
+
test:
|
32
|
+
<<: *defaults
|
33
|
+
name: db_test
|
34
|
+
|
35
|
+
|
36
|
+
=== CouchViews
|
37
|
+
|
38
|
+
In order for ```Model.all``` to workyou need to add a view like (code in cs):
|
39
|
+
|
40
|
+
(d) ->
|
41
|
+
split_id = d._id.split('/')
|
42
|
+
t = split_id[0]
|
43
|
+
emit t, d
|
44
|
+
|
45
|
+
We are planning to add a rake task that setup this view on install.
|
17
46
|
|
18
47
|
=== Model Declaration
|
19
48
|
|
@@ -27,3 +56,4 @@ This project rocks and uses MIT-LICENSE.
|
|
27
56
|
* Allow setting new attributes with ```model.attribute = value```
|
28
57
|
* More test coverage
|
29
58
|
* Add tasks for pushing design documents
|
59
|
+
* Add support for basic database http auth.
|
@@ -24,6 +24,10 @@ module CouchRestAdapter
|
|
24
24
|
root = Rails.env == 'test' ? File.expand_path("../../../test/dummy/", __FILE__) : Rails.root
|
25
25
|
File.join(root, 'config', 'database.yml')
|
26
26
|
end
|
27
|
+
|
28
|
+
def default_design_doc
|
29
|
+
parse_config[Rails.env]['design_doc']
|
30
|
+
end
|
27
31
|
end
|
28
32
|
end
|
29
33
|
end
|
@@ -13,9 +13,9 @@ module CouchRestAdapter
|
|
13
13
|
#TODO: We can get this from Rails.application.class.name
|
14
14
|
DEFAULT_DESIGN = 'amcoid'
|
15
15
|
|
16
|
-
def query_view name
|
17
|
-
doc = name.namespace_me DEFAULT_DESIGN
|
18
|
-
view(doc, {key:
|
16
|
+
def query_view name, doc_name = nil
|
17
|
+
doc = name.namespace_me(doc_name || DEFAULT_DESIGN)
|
18
|
+
view(doc, {key: object_name})['rows'].map{ |res| new res['doc'] }
|
19
19
|
end
|
20
20
|
|
21
21
|
#TODO: method for reduce, and filters
|
data/lib/couch_rest_adapter.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
require 'active_model'
|
1
2
|
require 'couchrest'
|
2
3
|
require 'couch_rest_adapter/attribute_method'
|
3
4
|
require 'couch_rest_adapter/query_views'
|
@@ -10,30 +11,38 @@ using CouchRestAdapter::Helpers
|
|
10
11
|
|
11
12
|
module CouchRestAdapter
|
12
13
|
class Base < CouchRest::Document
|
14
|
+
extend ActiveModel::Naming
|
15
|
+
include ActiveModel::Validations
|
16
|
+
include ActiveModel::Conversion
|
13
17
|
include ActiveSupport::Callbacks
|
14
18
|
include AttributeMethod
|
15
|
-
include
|
19
|
+
include DbConfig
|
16
20
|
include DocumentManagement
|
17
21
|
include DbConfig
|
22
|
+
include QueryViews
|
18
23
|
|
19
24
|
#TODO: add custom callback calls.
|
20
|
-
|
25
|
+
define_model_callbacks :save
|
26
|
+
|
27
|
+
#TODO set_id not be a callback. Need a better way to do this, possibilty using class methods
|
28
|
+
before_save :set_id
|
21
29
|
|
22
|
-
def initialize
|
30
|
+
def initialize attributes = {}
|
31
|
+
@attributes = attributes
|
23
32
|
raise NotImplementedError if abstract?
|
24
|
-
super
|
33
|
+
super attributes
|
25
34
|
end
|
26
35
|
|
27
36
|
def self.all
|
28
|
-
query_view('all')
|
37
|
+
query_view('all', default_design_doc)
|
29
38
|
end
|
30
39
|
|
31
40
|
def self.all_by_type
|
32
|
-
query_view('by_type')
|
41
|
+
query_view('by_type', default_design_doc)
|
33
42
|
end
|
34
43
|
|
35
44
|
def self.find doc_id
|
36
|
-
new database.get( doc_id.namespace_me(
|
45
|
+
new database.get( doc_id.namespace_me(object_name) ).to_hash
|
37
46
|
end
|
38
47
|
|
39
48
|
def self.use_default_database
|
@@ -41,10 +50,9 @@ module CouchRestAdapter
|
|
41
50
|
end
|
42
51
|
|
43
52
|
def save
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
end
|
53
|
+
return false if invalid?
|
54
|
+
return false unless run_callbacks(:save)
|
55
|
+
super
|
48
56
|
end
|
49
57
|
|
50
58
|
def method_missing method, *args, &block
|
@@ -55,14 +63,25 @@ module CouchRestAdapter
|
|
55
63
|
end
|
56
64
|
end
|
57
65
|
|
66
|
+
def persisted?
|
67
|
+
true
|
68
|
+
end
|
69
|
+
|
70
|
+
def read_attribute_for_validation(key)
|
71
|
+
@attributes[key]
|
72
|
+
end
|
73
|
+
|
58
74
|
protected
|
59
75
|
def abstract?
|
60
76
|
self.class.to_s == 'CouchRestAdapter::Base'
|
61
77
|
end
|
62
78
|
|
63
|
-
def self.
|
64
|
-
|
79
|
+
def self.object_name
|
80
|
+
self.model_name.singular
|
65
81
|
end
|
66
82
|
|
83
|
+
def set_id
|
84
|
+
self['_id'] = next_id if self['_id'].blank?
|
85
|
+
end
|
67
86
|
end
|
68
87
|
end
|
data/test/dummy/log/test.log
CHANGED
@@ -1312,3 +1312,183 @@ CouchRestAdapterTest: test_update_to_attr=_will_persist
|
|
1312
1312
|
--------------------------------------------------------------
|
1313
1313
|
CouchRestAdapterTest: test_will_add_class_underscorename_to_id
|
1314
1314
|
--------------------------------------------------------------
|
1315
|
+
--------------------------------------------------------------
|
1316
|
+
CouchRestAdapterTest: test_attributes_are_available_as_methods
|
1317
|
+
--------------------------------------------------------------
|
1318
|
+
---------------------------------------------------------
|
1319
|
+
CouchRestAdapterTest: test_can_not_instantiate_base_class
|
1320
|
+
---------------------------------------------------------
|
1321
|
+
---------------------------------------------------------
|
1322
|
+
CouchRestAdapterTest: test_find_will_work_with_partial_id
|
1323
|
+
---------------------------------------------------------
|
1324
|
+
-------------------------------------------------------------
|
1325
|
+
CouchRestAdapterTest: test_one_can_update_existing_attributes
|
1326
|
+
-------------------------------------------------------------
|
1327
|
+
--------------------------------------------------------------------------------------------------
|
1328
|
+
CouchRestAdapterTest: test_query_all_by_type_will_return_array_of_docs_with_type_set_to_model_name
|
1329
|
+
--------------------------------------------------------------------------------------------------
|
1330
|
+
----------------------------------------------------------------------
|
1331
|
+
CouchRestAdapterTest: test_query_all_will_bring_array_of_Foo_instances
|
1332
|
+
----------------------------------------------------------------------
|
1333
|
+
-------------------------------------------------------
|
1334
|
+
CouchRestAdapterTest: test_update_to_attr=_will_persist
|
1335
|
+
-------------------------------------------------------
|
1336
|
+
--------------------------------------------------------------
|
1337
|
+
CouchRestAdapterTest: test_will_add_class_underscorename_to_id
|
1338
|
+
--------------------------------------------------------------
|
1339
|
+
--------------------------------------------------------------
|
1340
|
+
CouchRestAdapterTest: test_attributes_are_available_as_methods
|
1341
|
+
--------------------------------------------------------------
|
1342
|
+
---------------------------------------------------------
|
1343
|
+
CouchRestAdapterTest: test_can_not_instantiate_base_class
|
1344
|
+
---------------------------------------------------------
|
1345
|
+
---------------------------------------------------------
|
1346
|
+
CouchRestAdapterTest: test_find_will_work_with_partial_id
|
1347
|
+
---------------------------------------------------------
|
1348
|
+
-------------------------------------------------------------
|
1349
|
+
CouchRestAdapterTest: test_one_can_update_existing_attributes
|
1350
|
+
-------------------------------------------------------------
|
1351
|
+
--------------------------------------------------------------------------------------------------
|
1352
|
+
CouchRestAdapterTest: test_query_all_by_type_will_return_array_of_docs_with_type_set_to_model_name
|
1353
|
+
--------------------------------------------------------------------------------------------------
|
1354
|
+
----------------------------------------------------------------------
|
1355
|
+
CouchRestAdapterTest: test_query_all_will_bring_array_of_Foo_instances
|
1356
|
+
----------------------------------------------------------------------
|
1357
|
+
-------------------------------------------------------
|
1358
|
+
CouchRestAdapterTest: test_update_to_attr=_will_persist
|
1359
|
+
-------------------------------------------------------
|
1360
|
+
--------------------------------------------------------------
|
1361
|
+
CouchRestAdapterTest: test_will_add_class_underscorename_to_id
|
1362
|
+
--------------------------------------------------------------
|
1363
|
+
--------------------------------------------------------------
|
1364
|
+
CouchRestAdapterTest: test_attributes_are_available_as_methods
|
1365
|
+
--------------------------------------------------------------
|
1366
|
+
---------------------------------------------------------
|
1367
|
+
CouchRestAdapterTest: test_can_not_instantiate_base_class
|
1368
|
+
---------------------------------------------------------
|
1369
|
+
---------------------------------------------------------
|
1370
|
+
CouchRestAdapterTest: test_find_will_work_with_partial_id
|
1371
|
+
---------------------------------------------------------
|
1372
|
+
-------------------------------------------------------------
|
1373
|
+
CouchRestAdapterTest: test_one_can_update_existing_attributes
|
1374
|
+
-------------------------------------------------------------
|
1375
|
+
--------------------------------------------------------------------------------------------------
|
1376
|
+
CouchRestAdapterTest: test_query_all_by_type_will_return_array_of_docs_with_type_set_to_model_name
|
1377
|
+
--------------------------------------------------------------------------------------------------
|
1378
|
+
----------------------------------------------------------------------
|
1379
|
+
CouchRestAdapterTest: test_query_all_will_bring_array_of_Foo_instances
|
1380
|
+
----------------------------------------------------------------------
|
1381
|
+
-------------------------------------------------------
|
1382
|
+
CouchRestAdapterTest: test_update_to_attr=_will_persist
|
1383
|
+
-------------------------------------------------------
|
1384
|
+
--------------------------------------------------------------
|
1385
|
+
CouchRestAdapterTest: test_will_add_class_underscorename_to_id
|
1386
|
+
--------------------------------------------------------------
|
1387
|
+
--------------------------------------------------------------
|
1388
|
+
CouchRestAdapterTest: test_attributes_are_available_as_methods
|
1389
|
+
--------------------------------------------------------------
|
1390
|
+
---------------------------------------------------------
|
1391
|
+
CouchRestAdapterTest: test_can_not_instantiate_base_class
|
1392
|
+
---------------------------------------------------------
|
1393
|
+
---------------------------------------------------------
|
1394
|
+
CouchRestAdapterTest: test_find_will_work_with_partial_id
|
1395
|
+
---------------------------------------------------------
|
1396
|
+
-------------------------------------------------------------
|
1397
|
+
CouchRestAdapterTest: test_one_can_update_existing_attributes
|
1398
|
+
-------------------------------------------------------------
|
1399
|
+
--------------------------------------------------------------------------------------------------
|
1400
|
+
CouchRestAdapterTest: test_query_all_by_type_will_return_array_of_docs_with_type_set_to_model_name
|
1401
|
+
--------------------------------------------------------------------------------------------------
|
1402
|
+
----------------------------------------------------------------------
|
1403
|
+
CouchRestAdapterTest: test_query_all_will_bring_array_of_Foo_instances
|
1404
|
+
----------------------------------------------------------------------
|
1405
|
+
-------------------------------------------------------
|
1406
|
+
CouchRestAdapterTest: test_update_to_attr=_will_persist
|
1407
|
+
-------------------------------------------------------
|
1408
|
+
--------------------------------------------------------------
|
1409
|
+
CouchRestAdapterTest: test_will_add_class_underscorename_to_id
|
1410
|
+
--------------------------------------------------------------
|
1411
|
+
--------------------------------------------------------------
|
1412
|
+
CouchRestAdapterTest: test_attributes_are_available_as_methods
|
1413
|
+
--------------------------------------------------------------
|
1414
|
+
---------------------------------------------------------
|
1415
|
+
CouchRestAdapterTest: test_can_not_instantiate_base_class
|
1416
|
+
---------------------------------------------------------
|
1417
|
+
---------------------------------------------------------
|
1418
|
+
CouchRestAdapterTest: test_find_will_work_with_partial_id
|
1419
|
+
---------------------------------------------------------
|
1420
|
+
-------------------------------------------------------------
|
1421
|
+
CouchRestAdapterTest: test_one_can_update_existing_attributes
|
1422
|
+
-------------------------------------------------------------
|
1423
|
+
--------------------------------------------------------------------------------------------------
|
1424
|
+
CouchRestAdapterTest: test_query_all_by_type_will_return_array_of_docs_with_type_set_to_model_name
|
1425
|
+
--------------------------------------------------------------------------------------------------
|
1426
|
+
----------------------------------------------------------------------
|
1427
|
+
CouchRestAdapterTest: test_query_all_will_bring_array_of_Foo_instances
|
1428
|
+
----------------------------------------------------------------------
|
1429
|
+
-------------------------------------------------------
|
1430
|
+
CouchRestAdapterTest: test_update_to_attr=_will_persist
|
1431
|
+
-------------------------------------------------------
|
1432
|
+
--------------------------------------------------------------
|
1433
|
+
CouchRestAdapterTest: test_will_add_class_underscorename_to_id
|
1434
|
+
--------------------------------------------------------------
|
1435
|
+
--------------------------
|
1436
|
+
LintTest: test_errors_aref
|
1437
|
+
--------------------------
|
1438
|
+
---------------------------
|
1439
|
+
LintTest: test_model_naming
|
1440
|
+
---------------------------
|
1441
|
+
-------------------------
|
1442
|
+
LintTest: test_persisted?
|
1443
|
+
-------------------------
|
1444
|
+
---------------------
|
1445
|
+
LintTest: test_to_key
|
1446
|
+
---------------------
|
1447
|
+
-----------------------
|
1448
|
+
LintTest: test_to_param
|
1449
|
+
-----------------------
|
1450
|
+
------------------------------
|
1451
|
+
LintTest: test_to_partial_path
|
1452
|
+
------------------------------
|
1453
|
+
--------------------------------------------------------------
|
1454
|
+
CouchRestAdapterTest: test_attributes_are_available_as_methods
|
1455
|
+
--------------------------------------------------------------
|
1456
|
+
---------------------------------------------------------
|
1457
|
+
CouchRestAdapterTest: test_can_not_instantiate_base_class
|
1458
|
+
---------------------------------------------------------
|
1459
|
+
---------------------------------------------------------
|
1460
|
+
CouchRestAdapterTest: test_find_will_work_with_partial_id
|
1461
|
+
---------------------------------------------------------
|
1462
|
+
-------------------------------------------------------------
|
1463
|
+
CouchRestAdapterTest: test_one_can_update_existing_attributes
|
1464
|
+
-------------------------------------------------------------
|
1465
|
+
--------------------------------------------------------------------------------------------------
|
1466
|
+
CouchRestAdapterTest: test_query_all_by_type_will_return_array_of_docs_with_type_set_to_model_name
|
1467
|
+
--------------------------------------------------------------------------------------------------
|
1468
|
+
----------------------------------------------------------------------
|
1469
|
+
CouchRestAdapterTest: test_query_all_will_bring_array_of_Foo_instances
|
1470
|
+
----------------------------------------------------------------------
|
1471
|
+
-------------------------------------------------------
|
1472
|
+
CouchRestAdapterTest: test_update_to_attr=_will_persist
|
1473
|
+
-------------------------------------------------------
|
1474
|
+
--------------------------------------------------------------
|
1475
|
+
CouchRestAdapterTest: test_will_add_class_underscorename_to_id
|
1476
|
+
--------------------------------------------------------------
|
1477
|
+
--------------------------
|
1478
|
+
LintTest: test_errors_aref
|
1479
|
+
--------------------------
|
1480
|
+
---------------------------
|
1481
|
+
LintTest: test_model_naming
|
1482
|
+
---------------------------
|
1483
|
+
-------------------------
|
1484
|
+
LintTest: test_persisted?
|
1485
|
+
-------------------------
|
1486
|
+
---------------------
|
1487
|
+
LintTest: test_to_key
|
1488
|
+
---------------------
|
1489
|
+
-----------------------
|
1490
|
+
LintTest: test_to_param
|
1491
|
+
-----------------------
|
1492
|
+
------------------------------
|
1493
|
+
LintTest: test_to_partial_path
|
1494
|
+
------------------------------
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: couch_rest_adapter
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Javier Guerra
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-07-
|
11
|
+
date: 2013-07-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|