ork-hooks 0.0.1
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/README.md +75 -0
- data/lib/ork/hooks.rb +70 -0
- data/ork-hooks.gemspec +25 -0
- data/rakefile +10 -0
- data/test/helper.rb +23 -0
- data/test/hooks_test.rb +112 -0
- metadata +114 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 404c0cc428845a9e2772f37e03bbe63dd93496fd
|
4
|
+
data.tar.gz: d0dd37d728f6fa70814ae79b22492d71fbddd847
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 08b06478581cb6082df398aee2e8316aae04eae347f4c6305d514b5b5e3bbbfb701847c38a145b38ddc68bc793ac63284b4938c110f12a98c856f88bc1f54ff4
|
7
|
+
data.tar.gz: b641b503d16882b8a4571073c8c804c1836ec4fd44c05202416577f9f39d315688db1cb8738a63f2fd766a8592ebaacde31dcca4c545fd9cecd5e4fc07c11d2b
|
data/README.md
ADDED
@@ -0,0 +1,75 @@
|
|
1
|
+
ork-hooks
|
2
|
+
==============
|
3
|
+
|
4
|
+
[](http://badge.fury.io/rb/ork-hooks)
|
5
|
+
[](http://travis-ci.org/emancu/ork-hooks)
|
6
|
+
[](https://codeclimate.com/github/emancu/ork-hooks)
|
7
|
+
[](https://coveralls.io/r/emancu/ork-hooks)
|
8
|
+
[](https://gemnasium.com/emancu/ork-hooks)
|
9
|
+
|
10
|
+
|
11
|
+
Timestamps for your Ork Models
|
12
|
+
|
13
|
+
## Dependencies
|
14
|
+
|
15
|
+
`ork-hooks` requires:
|
16
|
+
|
17
|
+
* Ruby 1.9 or later.
|
18
|
+
* `riak-client` to connect to **Riak**.
|
19
|
+
* `ork` 0.1.4 or later.
|
20
|
+
|
21
|
+
Install Dependencies using `dep` is easy as run:
|
22
|
+
|
23
|
+
$ dep insatll
|
24
|
+
|
25
|
+
## Installation
|
26
|
+
|
27
|
+
Install [Riak](http://basho.com/riak/) with your package manager:
|
28
|
+
|
29
|
+
$ brew install riak
|
30
|
+
|
31
|
+
Or download it from [Riak's download page](http://docs.basho.com/riak/latest/downloads/)
|
32
|
+
|
33
|
+
Once you have it installed, you can execute `riak start` and it will run on `localhost:8098` by default.
|
34
|
+
|
35
|
+
If you don't have `ork-hooks`, try this:
|
36
|
+
|
37
|
+
$ gem install ork-hooks
|
38
|
+
|
39
|
+
|
40
|
+
## Overview
|
41
|
+
|
42
|
+
`Ork::Hooks` creates the following hooks
|
43
|
+
|
44
|
+
- before_create
|
45
|
+
- before_delete
|
46
|
+
- before_update
|
47
|
+
- before_save
|
48
|
+
|
49
|
+
- after_create
|
50
|
+
- after_delete
|
51
|
+
- after_update
|
52
|
+
- after_save
|
53
|
+
|
54
|
+
## Getting started
|
55
|
+
|
56
|
+
Include `Ork::Hooks` module in your `Ork::Document` class.
|
57
|
+
|
58
|
+
```ruby
|
59
|
+
class SomeDocument
|
60
|
+
include Ork::Document
|
61
|
+
include Ork::Hooks
|
62
|
+
|
63
|
+
attribute :message
|
64
|
+
end
|
65
|
+
```
|
66
|
+
|
67
|
+
Enjoy your models with hooks!
|
68
|
+
|
69
|
+
## Running the Tests
|
70
|
+
|
71
|
+
Adjust the variable to point to a test riak database. Default is `http://localhost:8098`
|
72
|
+
|
73
|
+
```bash
|
74
|
+
$ ORK_RIAK_URL='http://localhost:8198' rake
|
75
|
+
```
|
data/lib/ork/hooks.rb
ADDED
@@ -0,0 +1,70 @@
|
|
1
|
+
module Ork
|
2
|
+
module Hooks
|
3
|
+
VERSION = '0.0.1'
|
4
|
+
|
5
|
+
def self.included(klass)
|
6
|
+
raise Ork::NotOrkObject unless klass.included_modules.include? Ork::Document
|
7
|
+
|
8
|
+
klass.class_eval do |base|
|
9
|
+
def save_with_hooks
|
10
|
+
is_new = self.new?
|
11
|
+
|
12
|
+
before_create if is_new
|
13
|
+
before_update unless is_new
|
14
|
+
before_save
|
15
|
+
|
16
|
+
result = save_without_hooks
|
17
|
+
|
18
|
+
after_create if is_new
|
19
|
+
after_update unless is_new
|
20
|
+
after_save
|
21
|
+
|
22
|
+
result
|
23
|
+
end
|
24
|
+
|
25
|
+
alias :save_without_hooks :save
|
26
|
+
alias :save :save_with_hooks
|
27
|
+
|
28
|
+
def delete_with_hooks
|
29
|
+
before_delete
|
30
|
+
|
31
|
+
result = delete_without_hooks
|
32
|
+
|
33
|
+
after_delete
|
34
|
+
|
35
|
+
result
|
36
|
+
end
|
37
|
+
|
38
|
+
alias :delete_without_hooks :delete
|
39
|
+
alias :delete :delete_with_hooks
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
protected
|
44
|
+
|
45
|
+
def before_create
|
46
|
+
end
|
47
|
+
|
48
|
+
def before_update
|
49
|
+
end
|
50
|
+
|
51
|
+
def before_save
|
52
|
+
end
|
53
|
+
|
54
|
+
def before_delete
|
55
|
+
end
|
56
|
+
|
57
|
+
def after_create
|
58
|
+
end
|
59
|
+
|
60
|
+
def after_update
|
61
|
+
end
|
62
|
+
|
63
|
+
def after_save
|
64
|
+
end
|
65
|
+
|
66
|
+
def after_delete
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
data/ork-hooks.gemspec
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
Gem::Specification.new do |s|
|
2
|
+
s.name = 'ork-hooks'
|
3
|
+
s.version = '0.0.1'
|
4
|
+
s.date = Time.now.strftime('%Y-%m-%d')
|
5
|
+
s.summary = 'A hooks to your Ork Documents'
|
6
|
+
s.description = 'Add the clasic callbacks to the Ork::Documents'
|
7
|
+
s.authors = ['Emiliano Mancuso']
|
8
|
+
s.email = ['emiliano.mancuso@gmail.com']
|
9
|
+
s.homepage = 'http://github.com/emancu/ork-hooks'
|
10
|
+
s.license = 'MIT'
|
11
|
+
|
12
|
+
s.files = Dir[
|
13
|
+
'README.md',
|
14
|
+
'rakefile',
|
15
|
+
'lib/**/*.rb',
|
16
|
+
'*.gemspec'
|
17
|
+
]
|
18
|
+
s.test_files = Dir['test/*.*']
|
19
|
+
|
20
|
+
s.add_runtime_dependency 'riak-client', '~> 1.4'
|
21
|
+
s.add_runtime_dependency 'ork', '~> 0.1', '>= 0.1.4'
|
22
|
+
s.add_development_dependency 'protest', '~> 0'
|
23
|
+
s.add_development_dependency 'coveralls', '~> 0'
|
24
|
+
end
|
25
|
+
|
data/rakefile
ADDED
data/test/helper.rb
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
$LOAD_PATH.unshift(File.expand_path(File.dirname(__FILE__) + "/../lib"))
|
2
|
+
|
3
|
+
require 'coveralls'
|
4
|
+
Coveralls.wear!
|
5
|
+
|
6
|
+
SimpleCov.start do
|
7
|
+
project_name "Ork-Hooks"
|
8
|
+
command_name "Protest"
|
9
|
+
|
10
|
+
add_filter "/test/"
|
11
|
+
end
|
12
|
+
|
13
|
+
require "rubygems"
|
14
|
+
require "protest"
|
15
|
+
require "ork"
|
16
|
+
require 'ork/hooks'
|
17
|
+
|
18
|
+
Riak.disable_list_keys_warnings = true
|
19
|
+
Protest.report_with(:progress)
|
20
|
+
|
21
|
+
def deny(condition, message="Expected condition to be unsatisfied")
|
22
|
+
assert !condition, message
|
23
|
+
end
|
data/test/hooks_test.rb
ADDED
@@ -0,0 +1,112 @@
|
|
1
|
+
require_relative 'helper'
|
2
|
+
|
3
|
+
class Event
|
4
|
+
include Ork::Document
|
5
|
+
include Ork::Hooks
|
6
|
+
|
7
|
+
@@hooks_called = []
|
8
|
+
end
|
9
|
+
|
10
|
+
Protest.describe 'Ork::Hooks' do
|
11
|
+
context 'include Ork::Hooks' do
|
12
|
+
test 'raise an error if it is not a Ork::Document' do
|
13
|
+
assert_raise Ork::NotOrkObject do
|
14
|
+
class NotADocument
|
15
|
+
include Ork::Hooks
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
test 'add hooks method' do
|
21
|
+
event = Event.new
|
22
|
+
|
23
|
+
assert event.respond_to? :before_create
|
24
|
+
assert event.respond_to? :before_delete
|
25
|
+
assert event.respond_to? :before_update
|
26
|
+
assert event.respond_to? :before_save
|
27
|
+
|
28
|
+
assert event.respond_to? :after_create
|
29
|
+
assert event.respond_to? :after_delete
|
30
|
+
assert event.respond_to? :after_update
|
31
|
+
assert event.respond_to? :after_save
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
context '' do
|
36
|
+
class Event
|
37
|
+
def hooks_called
|
38
|
+
@@hooks_called
|
39
|
+
end
|
40
|
+
|
41
|
+
def before_create
|
42
|
+
@@hooks_called << :before_create
|
43
|
+
end
|
44
|
+
|
45
|
+
def before_update
|
46
|
+
@@hooks_called << :before_update
|
47
|
+
end
|
48
|
+
|
49
|
+
def before_save
|
50
|
+
@@hooks_called << :before_save
|
51
|
+
end
|
52
|
+
|
53
|
+
def before_delete
|
54
|
+
@@hooks_called << :before_delete
|
55
|
+
end
|
56
|
+
|
57
|
+
def after_create
|
58
|
+
@@hooks_called << :after_create
|
59
|
+
end
|
60
|
+
|
61
|
+
def after_update
|
62
|
+
@@hooks_called << :after_update
|
63
|
+
end
|
64
|
+
|
65
|
+
def after_save
|
66
|
+
@@hooks_called << :after_save
|
67
|
+
end
|
68
|
+
|
69
|
+
def after_delete
|
70
|
+
@@hooks_called << :after_delete
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
context 'create' do
|
75
|
+
test 'hooks were called in order' do
|
76
|
+
@event = Event.create
|
77
|
+
|
78
|
+
assert_equal :before_create, @event.hooks_called.shift
|
79
|
+
assert_equal :before_save, @event.hooks_called.shift
|
80
|
+
assert_equal :after_create, @event.hooks_called.shift
|
81
|
+
assert_equal :after_save, @event.hooks_called.shift
|
82
|
+
assert @event.hooks_called.empty?
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
context 'update' do
|
87
|
+
test 'hooks were called in order' do
|
88
|
+
@event = Event.create
|
89
|
+
@event.hooks_called.replace []
|
90
|
+
@event.save
|
91
|
+
|
92
|
+
assert_equal :before_update, @event.hooks_called.shift
|
93
|
+
assert_equal :before_save, @event.hooks_called.shift
|
94
|
+
assert_equal :after_update, @event.hooks_called.shift
|
95
|
+
assert_equal :after_save, @event.hooks_called.shift
|
96
|
+
assert @event.hooks_called.empty?
|
97
|
+
end
|
98
|
+
end
|
99
|
+
|
100
|
+
context 'delete' do
|
101
|
+
test 'hooks were called in order' do
|
102
|
+
@event = Event.create
|
103
|
+
@event.hooks_called.replace []
|
104
|
+
@event.delete
|
105
|
+
|
106
|
+
assert_equal :before_delete, @event.hooks_called.shift
|
107
|
+
assert_equal :after_delete, @event.hooks_called.shift
|
108
|
+
assert @event.hooks_called.empty?
|
109
|
+
end
|
110
|
+
end
|
111
|
+
end
|
112
|
+
end
|
metadata
ADDED
@@ -0,0 +1,114 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: ork-hooks
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Emiliano Mancuso
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2014-02-16 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: riak-client
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.4'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.4'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: ork
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0.1'
|
34
|
+
- - ">="
|
35
|
+
- !ruby/object:Gem::Version
|
36
|
+
version: 0.1.4
|
37
|
+
type: :runtime
|
38
|
+
prerelease: false
|
39
|
+
version_requirements: !ruby/object:Gem::Requirement
|
40
|
+
requirements:
|
41
|
+
- - "~>"
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: '0.1'
|
44
|
+
- - ">="
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: 0.1.4
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: protest
|
49
|
+
requirement: !ruby/object:Gem::Requirement
|
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
|
+
requirements:
|
58
|
+
- - "~>"
|
59
|
+
- !ruby/object:Gem::Version
|
60
|
+
version: '0'
|
61
|
+
- !ruby/object:Gem::Dependency
|
62
|
+
name: coveralls
|
63
|
+
requirement: !ruby/object:Gem::Requirement
|
64
|
+
requirements:
|
65
|
+
- - "~>"
|
66
|
+
- !ruby/object:Gem::Version
|
67
|
+
version: '0'
|
68
|
+
type: :development
|
69
|
+
prerelease: false
|
70
|
+
version_requirements: !ruby/object:Gem::Requirement
|
71
|
+
requirements:
|
72
|
+
- - "~>"
|
73
|
+
- !ruby/object:Gem::Version
|
74
|
+
version: '0'
|
75
|
+
description: Add the clasic callbacks to the Ork::Documents
|
76
|
+
email:
|
77
|
+
- emiliano.mancuso@gmail.com
|
78
|
+
executables: []
|
79
|
+
extensions: []
|
80
|
+
extra_rdoc_files: []
|
81
|
+
files:
|
82
|
+
- README.md
|
83
|
+
- lib/ork/hooks.rb
|
84
|
+
- ork-hooks.gemspec
|
85
|
+
- rakefile
|
86
|
+
- test/helper.rb
|
87
|
+
- test/hooks_test.rb
|
88
|
+
homepage: http://github.com/emancu/ork-hooks
|
89
|
+
licenses:
|
90
|
+
- MIT
|
91
|
+
metadata: {}
|
92
|
+
post_install_message:
|
93
|
+
rdoc_options: []
|
94
|
+
require_paths:
|
95
|
+
- lib
|
96
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
97
|
+
requirements:
|
98
|
+
- - ">="
|
99
|
+
- !ruby/object:Gem::Version
|
100
|
+
version: '0'
|
101
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
102
|
+
requirements:
|
103
|
+
- - ">="
|
104
|
+
- !ruby/object:Gem::Version
|
105
|
+
version: '0'
|
106
|
+
requirements: []
|
107
|
+
rubyforge_project:
|
108
|
+
rubygems_version: 2.2.1
|
109
|
+
signing_key:
|
110
|
+
specification_version: 4
|
111
|
+
summary: A hooks to your Ork Documents
|
112
|
+
test_files:
|
113
|
+
- test/helper.rb
|
114
|
+
- test/hooks_test.rb
|