ambry 0.3.1 → 1.0.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.
- checksums.yaml +7 -0
- data/Changelog.md +5 -0
- data/Gemfile +3 -2
- data/README.md +42 -40
- data/ambry.gemspec +3 -4
- data/lib/ambry/active_model.rb +0 -1
- data/lib/ambry/adapters/yaml.rb +1 -1
- data/lib/ambry/version.rb +3 -3
- data/spec/active_model_spec.rb +1 -9
- data/spec/file_adapter_spec.rb +1 -1
- data/spec/mapper_spec.rb +2 -2
- data/spec/model_spec.rb +13 -7
- data/spec/spec_helper.rb +1 -2
- metadata +28 -61
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: e2b7327c7d7de90b929bc2a992ae5b5cab7041c2
|
4
|
+
data.tar.gz: 757b57a007b9158397cb4977ae0273f0d6266efc
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 3a7a675b2df9b66280fda61a5d02799a9dc74beb01255b201cc57966f74e56acaf9d6315bdd42d573e7d61fb109dd11ef6f1d4b0c88a742181319b61d21f86c1
|
7
|
+
data.tar.gz: 55d7932094033b8200045816919ba27868767e01c54fc23a2cdd6595aa54bd346206791ccd0202eee2a40f9e303a627d7bd8572807413ea3d591b4f5a0ec44ff
|
data/Changelog.md
CHANGED
@@ -1,5 +1,10 @@
|
|
1
1
|
# Ambry Changelog
|
2
2
|
|
3
|
+
## [1.0.0](https://github.com/norman/ambry/tree/1.0.0) - 2016-07-22 ([diff](https://github.com/norman/ambry/compare/0.3.1...1.0.0))
|
4
|
+
|
5
|
+
* Make ambry compatible with Rails 5
|
6
|
+
* Drop `ActiveModel::Serializers::Xml` support
|
7
|
+
|
3
8
|
## [0.3.1](https://github.com/norman/ambry/tree/0.3.1) - 2012-06-20 ([diff](https://github.com/norman/ambry/compare/0.3.0...0.3.1))
|
4
9
|
|
5
10
|
### [Norman Clarke](https://github.com/norman)
|
data/Gemfile
CHANGED
@@ -1,2 +1,3 @@
|
|
1
|
-
source
|
2
|
-
|
1
|
+
source "https://rubygems.org"
|
2
|
+
|
3
|
+
gemspec
|
data/README.md
CHANGED
@@ -14,49 +14,51 @@ quick samples.
|
|
14
14
|
|
15
15
|
## A quick tour
|
16
16
|
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
def in_region(region)
|
32
|
-
find {|c| c.region == region)
|
33
|
-
end
|
34
|
-
|
35
|
-
def alphabetical
|
36
|
-
sort_by {|c| c.name}
|
37
|
-
end
|
38
|
-
end
|
39
|
-
|
40
|
-
# Root filter, can be used to setup relations.
|
41
|
-
def regions
|
42
|
-
Region.find {|r| r.id == region}
|
43
|
-
end
|
17
|
+
```ruby
|
18
|
+
# Create a model.
|
19
|
+
class Country
|
20
|
+
# Turn any Ruby object into a Ambry model by extending this module.
|
21
|
+
extend Ambry::Model
|
22
|
+
|
23
|
+
# The first field listed here will be the "primary key."
|
24
|
+
field :tld, :name
|
25
|
+
|
26
|
+
# Chainable filters, sort of like Active Record scopes.
|
27
|
+
filters do
|
28
|
+
def big
|
29
|
+
find {|c| c.population > 100_000_000 }
|
30
|
+
end
|
44
31
|
|
32
|
+
def in_region(region)
|
33
|
+
find {|c| c.region == region }
|
45
34
|
end
|
46
35
|
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
36
|
+
def alphabetical
|
37
|
+
sort_by {|c| c.name }
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
# Root filter, can be used to setup relations.
|
42
|
+
def regions
|
43
|
+
Region.find {|r| r.id == region }
|
44
|
+
end
|
45
|
+
|
46
|
+
end
|
47
|
+
|
48
|
+
# create some contries
|
49
|
+
Country.create :tld => "AR", :name => "Argentina", :region => :america, :population => 40_000_000
|
50
|
+
Country.create :tld => "CA", :name => "Canada", :region => :america, :population => 34_000_000
|
51
|
+
Country.create :tld => "JP", :name => "Japan", :region => :asia, :population => 127_000_000
|
52
|
+
Country.create :tld => "CN", :name => "China", :region => :asia, :population => 1_300_000_000
|
53
|
+
# etc.
|
54
|
+
|
55
|
+
# Do some searches
|
56
|
+
big_asian_countries = Country.big.in_region(:asia)
|
57
|
+
countries_that_start_with_c = Country.find {|c| c.name =~ /^C/ }
|
58
|
+
# #first and #last only make sense if you run Ruby 1.9 (creation order) or explicitly specified an order
|
59
|
+
first_alphabetical = Country.alphabetical.first
|
60
|
+
last_alphabetical = Country.alphabetical.last
|
61
|
+
```
|
60
62
|
|
61
63
|
## When should I use Ambry?
|
62
64
|
|
data/ambry.gemspec
CHANGED
@@ -17,9 +17,8 @@ Gem::Specification.new do |s|
|
|
17
17
|
flexible searching and storage.
|
18
18
|
EOD
|
19
19
|
s.add_development_dependency "ffaker"
|
20
|
-
s.add_development_dependency "minitest", "~>
|
21
|
-
s.add_development_dependency "
|
22
|
-
s.add_development_dependency "
|
23
|
-
s.add_development_dependency "activemodel", "~> 3.0"
|
20
|
+
s.add_development_dependency "minitest", "~> 5.1"
|
21
|
+
s.add_development_dependency "activesupport", "~> 5.0"
|
22
|
+
s.add_development_dependency "activemodel", "~> 5.0"
|
24
23
|
s.add_development_dependency "rake"
|
25
24
|
end
|
data/lib/ambry/active_model.rb
CHANGED
data/lib/ambry/adapters/yaml.rb
CHANGED
data/lib/ambry/version.rb
CHANGED
data/spec/active_model_spec.rb
CHANGED
@@ -81,15 +81,7 @@ describe Ambry::ActiveModel do
|
|
81
81
|
it "should serialize" do
|
82
82
|
json = @model.to_json
|
83
83
|
refute_nil @model.to_json
|
84
|
-
assert_match
|
85
|
-
end
|
86
|
-
end
|
87
|
-
|
88
|
-
describe "#to_xml" do
|
89
|
-
it "should serialize to XML" do
|
90
|
-
xml = @model.to_xml
|
91
|
-
refute_nil xml
|
92
|
-
assert_match /<author>Leo Tolstoy<\/author>/, xml
|
84
|
+
assert_match(/"author":"Leo Tolstoy"/, json)
|
93
85
|
end
|
94
86
|
end
|
95
87
|
|
data/spec/file_adapter_spec.rb
CHANGED
data/spec/mapper_spec.rb
CHANGED
@@ -62,12 +62,12 @@ describe Ambry::Mapper do
|
|
62
62
|
end
|
63
63
|
|
64
64
|
it "should set value#to_hash as value for key" do
|
65
|
-
|
65
|
+
Person.mapper[:bogus] = Value.new(:a => "b")
|
66
66
|
assert_equal "b", Person.mapper[:bogus][:a]
|
67
67
|
end
|
68
68
|
|
69
69
|
it "should freeze the value" do
|
70
|
-
|
70
|
+
Person.mapper[:bogus] = Value.new(:a => "b")
|
71
71
|
assert Person.mapper[:bogus].frozen?
|
72
72
|
end
|
73
73
|
end
|
data/spec/model_spec.rb
CHANGED
@@ -1,7 +1,6 @@
|
|
1
1
|
require File.expand_path("../spec_helper", __FILE__)
|
2
2
|
|
3
3
|
describe Ambry::Model do
|
4
|
-
|
5
4
|
before { load_fixtures }
|
6
5
|
after { Ambry.adapters.clear }
|
7
6
|
|
@@ -23,8 +22,8 @@ describe Ambry::Model do
|
|
23
22
|
end
|
24
23
|
|
25
24
|
it "calls the block after setting sttributes" do
|
26
|
-
|
27
|
-
assert_equal "bar",
|
25
|
+
person = Person.new(:name => "foo") {|p| p.name = "bar"}
|
26
|
+
assert_equal "bar", person.name
|
28
27
|
end
|
29
28
|
|
30
29
|
it "can set attributes from a hash" do
|
@@ -34,14 +33,21 @@ describe Ambry::Model do
|
|
34
33
|
|
35
34
|
# This means your custom accessors will be invoked.
|
36
35
|
it "invokes attr writers" do
|
37
|
-
Person
|
38
|
-
|
36
|
+
class Person
|
37
|
+
def name=(val); @name = "doe"; end
|
38
|
+
end
|
39
|
+
p = Person.new(:name => "joe")
|
40
|
+
class Person
|
41
|
+
def name=(val); @name = val; end
|
42
|
+
end
|
43
|
+
|
44
|
+
assert_equal "doe", p.name
|
39
45
|
end
|
40
46
|
|
41
47
|
# Don't loop through params that potentially came from the Internet,
|
42
48
|
# because we need to cast keys to Symbol, and that could leak memory.
|
43
49
|
it "iterates over attribute names, not params" do
|
44
|
-
Person.attribute_names
|
50
|
+
assert_send([Person.attribute_names, :each])
|
45
51
|
Person.new(:name => "joe")
|
46
52
|
end
|
47
53
|
end
|
@@ -161,7 +167,7 @@ describe Ambry::Model do
|
|
161
167
|
describe "#save" do
|
162
168
|
it "passes itself to Mapper#put" do
|
163
169
|
p = Person.new(:name => "hello")
|
164
|
-
Person.mapper
|
170
|
+
assert_send([Person.mapper, :put, p])
|
165
171
|
p.save
|
166
172
|
end
|
167
173
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -7,7 +7,6 @@ require "bundler/setup"
|
|
7
7
|
require "ambry"
|
8
8
|
require "ambry/adapters/yaml"
|
9
9
|
require 'minitest/spec'
|
10
|
-
require "mocha"
|
11
10
|
require "fileutils"
|
12
11
|
require "ffaker"
|
13
12
|
|
@@ -39,4 +38,4 @@ def load_fixtures
|
|
39
38
|
Person.use :main
|
40
39
|
end
|
41
40
|
|
42
|
-
MiniTest
|
41
|
+
MiniTest.autorun
|
metadata
CHANGED
@@ -1,115 +1,89 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ambry
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
5
|
-
prerelease:
|
4
|
+
version: 1.0.0
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Norman Clarke
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
11
|
+
date: 2016-07-22 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: ffaker
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
|
-
- -
|
17
|
+
- - ">="
|
20
18
|
- !ruby/object:Gem::Version
|
21
19
|
version: '0'
|
22
20
|
type: :development
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
|
-
- -
|
24
|
+
- - ">="
|
28
25
|
- !ruby/object:Gem::Version
|
29
26
|
version: '0'
|
30
27
|
- !ruby/object:Gem::Dependency
|
31
28
|
name: minitest
|
32
29
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
30
|
requirements:
|
35
|
-
- - ~>
|
31
|
+
- - "~>"
|
36
32
|
- !ruby/object:Gem::Version
|
37
|
-
version:
|
33
|
+
version: '5.1'
|
38
34
|
type: :development
|
39
35
|
prerelease: false
|
40
36
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
37
|
requirements:
|
43
|
-
- - ~>
|
38
|
+
- - "~>"
|
44
39
|
- !ruby/object:Gem::Version
|
45
|
-
version:
|
46
|
-
- !ruby/object:Gem::Dependency
|
47
|
-
name: mocha
|
48
|
-
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
|
-
requirements:
|
51
|
-
- - ! '>='
|
52
|
-
- !ruby/object:Gem::Version
|
53
|
-
version: '0'
|
54
|
-
type: :development
|
55
|
-
prerelease: false
|
56
|
-
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
|
-
requirements:
|
59
|
-
- - ! '>='
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
version: '0'
|
40
|
+
version: '5.1'
|
62
41
|
- !ruby/object:Gem::Dependency
|
63
42
|
name: activesupport
|
64
43
|
requirement: !ruby/object:Gem::Requirement
|
65
|
-
none: false
|
66
44
|
requirements:
|
67
|
-
- - ~>
|
45
|
+
- - "~>"
|
68
46
|
- !ruby/object:Gem::Version
|
69
|
-
version: '
|
47
|
+
version: '5.0'
|
70
48
|
type: :development
|
71
49
|
prerelease: false
|
72
50
|
version_requirements: !ruby/object:Gem::Requirement
|
73
|
-
none: false
|
74
51
|
requirements:
|
75
|
-
- - ~>
|
52
|
+
- - "~>"
|
76
53
|
- !ruby/object:Gem::Version
|
77
|
-
version: '
|
54
|
+
version: '5.0'
|
78
55
|
- !ruby/object:Gem::Dependency
|
79
56
|
name: activemodel
|
80
57
|
requirement: !ruby/object:Gem::Requirement
|
81
|
-
none: false
|
82
58
|
requirements:
|
83
|
-
- - ~>
|
59
|
+
- - "~>"
|
84
60
|
- !ruby/object:Gem::Version
|
85
|
-
version: '
|
61
|
+
version: '5.0'
|
86
62
|
type: :development
|
87
63
|
prerelease: false
|
88
64
|
version_requirements: !ruby/object:Gem::Requirement
|
89
|
-
none: false
|
90
65
|
requirements:
|
91
|
-
- - ~>
|
66
|
+
- - "~>"
|
92
67
|
- !ruby/object:Gem::Version
|
93
|
-
version: '
|
68
|
+
version: '5.0'
|
94
69
|
- !ruby/object:Gem::Dependency
|
95
70
|
name: rake
|
96
71
|
requirement: !ruby/object:Gem::Requirement
|
97
|
-
none: false
|
98
72
|
requirements:
|
99
|
-
- -
|
73
|
+
- - ">="
|
100
74
|
- !ruby/object:Gem::Version
|
101
75
|
version: '0'
|
102
76
|
type: :development
|
103
77
|
prerelease: false
|
104
78
|
version_requirements: !ruby/object:Gem::Requirement
|
105
|
-
none: false
|
106
79
|
requirements:
|
107
|
-
- -
|
80
|
+
- - ">="
|
108
81
|
- !ruby/object:Gem::Version
|
109
82
|
version: '0'
|
110
|
-
description:
|
111
|
-
|
112
|
-
|
83
|
+
description: |2
|
84
|
+
Ambry is not an ORM, man! It's a database and ORM replacement for (mostly)
|
85
|
+
static models and small datasets. It provides ActiveModel compatibility, and
|
86
|
+
flexible searching and storage.
|
113
87
|
email: norman@njclarke.com
|
114
88
|
executables: []
|
115
89
|
extensions: []
|
@@ -145,33 +119,26 @@ files:
|
|
145
119
|
- spec/spec_helper.rb
|
146
120
|
homepage: http://github.com/norman/ambry
|
147
121
|
licenses: []
|
122
|
+
metadata: {}
|
148
123
|
post_install_message:
|
149
124
|
rdoc_options: []
|
150
125
|
require_paths:
|
151
126
|
- lib
|
152
127
|
required_ruby_version: !ruby/object:Gem::Requirement
|
153
|
-
none: false
|
154
128
|
requirements:
|
155
|
-
- -
|
129
|
+
- - ">="
|
156
130
|
- !ruby/object:Gem::Version
|
157
131
|
version: '0'
|
158
|
-
segments:
|
159
|
-
- 0
|
160
|
-
hash: -2496886611082865367
|
161
132
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
162
|
-
none: false
|
163
133
|
requirements:
|
164
|
-
- -
|
134
|
+
- - ">="
|
165
135
|
- !ruby/object:Gem::Version
|
166
136
|
version: '0'
|
167
|
-
segments:
|
168
|
-
- 0
|
169
|
-
hash: -2496886611082865367
|
170
137
|
requirements: []
|
171
|
-
rubyforge_project:
|
172
|
-
rubygems_version:
|
138
|
+
rubyforge_project: "[none]"
|
139
|
+
rubygems_version: 2.5.1
|
173
140
|
signing_key:
|
174
|
-
specification_version:
|
141
|
+
specification_version: 4
|
175
142
|
summary: An ActiveModel-compatible ORM-like library for storing model instances in
|
176
143
|
an in-memory Hash.
|
177
144
|
test_files: []
|