minimodel 0.3.0 → 0.4.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.
- data/README.md +37 -0
- data/Rakefile +2 -0
- data/lib/minimodel.rb +4 -0
- data/minimodel.gemspec +2 -2
- data/spec/currency_spec.rb +6 -0
- metadata +7 -7
- data/README.txt +0 -27
data/README.md
ADDED
@@ -0,0 +1,37 @@
|
|
1
|
+
Minimodel: A little library for defining little models
|
2
|
+
======================================================
|
3
|
+
|
4
|
+
|
5
|
+
Motivation
|
6
|
+
----------
|
7
|
+
|
8
|
+
Many apps use small "read only" datasets that can easily be held in memory,
|
9
|
+
for example: currency data, country data, colour data, advertising banners,
|
10
|
+
options for select boxes, payment plans etc. Sometimes it's useful to model
|
11
|
+
this data without using a database, and that's what minimodel is for.
|
12
|
+
|
13
|
+
|
14
|
+
Example
|
15
|
+
-------
|
16
|
+
|
17
|
+
Here's how you could implement a currency model using minimodel:
|
18
|
+
|
19
|
+
```ruby
|
20
|
+
require 'minimodel'
|
21
|
+
|
22
|
+
class Currency < MiniModel
|
23
|
+
indexed_by :code
|
24
|
+
|
25
|
+
insert code: 'EUR', name: 'Euro'
|
26
|
+
insert code: 'GBP', name: 'Pound sterling'
|
27
|
+
insert code: 'USD', name: 'United States dollar'
|
28
|
+
end
|
29
|
+
```
|
30
|
+
|
31
|
+
The Currency class will respond to `#count` (returning the total number of
|
32
|
+
currencies), `#all` (returning an array of currency objects), and `#find`
|
33
|
+
(to lookup a specific currency by its code). Similar to ActiveRecord.
|
34
|
+
There's also a `load_from` class method which will load data from a YAML
|
35
|
+
file; useful for when you'd rather store the raw data outside of the class.
|
36
|
+
|
37
|
+
Take a look at `spec/*_spec.rb` for more examples. Have fun!
|
data/Rakefile
CHANGED
data/lib/minimodel.rb
CHANGED
data/minimodel.gemspec
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
s.name = 'minimodel'
|
3
|
-
s.version = '0.
|
3
|
+
s.version = '0.4.0'
|
4
4
|
s.platform = Gem::Platform::RUBY
|
5
5
|
s.authors = ['Tim Craft']
|
6
6
|
s.email = ['mail@timcraft.com']
|
7
7
|
s.homepage = 'http://github.com/timcraft/minimodel'
|
8
8
|
s.description = 'A little library for defining little models'
|
9
9
|
s.summary = 'See description'
|
10
|
-
s.files = Dir.glob('{lib,spec}/**/*') + %w(README.
|
10
|
+
s.files = Dir.glob('{lib,spec}/**/*') + %w(README.md Rakefile minimodel.gemspec)
|
11
11
|
s.add_development_dependency('activesupport', ['>= 3.0.3'])
|
12
12
|
s.add_development_dependency('activerecord', ['>= 3.0.3'])
|
13
13
|
s.require_path = 'lib'
|
data/spec/currency_spec.rb
CHANGED
@@ -65,6 +65,12 @@ describe 'Currency' do
|
|
65
65
|
end
|
66
66
|
end
|
67
67
|
|
68
|
+
describe 'keys class method' do
|
69
|
+
it 'should return an array containing all the primary keys' do
|
70
|
+
Currency.keys.must_equal(%w(EUR GBP USD INR JPY))
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
68
74
|
describe 'primary_key class method' do
|
69
75
|
it 'should return the primary key specified using #indexed_by' do
|
70
76
|
Currency.primary_key.must_equal(:code)
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: minimodel
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-04-09 00:00:00.000000000Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: activesupport
|
16
|
-
requirement: &
|
16
|
+
requirement: &508110 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: 3.0.3
|
22
22
|
type: :development
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *508110
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: activerecord
|
27
|
-
requirement: &
|
27
|
+
requirement: &487740 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,7 +32,7 @@ dependencies:
|
|
32
32
|
version: 3.0.3
|
33
33
|
type: :development
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *487740
|
36
36
|
description: A little library for defining little models
|
37
37
|
email:
|
38
38
|
- mail@timcraft.com
|
@@ -46,7 +46,7 @@ files:
|
|
46
46
|
- spec/currency_data.yml
|
47
47
|
- spec/currency_spec.rb
|
48
48
|
- spec/dutch_education_spec.rb
|
49
|
-
- README.
|
49
|
+
- README.md
|
50
50
|
- Rakefile
|
51
51
|
- minimodel.gemspec
|
52
52
|
homepage: http://github.com/timcraft/minimodel
|
data/README.txt
DELETED
@@ -1,27 +0,0 @@
|
|
1
|
-
A little library for defining little models.
|
2
|
-
|
3
|
-
Many apps use small "read only" datasets that can easily be held in memory,
|
4
|
-
for example: currency data, country data, colour data, advertising banners,
|
5
|
-
options for select boxes, payment plans etc. Sometimes it's useful to model
|
6
|
-
this data without using your database, and that's what minimodel is for.
|
7
|
-
|
8
|
-
Quick example:
|
9
|
-
|
10
|
-
require 'minimodel'
|
11
|
-
|
12
|
-
class Currency < MiniModel
|
13
|
-
indexed_by :code
|
14
|
-
|
15
|
-
insert code: 'EUR', name: 'Euro'
|
16
|
-
insert code: 'GBP', name: 'Pound sterling'
|
17
|
-
insert code: 'USD', name: 'United States dollar'
|
18
|
-
end
|
19
|
-
|
20
|
-
|
21
|
-
The Currency class will respond to #count (returning the total number of
|
22
|
-
currencies), #all (returning an array of currency objects), and #find
|
23
|
-
(to lookup a specific currency by its code). Just like ActiveRecord.
|
24
|
-
|
25
|
-
Take a look at spec/*_spec.rb for more examples.
|
26
|
-
|
27
|
-
Have fun.
|