file_db 1.1.1 → 1.2.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 +4 -4
- data/.travis.yml +5 -0
- data/README.md +23 -1
- data/lib/file_db/data.rb +6 -0
- data/lib/file_db/filter.rb +51 -0
- data/lib/file_db/model.rb +3 -0
- data/lib/file_db/version.rb +1 -1
- data/lib/file_db.rb +2 -0
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7798e5114b8789ee25241dc029782dd34e8309e4
|
4
|
+
data.tar.gz: 7e473cb3ca46e0d743033ccdd7fd0d84fbe3b2bd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4ec1a8fefdcb89fc8e6ad610bc200bb88c00695720e54c669222cc0b5f74229c6dcf09a042bf75c6897e1f3c1c8469a13f3375b1d1eb741dcba708fd36c836cd
|
7
|
+
data.tar.gz: a34aff81d19ff188f4320abef92e20dd3d3b4484fd8f8475ee18db467a897c5b954fa4613a091781878967ce3ee86d3503a864dbcefb9aae1ccd9d8ee99264d5
|
data/.travis.yml
CHANGED
data/README.md
CHANGED
@@ -7,7 +7,7 @@ FileDb is a small type of database. It stores all data for a model into CSV file
|
|
7
7
|
hm, yeah. just add this to your Gemfile:
|
8
8
|
|
9
9
|
```ruby
|
10
|
-
gem 'file_db', '~> 1.
|
10
|
+
gem 'file_db', '~> 1.2.0'
|
11
11
|
```
|
12
12
|
|
13
13
|
And then execute:
|
@@ -188,6 +188,28 @@ User.find(1)
|
|
188
188
|
-> nil
|
189
189
|
```
|
190
190
|
|
191
|
+
It's also possible to set before and after hooks
|
192
|
+
|
193
|
+
```ruby
|
194
|
+
class User < FileDb::Model
|
195
|
+
columns :name, :rand
|
196
|
+
before :save { |user|
|
197
|
+
user.name = 'another username'
|
198
|
+
puts "username changed"
|
199
|
+
}
|
200
|
+
|
201
|
+
after :save {
|
202
|
+
puts "updated"
|
203
|
+
}
|
204
|
+
end
|
205
|
+
```
|
206
|
+
|
207
|
+
You can use the following filter actions (for before and after):
|
208
|
+
|
209
|
+
* :save
|
210
|
+
* :delete
|
211
|
+
* :initialize
|
212
|
+
|
191
213
|
|
192
214
|
You want to use another table than `user`? So just configure it:
|
193
215
|
|
data/lib/file_db/data.rb
CHANGED
@@ -1,15 +1,21 @@
|
|
1
1
|
module FileDb
|
2
2
|
module Data
|
3
3
|
def initialize params= {}
|
4
|
+
before :initialize
|
4
5
|
load_params_into_model params
|
6
|
+
after :initialize
|
5
7
|
end
|
6
8
|
|
7
9
|
def delete
|
10
|
+
before :delete
|
8
11
|
table.delete(id)
|
12
|
+
after :delete
|
9
13
|
end
|
10
14
|
|
11
15
|
def save
|
16
|
+
before :save
|
12
17
|
table.update_record self
|
18
|
+
after :save
|
13
19
|
end
|
14
20
|
|
15
21
|
def persisted?
|
@@ -0,0 +1,51 @@
|
|
1
|
+
module FileDb
|
2
|
+
module Filter
|
3
|
+
module ClassMethods
|
4
|
+
def before type, &block
|
5
|
+
raise 'no block given' unless block_given?
|
6
|
+
add_filter :before, type, &block
|
7
|
+
end
|
8
|
+
|
9
|
+
def after type, &block
|
10
|
+
raise 'no block given' unless block_given?
|
11
|
+
add_filter :after, type, &block
|
12
|
+
end
|
13
|
+
|
14
|
+
def file_db_filters
|
15
|
+
@file_db_filters
|
16
|
+
end
|
17
|
+
|
18
|
+
private
|
19
|
+
|
20
|
+
def add_filter runtime, type, &block
|
21
|
+
@file_db_filters ||= init_filter
|
22
|
+
@file_db_filters[runtime.to_sym][type.to_sym] << block
|
23
|
+
end
|
24
|
+
|
25
|
+
def init_filter
|
26
|
+
{ before: Hash.new([]), after: Hash.new([]) }
|
27
|
+
end
|
28
|
+
|
29
|
+
end
|
30
|
+
|
31
|
+
module InstanceMethods
|
32
|
+
def before type
|
33
|
+
run_filters :before, type
|
34
|
+
end
|
35
|
+
|
36
|
+
def after type
|
37
|
+
run_filters :after, type
|
38
|
+
end
|
39
|
+
|
40
|
+
private
|
41
|
+
|
42
|
+
def run_filters runtime, type
|
43
|
+
return unless self.class.file_db_filters[runtime.to_sym]
|
44
|
+
self.class.file_db_filters[runtime.to_sym][type.to_sym].each do |filter|
|
45
|
+
filter.call(self)
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
data/lib/file_db/model.rb
CHANGED
data/lib/file_db/version.rb
CHANGED
data/lib/file_db.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: file_db
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Robert Starke
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2017-02-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -77,6 +77,7 @@ files:
|
|
77
77
|
- lib/file_db/configuration.rb
|
78
78
|
- lib/file_db/data.rb
|
79
79
|
- lib/file_db/database_manager.rb
|
80
|
+
- lib/file_db/filter.rb
|
80
81
|
- lib/file_db/model.rb
|
81
82
|
- lib/file_db/query.rb
|
82
83
|
- lib/file_db/system/database.rb
|
@@ -103,7 +104,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
103
104
|
version: '0'
|
104
105
|
requirements: []
|
105
106
|
rubyforge_project:
|
106
|
-
rubygems_version: 2.
|
107
|
+
rubygems_version: 2.6.8
|
107
108
|
signing_key:
|
108
109
|
specification_version: 4
|
109
110
|
summary: Use CSV Files like a Database with ActiveRecord Feeling.
|