event_store 0.1.2 → 0.1.3
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +7 -4
- data/event_store.gemspec +1 -1
- data/lib/event_store/version.rb +1 -1
- data/lib/event_store.rb +38 -37
- metadata +3 -3
data/README.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# EventStore
|
2
2
|
|
3
|
-
A
|
3
|
+
A fast, production ready Ruby implementation of an EventStore (A+ES).
|
4
4
|
For more detail on what an EventStore is checkout what Gregg Young has to stay about it:
|
5
5
|
http://codebetter.com/gregyoung/2010/02/20/why-use-event-sourcing/
|
6
6
|
|
@@ -15,9 +15,12 @@ EventStore.postgres #test
|
|
15
15
|
|
16
16
|
EventStore.vertica(:development)
|
17
17
|
EventStore.vertica #test
|
18
|
+
```
|
18
19
|
|
19
|
-
|
20
|
-
|
20
|
+
### Connecting in Production
|
21
|
+
```ruby
|
22
|
+
EventStore.connect_db(redis_config, database_config)
|
23
|
+
#The redis and database configs are the standard hashes expected by the databases -- we just pass them directly in
|
21
24
|
```
|
22
25
|
|
23
26
|
### Notes on Connecting
|
@@ -64,4 +67,4 @@ client.version
|
|
64
67
|
|
65
68
|
# Drop all the events associated with an aggregate, including its snapshot
|
66
69
|
client.destroy!
|
67
|
-
```
|
70
|
+
```
|
data/event_store.gemspec
CHANGED
@@ -10,7 +10,7 @@ Gem::Specification.new do |spec|
|
|
10
10
|
spec.description = ["A Ruby implementation of an EventSource (A+ES) tuned for Vertica or Postgres"]
|
11
11
|
spec.email = ["classicist@gmail.com"]
|
12
12
|
spec.summary = %q{Ruby implementation of an EventSource (A+ES) for the Nexia Ecosystem}
|
13
|
-
spec.homepage = ""
|
13
|
+
spec.homepage = "https://github.com/nexiahome/event_store"
|
14
14
|
spec.license = "MIT"
|
15
15
|
|
16
16
|
spec.files = `git ls-files`.split($/)
|
data/lib/event_store/version.rb
CHANGED
data/lib/event_store.rb
CHANGED
@@ -15,8 +15,8 @@ module EventStore
|
|
15
15
|
SerializedEvent = Struct.new(:fully_qualified_name, :serialized_event, :version, :occurred_at)
|
16
16
|
SNAPSHOT_DELIMITER = "__NexEvStDelim__"
|
17
17
|
|
18
|
-
def self.db_config
|
19
|
-
raw_db_config[
|
18
|
+
def self.db_config
|
19
|
+
raw_db_config[@environment.to_s][@adapter.to_s]
|
20
20
|
end
|
21
21
|
|
22
22
|
def self.raw_db_config
|
@@ -50,7 +50,7 @@ module EventStore
|
|
50
50
|
end
|
51
51
|
|
52
52
|
def self.schema
|
53
|
-
@schema ||= raw_db_config[@environment][@
|
53
|
+
@schema ||= raw_db_config[@environment][@adapter]['schema']
|
54
54
|
end
|
55
55
|
|
56
56
|
def self.table_name
|
@@ -66,48 +66,49 @@ module EventStore
|
|
66
66
|
EventStore.redis.flushdb
|
67
67
|
end
|
68
68
|
|
69
|
-
def self.postgres(
|
70
|
-
@database = 'postgres'
|
71
|
-
@environment = db_env.to_s
|
69
|
+
def self.postgres(environment = 'test')
|
72
70
|
local_redis_connect
|
73
|
-
|
71
|
+
@adapter = 'postgres'
|
72
|
+
@environment = environment.to_s
|
73
|
+
@db_config ||= self.db_config
|
74
|
+
create_db
|
75
|
+
end
|
76
|
+
|
77
|
+
#To find the ip address of vertica on your local box (running in a vm)
|
78
|
+
#1. open Settings -> Network and select Wi-Fi
|
79
|
+
#2. open a terminal in the VM
|
80
|
+
#3. do /sbin/ifconfig (ifconfig is not in $PATH)
|
81
|
+
#4. the inet address for en0 is what you want
|
82
|
+
#Hint: if it just hangs, you have have the wrong IP
|
83
|
+
def self.vertica(environment = 'test')
|
84
|
+
local_redis_connect
|
85
|
+
@adapter = 'vertica'
|
86
|
+
@environment = environment.to_s
|
87
|
+
@db_config ||= self.db_config
|
88
|
+
@db_config['host'] ||= ENV['VERTICA_HOST'] || vertica_host
|
89
|
+
create_db
|
74
90
|
end
|
75
91
|
|
76
|
-
def self.
|
77
|
-
|
78
|
-
@
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
end
|
87
|
-
|
88
|
-
def self.create_db(type, db_env, db_config = nil)
|
89
|
-
@db_type = type
|
90
|
-
db_config ||= self.db_config(db_env, type)
|
91
|
-
if type == 'vertica'
|
92
|
-
#To find the ip address of vertica on your local box (running in a vm)
|
93
|
-
#1. open Settings -> Network and select Wi-Fi
|
94
|
-
#2. open a terminal in the VM
|
95
|
-
#3. do /sbin/ifconfig (ifconfig is not in $PATH)
|
96
|
-
#4. the inet address for en0 is what you want
|
97
|
-
#Hint: if it just hangs, you have have the wrong IP
|
98
|
-
db_config['host'] = ENV['VERTICA_HOST'] || vertica_host
|
99
|
-
@migrations_dir = 'db/migrations'
|
100
|
-
else
|
101
|
-
@migrations_dir = 'db/pg_migrations'
|
102
|
-
end
|
92
|
+
def self.custom_config(database_config, redis_config, envrionment = 'production')
|
93
|
+
self.redis_connect(redis_config)
|
94
|
+
@adapter = database_config['adapter'].to_s
|
95
|
+
@environment = envrionment
|
96
|
+
@db_config = database_config
|
97
|
+
create_db
|
98
|
+
end
|
99
|
+
|
100
|
+
def self.migrations_dir
|
101
|
+
@adapter == 'vertica' ? 'migrations' : 'pg_migrations'
|
102
|
+
end
|
103
103
|
|
104
|
-
|
104
|
+
def self.create_db
|
105
|
+
self.connect(@db_config)
|
105
106
|
schema_exits = @db.table_exists?("#{schema}__schema_info".to_sym)
|
106
107
|
@db.run "CREATE SCHEMA #{EventStore.schema};" unless schema_exits
|
107
|
-
Sequel::Migrator.run(@db,
|
108
|
+
Sequel::Migrator.run(@db, File.expand_path(File.join('..','..','db', self.migrations_dir), __FILE__), :table=> "#{schema}__schema_info".to_sym)
|
108
109
|
end
|
109
110
|
|
110
111
|
def self.vertica_host
|
111
|
-
File.read File.expand_path(
|
112
|
+
File.read File.expand_path(File.join('..','..','db', 'vertica_host_address.txt'), __FILE__)
|
112
113
|
end
|
113
114
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: event_store
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.3
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2014-02-
|
13
|
+
date: 2014-02-15 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: bundler
|
@@ -240,7 +240,7 @@ files:
|
|
240
240
|
- spec/event_store/snapshot_spec.rb
|
241
241
|
- spec/event_store/vertica guy notes.txt
|
242
242
|
- spec/spec_helper.rb
|
243
|
-
homepage:
|
243
|
+
homepage: https://github.com/nexiahome/event_store
|
244
244
|
licenses:
|
245
245
|
- MIT
|
246
246
|
post_install_message:
|