-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.xml
108 lines (74 loc) · 7.57 KB
/
index.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>Libraries on DDD concepts with Ruby</title>
<link>https://ddd-ruby.github.io/libraries/index.xml</link>
<description>Recent content in Libraries on DDD concepts with Ruby</description>
<generator>Hugo -- gohugo.io</generator>
<language>en-us</language>
<copyright>Released under the MIT license</copyright>
<lastBuildDate>Tue, 08 Mar 2016 21:07:13 +0100</lastBuildDate>
<atom:link href="https://ddd-ruby.github.io/libraries/index.xml" rel="self" type="application/rss+xml" />
<item>
<title>Ruby libraries supporting DDD</title>
<link>https://ddd-ruby.github.io/libraries/</link>
<pubDate>Tue, 08 Mar 2016 21:07:13 +0100</pubDate>
<guid>https://ddd-ruby.github.io/libraries/</guid>
<description>
<h2 id="rdm-the-missing-dependencies-manager-for-ruby-apps">Rdm: the missing dependencies manager for Ruby apps</h2>
<ul>
<li><a href="https://ddd-ruby.github.io/rdm/" target="_blank">Rdm</a></li>
</ul>
<p>With RDM you can split up one big Ruby application into multiple lightweight packages with explicit dependencies. You can do it before going the <code>microservices</code> road, because this would be a much smoother transition. Going from explicit dependencies graph to proper SOA / microservices is also more straightforward. In DDD it helps to define clearer <a href="http://martinfowler.com/bliki/BoundedContext.html">Bounded Contexts</a>, where each package can only access explicit dependencies. Contrast this with a monolithic Rails application with one global Ruby memory space, and you might understand the benefit of having stricter, more explicit way of managing dependencies.</p>
<h2 id="smartioc-a-declarative-dependency-injection-library">SmartIoC: a declarative dependency Injection library</h2>
<ul>
<li><a href="https://ddd-ruby.github.io/smart_ioc/" target="_blank">SmartIoC</a></li>
</ul>
<p>SmartIoC is a smart and really simple IoC container for Ruby applications.</p>
<p>It allows you to create your dependencies on demand, supports lazy-loading of Ruby files, also allows different contexts for each dependency, so you get test/lightweight implementations in development / tests enviroments. It works great in combination with <code>Rdm</code>.</p>
<h2 id="hashcast-hash-attributes-caster-in-declarative-way">HashCast - Hash attributes caster in declarative way</h2>
<ul>
<li><a href="https://ddd-ruby.github.io/hashcast/" target="_blank">HashCast</a></li>
</ul>
<p>In the DDD context it helps to convert user input to a properly casted Ruby object / hash. It is a lightweight dependency-free Ruby library, with a nice DSL for for specifying the structure of expected input with Ruby types.</p>
<h2 id="purevalidator-ruby-domain-object-validation-library">PureValidator - Ruby domain object validation library</h2>
<ul>
<li><a href="https://ddd-ruby.github.io/pure_validator/" target="_blank">PureValidator</a></li>
</ul>
<p>PureValidator is a simple, mostly dependency-free (except <code>i18n</code>) library to validate your domain Ruby objects. It is an excellent companion to <a href="https://ddd-ruby.github.io/hashcast/" target="_blank">HashCast</a> to validate your Ruby objects against specific domain rules. What makes PureValidator special is the separation of validation rules from the object to validate. After countless fights against <strong>one-size-fits-all</strong> <code>ActiveModel::Validations</code>-style validations that mix domain/value object with its valudations, we came to prefer this simpler and more flexible approach.</p>
<p>This approach is more popular in functional programming and leads to maintainable, easily unit-testable code. You are free to use multiple different validators for the same object in different situations. For example your validation rules during creation of an object are different from validations when user is changing a single boolean flag on it.</p>
<h2 id="contracts-contracts-for-ruby">Contracts - Contracts for Ruby</h2>
<ul>
<li><a href="https://ddd-ruby.github.io/contracts.ruby/" target="_blank">Contracts</a></li>
</ul>
<p>Contracts let you clearly – even beautifully – express how your code behaves, and free you from writing tons of boilerplate, defensive code.</p>
<p>We have a forked version of <code>contracts</code> with nice diff output for KeywordArgs type (Hash).</p>
<h2 id="active-serializer-a-simple-objects-to-hash-serializer">Active Serializer - a simple objects to hash serializer.</h2>
<ul>
<li><a href="https://ddd-ruby.github.io/active_serializer/" target="_blank">ActiveSerializer</a></li>
</ul>
<p>ActiveSerializer is a lightweight dependency-free objects serializer with a nice declarative DSL.</p>
<p>In our <a href="https://github.com/ddd-ruby/json_serialization_benchmark" target="_blank">Serializers performance benchmark</a> it places on a solid middle ground right after plain Ruby presenters while sporting a declarative DSL, providing you the same convenience as <code>ActiveModel Serializers</code> do.</p>
<p>Compared to <code>ActiveModel::Serializers</code>-dependencies (activemodel / actionpack), that move with the corresponding Rails version, you get non of the potential headaches of conflicting transient dependencies, that are the horror and bane of many biggish Rails applications.</p>
<h2 id="apiview-friggin-fast-serializer-gem">ApiView - Friggin&rsquo; fast Serializer gem</h2>
<ul>
<li><a href="https://ddd-ruby.github.io/api_view/" target="_blank">ApiView</a>
Another lightweight dependency-free objects serializer. Its <code>DSL</code> is less involved, because its main focus is performance.</li>
</ul>
<p><code>ApiView</code> is currently the fastest known Ruby-based object serializer. If you are generating huge JSON payloads in your Ruby application, it will bring you 5-10X fold performance improvements, as demonstrated in our <a href="https://github.com/ddd-ruby/json_serialization_benchmark" target="_blank">Serializers performance benchmark</a>.</p>
<h2 id="values-values-is-a-tiny-library-for-creating-value-objects-in-ruby">Values - Values is a tiny library for creating value objects in ruby.</h2>
<ul>
<li><a href="https://github.com/tcrayford/Values" target="_blank">Values</a></li>
</ul>
<ol>
<li>Constructors require expected arguments</li>
<li>Instances are immutable</li>
</ol>
<h2 id="overview-on-travis-ci">Overview on Travis.CI</h2>
<ul>
<li><a href="https://travis-ci.org/ddd-ruby" target="_blank">DDD-Ruby libs on Travis</a></li>
</ul>
</description>
</item>
</channel>
</rss>