leonidas 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.
- data/CHANGELOG +1 -0
- data/Gemfile +15 -0
- data/Gemfile.lock +105 -0
- data/LICENSE +21 -0
- data/Manifest +63 -0
- data/README.md +213 -0
- data/Rakefile +42 -0
- data/assets/scripts/coffee/leonidas/client.coffee +15 -0
- data/assets/scripts/coffee/leonidas/commander.coffee +34 -0
- data/assets/scripts/coffee/leonidas/commands/command.coffee +9 -0
- data/assets/scripts/coffee/leonidas/commands/organizer.coffee +24 -0
- data/assets/scripts/coffee/leonidas/commands/processor.coffee +13 -0
- data/assets/scripts/coffee/leonidas/commands/stabilizer.coffee +13 -0
- data/assets/scripts/coffee/leonidas/commands/synchronizer.coffee +38 -0
- data/assets/scripts/js/lib/jquery.js +6 -0
- data/bin/leonidas.js +178 -0
- data/config/assets.rb +7 -0
- data/leonidas.gemspec +36 -0
- data/lib/leonidas.rb +14 -0
- data/lib/leonidas/app/app.rb +80 -0
- data/lib/leonidas/app/connection.rb +20 -0
- data/lib/leonidas/app/repository.rb +41 -0
- data/lib/leonidas/commands/aggregator.rb +31 -0
- data/lib/leonidas/commands/command.rb +24 -0
- data/lib/leonidas/commands/handler.rb +21 -0
- data/lib/leonidas/commands/processor.rb +30 -0
- data/lib/leonidas/dsl/configuration_expression.rb +17 -0
- data/lib/leonidas/memory_layer/memory_registry.rb +33 -0
- data/lib/leonidas/persistence_layer/persister.rb +54 -0
- data/lib/leonidas/persistence_layer/state_builder.rb +17 -0
- data/lib/leonidas/persistence_layer/state_loader.rb +22 -0
- data/lib/leonidas/routes/sync.rb +45 -0
- data/lib/leonidas/symbols.rb +17 -0
- data/spec/jasmine/jasmine.yml +44 -0
- data/spec/jasmine/runner.html +77 -0
- data/spec/jasmine/support/classes.coffee +16 -0
- data/spec/jasmine/support/helpers.coffee +22 -0
- data/spec/jasmine/support/mocks.coffee +19 -0
- data/spec/jasmine/support/objects.coffee +11 -0
- data/spec/jasmine/support/requirements.coffee +1 -0
- data/spec/jasmine/tests/client_spec.coffee +20 -0
- data/spec/jasmine/tests/commander_spec.coffee +69 -0
- data/spec/jasmine/tests/commands/command_spec.coffee +12 -0
- data/spec/jasmine/tests/commands/organizer_spec.coffee +70 -0
- data/spec/jasmine/tests/commands/processor_spec.coffee +22 -0
- data/spec/jasmine/tests/commands/stabilizer_spec.coffee +30 -0
- data/spec/jasmine/tests/commands/synchronizer_spec.coffee +72 -0
- data/spec/rspec/spec_helper.rb +4 -0
- data/spec/rspec/support/classes/app.rb +26 -0
- data/spec/rspec/support/classes/commands.rb +52 -0
- data/spec/rspec/support/classes/persistence.rb +56 -0
- data/spec/rspec/support/config.rb +3 -0
- data/spec/rspec/support/mocks.rb +15 -0
- data/spec/rspec/support/objects.rb +11 -0
- data/spec/rspec/unit/app/app_spec.rb +185 -0
- data/spec/rspec/unit/app/repository_spec.rb +114 -0
- data/spec/rspec/unit/commands/aggregator_spec.rb +103 -0
- data/spec/rspec/unit/commands/command.rb +17 -0
- data/spec/rspec/unit/commands/processor_spec.rb +30 -0
- data/spec/rspec/unit/dsl/configuration_expression_spec.rb +32 -0
- data/spec/rspec/unit/leonidas_spec.rb +26 -0
- data/spec/rspec/unit/memory_layer/memory_registry_spec.rb +85 -0
- data/spec/rspec/unit/persistence_layer/persister_spec.rb +84 -0
- data/spec/rspec/unit/persistence_layer/state_loader_spec.rb +29 -0
- metadata +166 -0
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
describe Leonidas::Commands::Command do
|
|
2
|
+
include TestObjects
|
|
3
|
+
|
|
4
|
+
subject do
|
|
5
|
+
@connection = build_connection
|
|
6
|
+
Leonidas::Commands::Command.new("test", { test: "testdata" }, 123, @connection)
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
describe '#to_hash' do
|
|
10
|
+
|
|
11
|
+
it "will return the command as a hash" do
|
|
12
|
+
subject.to_hash.should eq({ name: "test", data: { test: "testdata" }, timestamp: 123, @connection.id })
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
end
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
describe Leonidas::Commands::Processor do
|
|
2
|
+
include TestObjects
|
|
3
|
+
|
|
4
|
+
subject do
|
|
5
|
+
@app = TestMocks::MockApp.new
|
|
6
|
+
described_class.new([ TestClasses::IncrementHandler.new(@app), TestClasses::MultiplyHandler.new(@app) ])
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
before :each do
|
|
10
|
+
TestClasses::PersistentState.reset
|
|
11
|
+
@command1 = build_command(build_connection, 1)
|
|
12
|
+
@command2 = build_command(build_connection, 2, "multiply", { multiply_by: 3 })
|
|
13
|
+
@command3 = build_command(build_connection, 3, "increment", { increment_by: 4 })
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
describe '#process' do
|
|
17
|
+
|
|
18
|
+
it "will run a list of commands in order by timestamp" do
|
|
19
|
+
subject.process([ @command3, @command1, @command2 ])
|
|
20
|
+
@app.current_state.should eq({ value: 7 })
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
it "will persist the list of commands when persist is true" do
|
|
24
|
+
subject.process([ @command3, @command1, @command2 ], true)
|
|
25
|
+
TestClasses::PersistentState.value.should eq 7
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
end
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
describe Leonidas::Dsl::ConfigurationExpression do
|
|
2
|
+
|
|
3
|
+
def clear_persistence_layer
|
|
4
|
+
Leonidas::PersistenceLayer::Persister.class_variable_set(:@@persister, nil)
|
|
5
|
+
Leonidas::PersistenceLayer::Persister.class_variable_get(:@@state_loader).instance_variable_set(:@builders, [])
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
after :each do
|
|
9
|
+
clear_persistence_layer
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
describe '#persister_class_is' do
|
|
13
|
+
|
|
14
|
+
it "will set the class used to persist apps in Persister" do
|
|
15
|
+
persister_class = TestClasses::TestAppPersister
|
|
16
|
+
subject.persister_class_is persister_class
|
|
17
|
+
Leonidas::PersistenceLayer::Persister.class_variable_get(:@@persister).should_not be_nil
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
describe '#add_app_state_builder' do
|
|
23
|
+
|
|
24
|
+
it "will add a state builder to the persister's state loader" do
|
|
25
|
+
builder_class = TestClasses::TestAppStateBuilder
|
|
26
|
+
subject.add_app_state_builder builder_class
|
|
27
|
+
Leonidas::PersistenceLayer::Persister.class_variable_get(:@@state_loader).instance_variable_get(:@builders).should_not be_empty
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
end
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
describe Leonidas do
|
|
2
|
+
|
|
3
|
+
def clear_persistence_layer
|
|
4
|
+
Leonidas::PersistenceLayer::Persister.class_variable_set(:@@persister, nil)
|
|
5
|
+
Leonidas::PersistenceLayer::Persister.class_variable_get(:@@state_loader).instance_variable_set(:@builders, [])
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
subject do
|
|
9
|
+
Leonidas
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
after :each do
|
|
13
|
+
clear_persistence_layer
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
describe '::bootstrap' do
|
|
17
|
+
|
|
18
|
+
it "will load and execute a config" do
|
|
19
|
+
subject.bootstrap(File.expand_path("#{File.dirname(__FILE__)}/../support/config.rb"))
|
|
20
|
+
Leonidas::PersistenceLayer::Persister.class_variable_get(:@@persister).should_not be_nil
|
|
21
|
+
Leonidas::PersistenceLayer::Persister.class_variable_get(:@@state_loader).instance_variable_get(:@builders).should_not be_empty
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
end
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
describe Leonidas::MemoryLayer::MemoryRegistry do
|
|
2
|
+
|
|
3
|
+
subject do
|
|
4
|
+
described_class
|
|
5
|
+
end
|
|
6
|
+
|
|
7
|
+
before :each do
|
|
8
|
+
subject.clear_registry!
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
describe '::register_app!' do
|
|
12
|
+
|
|
13
|
+
it "will reject an argument if it doesn't include Leonidas::App::App" do
|
|
14
|
+
app = { convincing_app: "not so much"}
|
|
15
|
+
expect { subject.register_app!(app) }.to raise_error(TypeError, "Argument must include Leonidas::App::App")
|
|
16
|
+
subject.should_not have_app app
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
it "will add an app to the list of registered apps" do
|
|
20
|
+
subject.register_app! TestClasses::TestApp.new
|
|
21
|
+
subject.retrieve_app("app 1").should_not be_nil
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
it "will throw an error if an app with the same name is already registered" do
|
|
25
|
+
app1 = TestClasses::TestApp.new
|
|
26
|
+
app2 = TestClasses::TestApp.new
|
|
27
|
+
expect { subject.register_app! app1 }.not_to raise_error
|
|
28
|
+
expect { subject.register_app! app2 }.to raise_error(StandardError, "An app with the name 'app 1' is already registered")
|
|
29
|
+
subject.retrieve_app('app 1').should eq app1
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
describe '::retrieve_app' do
|
|
35
|
+
|
|
36
|
+
it "will return nil if the requested app isn't registered" do
|
|
37
|
+
subject.retrieve_app("app 1").should be_nil
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
it "will return the app if it is registered" do
|
|
41
|
+
app = TestClasses::TestApp.new
|
|
42
|
+
subject.register_app! app
|
|
43
|
+
subject.retrieve_app("app 1").should eq app
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
describe '::has_app?' do
|
|
49
|
+
|
|
50
|
+
it "will return true if the requested app is registered" do
|
|
51
|
+
subject.register_app! TestClasses::TestApp.new
|
|
52
|
+
subject.should have_app "app 1"
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
it "will return false if the requested app is not registered" do
|
|
56
|
+
subject.should_not have_app "badname"
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
describe '::close_app!' do
|
|
62
|
+
|
|
63
|
+
it "will remove the app from the list of registered apps" do
|
|
64
|
+
subject.register_app! TestClasses::TestApp.new
|
|
65
|
+
subject.close_app! "app 1"
|
|
66
|
+
subject.should_not have_app "app 1"
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
describe '#clear_registry!' do
|
|
72
|
+
|
|
73
|
+
it "removes all apps registered" do
|
|
74
|
+
app1 = TestClasses::TestApp.new
|
|
75
|
+
app2 = TestClasses::TestApp.new("app 2")
|
|
76
|
+
subject.register_app! app1
|
|
77
|
+
subject.register_app! app2
|
|
78
|
+
subject.clear_registry!
|
|
79
|
+
subject.should_not have_app app1.name
|
|
80
|
+
subject.should_not have_app app2.name
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
end
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
describe Leonidas::PersistenceLayer::Persister do
|
|
2
|
+
include TestObjects
|
|
3
|
+
|
|
4
|
+
def clear_persistence_layer
|
|
5
|
+
Leonidas::PersistenceLayer::Persister.class_variable_set(:@@persister, nil)
|
|
6
|
+
Leonidas::PersistenceLayer::Persister.class_variable_get(:@@state_loader).instance_variable_set(:@builders, [])
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
subject do
|
|
10
|
+
described_class
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
before :each do
|
|
14
|
+
@app = TestClasses::TestApp.new
|
|
15
|
+
@persister = TestClasses::TestAppPersister.new([ @app ])
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
after :each do
|
|
19
|
+
clear_persistence_layer
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
describe '::set_app_persister' do
|
|
23
|
+
|
|
24
|
+
it "will reject any argument that doesn't include AppPersister" do
|
|
25
|
+
persister = { fake_persister: "maybe it'll work this time" }
|
|
26
|
+
expect { subject.set_app_persister! persister }.to raise_error(TypeError, "Argument must include Leonidas::PersistenceLayer::AppPersister")
|
|
27
|
+
subject.class_variable_get(:@@persister).should be_nil
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
it "will set the persister to use for saving an app" do
|
|
31
|
+
persister = TestClasses::TestAppPersister.new
|
|
32
|
+
subject.set_app_persister! persister
|
|
33
|
+
subject.class_variable_get(:@@persister).should eq persister
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
describe '::load' do
|
|
39
|
+
|
|
40
|
+
before :each do
|
|
41
|
+
described_class.set_app_persister! @persister
|
|
42
|
+
described_class.add_state_builder! TestClasses::TestAppStateBuilder.new
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
it "will load an app with the given name" do
|
|
46
|
+
subject.load("app 1").should eq @app
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
it "will return nil if no app with the given name exists" do
|
|
50
|
+
subject.load("badname").should be_nil
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
it "will set the app current state to the active state" do
|
|
54
|
+
conn = @app.create_connection!
|
|
55
|
+
conn.add_command! build_command(conn, conn.last_update+10)
|
|
56
|
+
subject.load("app 1")
|
|
57
|
+
@app.current_state.should eq({ value: 1 })
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
describe '::persist' do
|
|
63
|
+
|
|
64
|
+
it "will persist the app" do
|
|
65
|
+
described_class.set_app_persister! @persister
|
|
66
|
+
@persister.clear_apps!
|
|
67
|
+
subject.load("app 1").should be_nil
|
|
68
|
+
subject.persist @app
|
|
69
|
+
subject.load("app 1").should eq @app
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
describe '::delete' do
|
|
75
|
+
|
|
76
|
+
it "will delete the app" do
|
|
77
|
+
described_class.set_app_persister! @persister
|
|
78
|
+
subject.delete @app
|
|
79
|
+
subject.load("app 1").should be_nil
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
end
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
describe Leonidas::PersistenceLayer::StateLoader do
|
|
2
|
+
|
|
3
|
+
describe '#add_builder!' do
|
|
4
|
+
|
|
5
|
+
it "will reject any argument that isn't a StateBuilder" do
|
|
6
|
+
builder = { pretty_good: "but not good enough" }
|
|
7
|
+
expect { subject.add_builder! builder }.to raise_error(TypeError, "Argument must include Leonidas::PersistenceLayer::StateBuilder")
|
|
8
|
+
subject.instance_variable_get(:@builders).should be_empty
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
it "will add a builder to the state loader" do
|
|
12
|
+
builder = TestClasses::TestAppStateBuilder.new
|
|
13
|
+
subject.add_builder! builder
|
|
14
|
+
subject.instance_variable_get(:@builders).should eq [ builder ]
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
describe '#load_state' do
|
|
20
|
+
|
|
21
|
+
it "will load the state for a given app" do
|
|
22
|
+
subject.add_builder! TestClasses::TestAppStateBuilder.new
|
|
23
|
+
state = subject.load_state TestClasses::TestApp.new
|
|
24
|
+
state.should eq({ value: 0 })
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
end
|
metadata
ADDED
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
|
+
name: leonidas
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
version: 0.0.1
|
|
5
|
+
prerelease:
|
|
6
|
+
platform: ruby
|
|
7
|
+
authors:
|
|
8
|
+
- Tim Shelburne
|
|
9
|
+
autorequire:
|
|
10
|
+
bindir: bin
|
|
11
|
+
cert_chain: []
|
|
12
|
+
date: 2013-05-01 00:00:00.000000000 Z
|
|
13
|
+
dependencies:
|
|
14
|
+
- !ruby/object:Gem::Dependency
|
|
15
|
+
name: jasmine
|
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
|
17
|
+
none: false
|
|
18
|
+
requirements:
|
|
19
|
+
- - ! '>='
|
|
20
|
+
- !ruby/object:Gem::Version
|
|
21
|
+
version: '0'
|
|
22
|
+
type: :development
|
|
23
|
+
prerelease: false
|
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
25
|
+
none: false
|
|
26
|
+
requirements:
|
|
27
|
+
- - ! '>='
|
|
28
|
+
- !ruby/object:Gem::Version
|
|
29
|
+
version: '0'
|
|
30
|
+
- !ruby/object:Gem::Dependency
|
|
31
|
+
name: jasmine-headless-webkit
|
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
|
33
|
+
none: false
|
|
34
|
+
requirements:
|
|
35
|
+
- - ! '>='
|
|
36
|
+
- !ruby/object:Gem::Version
|
|
37
|
+
version: '0'
|
|
38
|
+
type: :development
|
|
39
|
+
prerelease: false
|
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
41
|
+
none: false
|
|
42
|
+
requirements:
|
|
43
|
+
- - ! '>='
|
|
44
|
+
- !ruby/object:Gem::Version
|
|
45
|
+
version: '0'
|
|
46
|
+
description: ''
|
|
47
|
+
email: shelburt02@gmail.com
|
|
48
|
+
executables:
|
|
49
|
+
- leonidas.js
|
|
50
|
+
extensions: []
|
|
51
|
+
extra_rdoc_files:
|
|
52
|
+
- CHANGELOG
|
|
53
|
+
- LICENSE
|
|
54
|
+
- README.md
|
|
55
|
+
- bin/leonidas.js
|
|
56
|
+
- lib/leonidas.rb
|
|
57
|
+
- lib/leonidas/app/app.rb
|
|
58
|
+
- lib/leonidas/app/connection.rb
|
|
59
|
+
- lib/leonidas/app/repository.rb
|
|
60
|
+
- lib/leonidas/commands/aggregator.rb
|
|
61
|
+
- lib/leonidas/commands/command.rb
|
|
62
|
+
- lib/leonidas/commands/handler.rb
|
|
63
|
+
- lib/leonidas/commands/processor.rb
|
|
64
|
+
- lib/leonidas/dsl/configuration_expression.rb
|
|
65
|
+
- lib/leonidas/memory_layer/memory_registry.rb
|
|
66
|
+
- lib/leonidas/persistence_layer/persister.rb
|
|
67
|
+
- lib/leonidas/persistence_layer/state_builder.rb
|
|
68
|
+
- lib/leonidas/persistence_layer/state_loader.rb
|
|
69
|
+
- lib/leonidas/routes/sync.rb
|
|
70
|
+
- lib/leonidas/symbols.rb
|
|
71
|
+
files:
|
|
72
|
+
- CHANGELOG
|
|
73
|
+
- Gemfile
|
|
74
|
+
- Gemfile.lock
|
|
75
|
+
- LICENSE
|
|
76
|
+
- Manifest
|
|
77
|
+
- README.md
|
|
78
|
+
- Rakefile
|
|
79
|
+
- assets/scripts/coffee/leonidas/client.coffee
|
|
80
|
+
- assets/scripts/coffee/leonidas/commander.coffee
|
|
81
|
+
- assets/scripts/coffee/leonidas/commands/command.coffee
|
|
82
|
+
- assets/scripts/coffee/leonidas/commands/organizer.coffee
|
|
83
|
+
- assets/scripts/coffee/leonidas/commands/processor.coffee
|
|
84
|
+
- assets/scripts/coffee/leonidas/commands/stabilizer.coffee
|
|
85
|
+
- assets/scripts/coffee/leonidas/commands/synchronizer.coffee
|
|
86
|
+
- assets/scripts/js/lib/jquery.js
|
|
87
|
+
- bin/leonidas.js
|
|
88
|
+
- config/assets.rb
|
|
89
|
+
- lib/leonidas.rb
|
|
90
|
+
- lib/leonidas/app/app.rb
|
|
91
|
+
- lib/leonidas/app/connection.rb
|
|
92
|
+
- lib/leonidas/app/repository.rb
|
|
93
|
+
- lib/leonidas/commands/aggregator.rb
|
|
94
|
+
- lib/leonidas/commands/command.rb
|
|
95
|
+
- lib/leonidas/commands/handler.rb
|
|
96
|
+
- lib/leonidas/commands/processor.rb
|
|
97
|
+
- lib/leonidas/dsl/configuration_expression.rb
|
|
98
|
+
- lib/leonidas/memory_layer/memory_registry.rb
|
|
99
|
+
- lib/leonidas/persistence_layer/persister.rb
|
|
100
|
+
- lib/leonidas/persistence_layer/state_builder.rb
|
|
101
|
+
- lib/leonidas/persistence_layer/state_loader.rb
|
|
102
|
+
- lib/leonidas/routes/sync.rb
|
|
103
|
+
- lib/leonidas/symbols.rb
|
|
104
|
+
- spec/jasmine/jasmine.yml
|
|
105
|
+
- spec/jasmine/runner.html
|
|
106
|
+
- spec/jasmine/support/classes.coffee
|
|
107
|
+
- spec/jasmine/support/helpers.coffee
|
|
108
|
+
- spec/jasmine/support/mocks.coffee
|
|
109
|
+
- spec/jasmine/support/objects.coffee
|
|
110
|
+
- spec/jasmine/support/requirements.coffee
|
|
111
|
+
- spec/jasmine/tests/client_spec.coffee
|
|
112
|
+
- spec/jasmine/tests/commander_spec.coffee
|
|
113
|
+
- spec/jasmine/tests/commands/command_spec.coffee
|
|
114
|
+
- spec/jasmine/tests/commands/organizer_spec.coffee
|
|
115
|
+
- spec/jasmine/tests/commands/processor_spec.coffee
|
|
116
|
+
- spec/jasmine/tests/commands/stabilizer_spec.coffee
|
|
117
|
+
- spec/jasmine/tests/commands/synchronizer_spec.coffee
|
|
118
|
+
- spec/rspec/spec_helper.rb
|
|
119
|
+
- spec/rspec/support/classes/app.rb
|
|
120
|
+
- spec/rspec/support/classes/commands.rb
|
|
121
|
+
- spec/rspec/support/classes/persistence.rb
|
|
122
|
+
- spec/rspec/support/config.rb
|
|
123
|
+
- spec/rspec/support/mocks.rb
|
|
124
|
+
- spec/rspec/support/objects.rb
|
|
125
|
+
- spec/rspec/unit/app/app_spec.rb
|
|
126
|
+
- spec/rspec/unit/app/repository_spec.rb
|
|
127
|
+
- spec/rspec/unit/commands/aggregator_spec.rb
|
|
128
|
+
- spec/rspec/unit/commands/command.rb
|
|
129
|
+
- spec/rspec/unit/commands/processor_spec.rb
|
|
130
|
+
- spec/rspec/unit/dsl/configuration_expression_spec.rb
|
|
131
|
+
- spec/rspec/unit/leonidas_spec.rb
|
|
132
|
+
- spec/rspec/unit/memory_layer/memory_registry_spec.rb
|
|
133
|
+
- spec/rspec/unit/persistence_layer/persister_spec.rb
|
|
134
|
+
- spec/rspec/unit/persistence_layer/state_loader_spec.rb
|
|
135
|
+
- leonidas.gemspec
|
|
136
|
+
homepage: https://github.com/tshelburne/leonidas
|
|
137
|
+
licenses: []
|
|
138
|
+
post_install_message:
|
|
139
|
+
rdoc_options:
|
|
140
|
+
- --line-numbers
|
|
141
|
+
- --inline-source
|
|
142
|
+
- --title
|
|
143
|
+
- Leonidas
|
|
144
|
+
- --main
|
|
145
|
+
- README.md
|
|
146
|
+
require_paths:
|
|
147
|
+
- lib
|
|
148
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
149
|
+
none: false
|
|
150
|
+
requirements:
|
|
151
|
+
- - ! '>='
|
|
152
|
+
- !ruby/object:Gem::Version
|
|
153
|
+
version: '0'
|
|
154
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
155
|
+
none: false
|
|
156
|
+
requirements:
|
|
157
|
+
- - ! '>='
|
|
158
|
+
- !ruby/object:Gem::Version
|
|
159
|
+
version: '1.2'
|
|
160
|
+
requirements: []
|
|
161
|
+
rubyforge_project: leonidas
|
|
162
|
+
rubygems_version: 1.8.24
|
|
163
|
+
signing_key:
|
|
164
|
+
specification_version: 3
|
|
165
|
+
summary: ''
|
|
166
|
+
test_files: []
|