rails-disco 0.5.2 → 0.5.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +81 -81
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 07cb3c2698206cc2d5a822339091adbfadab3f8d
|
4
|
+
data.tar.gz: 8a54f5c0cc664ff08e722052c4d4a6ba0cb0a19f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c492687aa6ed5139c0d2ca9373e6bd00d27f8d07fe8592c38056dc1dfa890af409574ff32456629a0fe81af8dc18a0d0fd46f560c400f312100763c2cb964927
|
7
|
+
data.tar.gz: dee4130c5016501701fa238f3050dab3119e21be3082435b226a8558f0a3524fac6ed3ec39a5e9b780012307e1d01239f5f6dfd05b327f2920202b7f8895d6d6
|
data/README.md
CHANGED
@@ -1,81 +1,81 @@
|
|
1
|
-
[<img src="https://github.com/hicknhack-software/rails-disco/raw/logo/rails-disco-log.png" alt="Rails Disco Logo" width="200" />](https://github.com/hicknhack-software/rails-disco)
|
2
|
-
[![Build Status](https://travis-ci.org/hicknhack-software/rails-disco.svg?branch=master)](https://travis-ci.org/hicknhack-software/rails-disco)
|
3
|
-
[![Coverage Status](https://coveralls.io/repos/hicknhack-software/rails-disco/badge.png)](https://coveralls.io/r/hicknhack-software/rails-disco)
|
4
|
-
[![Dependency Status](https://gemnasium.com/hicknhack-software/rails-disco.png)](https://gemnasium.com/hicknhack-software/rails-disco)
|
5
|
-
[![Code Climate](https://codeclimate.com/github/hicknhack-software/rails-disco.png)](https://codeclimate.com/github/hicknhack-software/rails-disco)
|
6
|
-
[![Gem Version](http://img.shields.io/gem/v/rails-disco.svg)](https://rubygems.org/gems/rails-disco)
|
7
|
-
[![License](http://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/hicknhack-software/rails-disco/blob/master/LICENSE)
|
8
|
-
|
9
|
-
# Rails Disco - A distributed party with commands, events and projections
|
10
|
-
|
11
|
-
Rails Disco is a framework that extends Rails with support for the best parts of event sourcing.
|
12
|
-
The framework consists out of three main parts: commands, events and projections.
|
13
|
-
|
14
|
-
_Commands_ will be created and executed by actions of your controller, instead of directly manipulating your model. These commands are only the order to do something and after possible validations, the framework executes them by creating an event and finally manipulating the model.
|
15
|
-
|
16
|
-
The _events_ will be all stored in a separate database and also published to all projections, where they can be processed to update the projections model/database
|
17
|
-
|
18
|
-
Finally _projections_ are your representation of your data, they get the events and process them, to get the needed information for building up their models.
|
19
|
-
|
20
|
-
# Requirements
|
21
|
-
|
22
|
-
* At the moment Rails Disco uses [Rails 4](https://github.com/rails/rails). Maybe it works with Rails 3.2, but we didn't test that.
|
23
|
-
|
24
|
-
* Because Rails Disco relies on [bunny](https://github.com/ruby-amqp/bunny) for sending the events from the domain to the projection, you need [RabbitMQ](http://www.rabbitmq.com/download.html) on your system.
|
25
|
-
|
26
|
-
* Any Server which is capable of streaming, e.g. puma or thin (standard Rails server WEBrick will **not** work). If you are facing problems installing puma on Windows, here is a [tutorial](https://github.com/hicknhack-software/rails-disco/wiki/Installing-puma-on-windows).
|
27
|
-
|
28
|
-
# Getting Started
|
29
|
-
|
30
|
-
1. Install Rails Disco at the command prompt
|
31
|
-
|
32
|
-
gem install rails-disco
|
33
|
-
|
34
|
-
1. At the command prompt, create a new Rails Disco application.
|
35
|
-
|
36
|
-
disco new myapp
|
37
|
-
|
38
|
-
where `myapp` is the name of you application.
|
39
|
-
|
40
|
-
(Note: You can also add Rails Disco to an existing Rails application. Simply omit the application name and run the command inside your application.)
|
41
|
-
|
42
|
-
1. Change directory to `myapp` and migrate the databases:
|
43
|
-
|
44
|
-
cd myapp
|
45
|
-
rake disco:migrate:setup
|
46
|
-
|
47
|
-
This will operate on the Rails (= projection) and the domain database.
|
48
|
-
You can configure the domain database and more Rails Disco related configurations in `config/disco.yml`.
|
49
|
-
|
50
|
-
1. If you just want to look a some standard server output, start the disco server (Remember to use a server which is capable of streaming, which means not WEBrick). Else go ahead and skip this point.
|
51
|
-
|
52
|
-
disco server
|
53
|
-
|
54
|
-
This will start the domain, the projection and the web server, but you won't see much of the disco yet.
|
55
|
-
|
56
|
-
1. For a humble start, let's create the scaffold for a simple blog system:
|
57
|
-
|
58
|
-
disco generate scaffold Post title:string text:text
|
59
|
-
|
60
|
-
The syntax is leaned to Rails' generate style and it basically creates a resource Post with a title and a text attribute.
|
61
|
-
|
62
|
-
1. Now that we have something to rely on, lets migrate and see it in action:
|
63
|
-
|
64
|
-
rake disco:migrate
|
65
|
-
disco server
|
66
|
-
|
67
|
-
1. Go to [http://localhost:3000/posts](http://localhost:3000/posts) and you'll see an empty list of our posts with a link to create a new one. Go ahead and create one.
|
68
|
-
If you watch the console output, you can see that an event is created, published and processed by a projection.
|
69
|
-
|
70
|
-
1. If you look at your databases, you see in both of them a table `posts`, which contains your freshly created post.
|
71
|
-
The domain database also contains a table `domain_events`. There you find an event for your post creation. Lets see this in action.
|
72
|
-
|
73
|
-
1. Clear your projection database and restart the server.
|
74
|
-
|
75
|
-
rake disco:db:drop
|
76
|
-
rake disco:migrate
|
77
|
-
disco server
|
78
|
-
|
79
|
-
You will see some console output, the projection requests the missing posts from the domain. Finally the state of your projection database will be restored.
|
80
|
-
|
81
|
-
1. That's it for now, have fun with it. For more information take a look at the [wiki](https://github.com/hicknhack-software/rails-disco/wiki)
|
1
|
+
[<img src="https://github.com/hicknhack-software/rails-disco/raw/logo/rails-disco-log.png" alt="Rails Disco Logo" width="200" />](https://github.com/hicknhack-software/rails-disco)
|
2
|
+
[![Build Status](https://travis-ci.org/hicknhack-software/rails-disco.svg?branch=master)](https://travis-ci.org/hicknhack-software/rails-disco)
|
3
|
+
[![Coverage Status](https://coveralls.io/repos/hicknhack-software/rails-disco/badge.png)](https://coveralls.io/r/hicknhack-software/rails-disco)
|
4
|
+
[![Dependency Status](https://gemnasium.com/hicknhack-software/rails-disco.png)](https://gemnasium.com/hicknhack-software/rails-disco)
|
5
|
+
[![Code Climate](https://codeclimate.com/github/hicknhack-software/rails-disco.png)](https://codeclimate.com/github/hicknhack-software/rails-disco)
|
6
|
+
[![Gem Version](http://img.shields.io/gem/v/rails-disco.svg)](https://rubygems.org/gems/rails-disco)
|
7
|
+
[![License](http://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/hicknhack-software/rails-disco/blob/master/LICENSE)
|
8
|
+
|
9
|
+
# Rails Disco - A distributed party with commands, events and projections
|
10
|
+
|
11
|
+
Rails Disco is a framework that extends Rails with support for the best parts of event sourcing.
|
12
|
+
The framework consists out of three main parts: commands, events and projections.
|
13
|
+
|
14
|
+
_Commands_ will be created and executed by actions of your controller, instead of directly manipulating your model. These commands are only the order to do something and after possible validations, the framework executes them by creating an event and finally manipulating the model.
|
15
|
+
|
16
|
+
The _events_ will be all stored in a separate database and also published to all projections, where they can be processed to update the projections model/database
|
17
|
+
|
18
|
+
Finally _projections_ are your representation of your data, they get the events and process them, to get the needed information for building up their models.
|
19
|
+
|
20
|
+
# Requirements
|
21
|
+
|
22
|
+
* At the moment Rails Disco uses [Rails 4](https://github.com/rails/rails). Maybe it works with Rails 3.2, but we didn't test that.
|
23
|
+
|
24
|
+
* Because Rails Disco relies on [bunny](https://github.com/ruby-amqp/bunny) for sending the events from the domain to the projection, you need [RabbitMQ](http://www.rabbitmq.com/download.html) on your system.
|
25
|
+
|
26
|
+
* Any Server which is capable of streaming, e.g. puma or thin (standard Rails server WEBrick will **not** work). If you are facing problems installing puma on Windows, here is a [tutorial](https://github.com/hicknhack-software/rails-disco/wiki/Installing-puma-on-windows).
|
27
|
+
|
28
|
+
# Getting Started
|
29
|
+
|
30
|
+
1. Install Rails Disco at the command prompt
|
31
|
+
|
32
|
+
gem install rails-disco
|
33
|
+
|
34
|
+
1. At the command prompt, create a new Rails Disco application.
|
35
|
+
|
36
|
+
disco new myapp
|
37
|
+
|
38
|
+
where `myapp` is the name of you application.
|
39
|
+
|
40
|
+
(Note: You can also add Rails Disco to an existing Rails application. Simply omit the application name and run the command inside your application.)
|
41
|
+
|
42
|
+
1. Change directory to `myapp` and migrate the databases:
|
43
|
+
|
44
|
+
cd myapp
|
45
|
+
rake disco:migrate:setup
|
46
|
+
|
47
|
+
This will operate on the Rails (= projection) and the domain database.
|
48
|
+
You can configure the domain database and more Rails Disco related configurations in `config/disco.yml`.
|
49
|
+
|
50
|
+
1. If you just want to look a some standard server output, start the disco server (Remember to use a server which is capable of streaming, which means not WEBrick). Else go ahead and skip this point.
|
51
|
+
|
52
|
+
disco server
|
53
|
+
|
54
|
+
This will start the domain, the projection and the web server, but you won't see much of the disco yet.
|
55
|
+
|
56
|
+
1. For a humble start, let's create the scaffold for a simple blog system:
|
57
|
+
|
58
|
+
disco generate scaffold Post title:string text:text
|
59
|
+
|
60
|
+
The syntax is leaned to Rails' generate style and it basically creates a resource Post with a title and a text attribute.
|
61
|
+
|
62
|
+
1. Now that we have something to rely on, lets migrate and see it in action:
|
63
|
+
|
64
|
+
rake disco:migrate
|
65
|
+
disco server
|
66
|
+
|
67
|
+
1. Go to [http://localhost:3000/posts](http://localhost:3000/posts) and you'll see an empty list of our posts with a link to create a new one. Go ahead and create one.
|
68
|
+
If you watch the console output, you can see that an event is created, published and processed by a projection.
|
69
|
+
|
70
|
+
1. If you look at your databases, you see in both of them a table `posts`, which contains your freshly created post.
|
71
|
+
The domain database also contains a table `domain_events`. There you find an event for your post creation. Lets see this in action.
|
72
|
+
|
73
|
+
1. Clear your projection database and restart the server.
|
74
|
+
|
75
|
+
rake disco:db:drop
|
76
|
+
rake disco:migrate
|
77
|
+
disco server
|
78
|
+
|
79
|
+
You will see some console output, the projection requests the missing posts from the domain. Finally the state of your projection database will be restored.
|
80
|
+
|
81
|
+
1. That's it for now, have fun with it. For more information take a look at the [wiki](https://github.com/hicknhack-software/rails-disco/wiki)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rails-disco
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.
|
4
|
+
version: 0.5.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- HicknHack Software
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-09-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: disco-railties
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - '='
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 0.5.
|
19
|
+
version: 0.5.3
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - '='
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 0.5.
|
26
|
+
version: 0.5.3
|
27
27
|
description: |2
|
28
28
|
Rails Disco is a framework that extends Rails with support for the best parts of event sourcing.
|
29
29
|
|