grand_central 0.2.0 → 0.2.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 +4 -4
- data/grand_central.gemspec +0 -1
- data/lib/grand_central.rb +6 -2
- data/lib/grand_central/action.rb +1 -1
- data/lib/grand_central/version.rb +1 -1
- data/lib/grand_central/versioned_store.rb +31 -2
- metadata +14 -28
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: db799a36024cf51a5bb7f773c960004e73e46f14
|
4
|
+
data.tar.gz: 834c42bf7db774cd5e0f5a98ae401875d82cb71f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c4f09955fcecc0f4df052ecb182867995f6f3cd0b1998c4e743f32041a8b83083717261fac6cb4ac3f0f3bdb2daf293a421a471ea2b1950c7612f5a57efea097
|
7
|
+
data.tar.gz: b86b2ef1799904b35ead134b2100dbbcd2167800addcec339b442c8812f52236cf9ccf50fcba3f914e870f2f40ecfe0d360e50765161ead5c4fcfd875f43eb18
|
data/grand_central.gemspec
CHANGED
@@ -17,7 +17,6 @@ Gem::Specification.new do |spec|
|
|
17
17
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
18
18
|
spec.require_paths = ["lib"]
|
19
19
|
|
20
|
-
spec.add_runtime_dependency "opal", "~> 0.7"
|
21
20
|
spec.add_development_dependency "bundler", "~> 1.10"
|
22
21
|
spec.add_development_dependency "rake", "~> 10.0"
|
23
22
|
spec.add_development_dependency "rspec"
|
data/lib/grand_central.rb
CHANGED
@@ -6,6 +6,10 @@ module GrandCentral
|
|
6
6
|
end
|
7
7
|
|
8
8
|
if RUBY_ENGINE != 'opal'
|
9
|
-
|
10
|
-
|
9
|
+
# Autodetect Opal
|
10
|
+
begin
|
11
|
+
require "opal"
|
12
|
+
Opal.append_path File.expand_path('..', __FILE__)
|
13
|
+
rescue LoadError => e
|
14
|
+
end
|
11
15
|
end
|
data/lib/grand_central/action.rb
CHANGED
@@ -2,22 +2,33 @@ require 'grand_central/store'
|
|
2
2
|
|
3
3
|
module GrandCentral
|
4
4
|
class VersionedStore < Store
|
5
|
+
attr_reader :current_version
|
6
|
+
|
5
7
|
def initialize *args
|
6
8
|
super
|
9
|
+
|
10
|
+
@current_version = 0
|
7
11
|
@rollback_versions = []
|
8
12
|
@redo_versions = []
|
9
13
|
end
|
10
14
|
|
11
15
|
def dispatch *args
|
12
|
-
|
16
|
+
old_state = state
|
17
|
+
|
18
|
+
result = super
|
19
|
+
|
20
|
+
@rollback_versions << old_state
|
13
21
|
@redo_versions.clear
|
14
|
-
|
22
|
+
@current_version += 1
|
23
|
+
|
24
|
+
result
|
15
25
|
end
|
16
26
|
|
17
27
|
def rollback
|
18
28
|
unless @rollback_versions.empty?
|
19
29
|
@redo_versions << (old_state = state)
|
20
30
|
@state = @rollback_versions.pop
|
31
|
+
@current_version -= 1
|
21
32
|
end
|
22
33
|
|
23
34
|
run_callbacks old_state, state
|
@@ -27,9 +38,27 @@ module GrandCentral
|
|
27
38
|
unless @redo_versions.empty?
|
28
39
|
@rollback_versions << (old_state = state)
|
29
40
|
@state = @redo_versions.pop
|
41
|
+
@current_version += 1
|
30
42
|
end
|
31
43
|
|
32
44
|
run_callbacks old_state, state
|
33
45
|
end
|
46
|
+
|
47
|
+
def total_versions
|
48
|
+
@rollback_versions.size + @redo_versions.size + 1
|
49
|
+
end
|
50
|
+
|
51
|
+
def go_to_version version
|
52
|
+
while version > current_version
|
53
|
+
self.redo
|
54
|
+
end
|
55
|
+
while version < current_version
|
56
|
+
rollback
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
def commit!
|
61
|
+
initialize state
|
62
|
+
end
|
34
63
|
end
|
35
64
|
end
|
metadata
CHANGED
@@ -1,69 +1,55 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: grand_central
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jamie Gaskins
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-04-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
-
- !ruby/object:Gem::Dependency
|
14
|
-
name: opal
|
15
|
-
requirement: !ruby/object:Gem::Requirement
|
16
|
-
requirements:
|
17
|
-
- - ~>
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: '0.7'
|
20
|
-
type: :runtime
|
21
|
-
prerelease: false
|
22
|
-
version_requirements: !ruby/object:Gem::Requirement
|
23
|
-
requirements:
|
24
|
-
- - ~>
|
25
|
-
- !ruby/object:Gem::Version
|
26
|
-
version: '0.7'
|
27
13
|
- !ruby/object:Gem::Dependency
|
28
14
|
name: bundler
|
29
15
|
requirement: !ruby/object:Gem::Requirement
|
30
16
|
requirements:
|
31
|
-
- - ~>
|
17
|
+
- - "~>"
|
32
18
|
- !ruby/object:Gem::Version
|
33
19
|
version: '1.10'
|
34
20
|
type: :development
|
35
21
|
prerelease: false
|
36
22
|
version_requirements: !ruby/object:Gem::Requirement
|
37
23
|
requirements:
|
38
|
-
- - ~>
|
24
|
+
- - "~>"
|
39
25
|
- !ruby/object:Gem::Version
|
40
26
|
version: '1.10'
|
41
27
|
- !ruby/object:Gem::Dependency
|
42
28
|
name: rake
|
43
29
|
requirement: !ruby/object:Gem::Requirement
|
44
30
|
requirements:
|
45
|
-
- - ~>
|
31
|
+
- - "~>"
|
46
32
|
- !ruby/object:Gem::Version
|
47
33
|
version: '10.0'
|
48
34
|
type: :development
|
49
35
|
prerelease: false
|
50
36
|
version_requirements: !ruby/object:Gem::Requirement
|
51
37
|
requirements:
|
52
|
-
- - ~>
|
38
|
+
- - "~>"
|
53
39
|
- !ruby/object:Gem::Version
|
54
40
|
version: '10.0'
|
55
41
|
- !ruby/object:Gem::Dependency
|
56
42
|
name: rspec
|
57
43
|
requirement: !ruby/object:Gem::Requirement
|
58
44
|
requirements:
|
59
|
-
- -
|
45
|
+
- - ">="
|
60
46
|
- !ruby/object:Gem::Version
|
61
47
|
version: '0'
|
62
48
|
type: :development
|
63
49
|
prerelease: false
|
64
50
|
version_requirements: !ruby/object:Gem::Requirement
|
65
51
|
requirements:
|
66
|
-
- -
|
52
|
+
- - ">="
|
67
53
|
- !ruby/object:Gem::Version
|
68
54
|
version: '0'
|
69
55
|
description:
|
@@ -73,9 +59,9 @@ executables: []
|
|
73
59
|
extensions: []
|
74
60
|
extra_rdoc_files: []
|
75
61
|
files:
|
76
|
-
- .gitignore
|
77
|
-
- .rspec
|
78
|
-
- .travis.yml
|
62
|
+
- ".gitignore"
|
63
|
+
- ".rspec"
|
64
|
+
- ".travis.yml"
|
79
65
|
- CODE_OF_CONDUCT.md
|
80
66
|
- Gemfile
|
81
67
|
- README.md
|
@@ -97,17 +83,17 @@ require_paths:
|
|
97
83
|
- lib
|
98
84
|
required_ruby_version: !ruby/object:Gem::Requirement
|
99
85
|
requirements:
|
100
|
-
- -
|
86
|
+
- - ">="
|
101
87
|
- !ruby/object:Gem::Version
|
102
88
|
version: '0'
|
103
89
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
104
90
|
requirements:
|
105
|
-
- -
|
91
|
+
- - ">="
|
106
92
|
- !ruby/object:Gem::Version
|
107
93
|
version: '0'
|
108
94
|
requirements: []
|
109
95
|
rubyforge_project:
|
110
|
-
rubygems_version: 2.
|
96
|
+
rubygems_version: 2.4.5.1
|
111
97
|
signing_key:
|
112
98
|
specification_version: 4
|
113
99
|
summary: State and action management for Opal apps
|