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.
@@ -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
@@ -0,0 +1,75 @@
1
+ ork-hooks
2
+ ==============
3
+
4
+ [![Gem Version](https://badge.fury.io/rb/ork-hooks.png)](http://badge.fury.io/rb/ork-hooks)
5
+ [![Build Status](https://secure.travis-ci.org/emancu/ork-hooks.png)](http://travis-ci.org/emancu/ork-hooks)
6
+ [![Code Climate](https://codeclimate.com/github/emancu/ork-hooks.png)](https://codeclimate.com/github/emancu/ork-hooks)
7
+ [![Coverage Status](https://coveralls.io/repos/emancu/ork-hooks/badge.png)](https://coveralls.io/r/emancu/ork-hooks)
8
+ [![Dependency Status](https://gemnasium.com/emancu/ork-hooks.png)](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
+ ```
@@ -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
+
@@ -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
+
@@ -0,0 +1,10 @@
1
+ task :default => :test
2
+
3
+ ENV['ORK_RIAK_URL'] ||= 'http://localhost:8098'
4
+
5
+ desc 'Run tests'
6
+ task :test do
7
+ require File.expand_path("./test/helper", File.dirname(__FILE__))
8
+
9
+ Dir["test/**/*_test.rb"].each { |file| load file }
10
+ end
@@ -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
@@ -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