alki-rails 0.3.0 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 401649793ac23a7eef15815fdf8b5b92131a822d
4
- data.tar.gz: bab6bc5a1e1b91408e51f116b67a8307dc1ddc33
3
+ metadata.gz: 45051ebb8bd2da6d7be68dbd16d3a3b4335376e4
4
+ data.tar.gz: a580d8affd5429b300e30ba5b5530d82222f830a
5
5
  SHA512:
6
- metadata.gz: ec73505b12483fe5c76ae0aa716d9727e18bd4790b83fea5ec6077fcdf654a52286e7997274201458c0b9b93b35cf3d14319d7c355c864584d452c9263974cc8
7
- data.tar.gz: 9f3b7298ecf271f279002add6cba5806c8af1a16dc69c3b96f2f4de30c1bfdf9f7fa0e0e33a50804fe5806313e3df0d25639ab87e85047ab5747e88daa262323
6
+ metadata.gz: 712474223f299549e697bdb74c84b21007944eb42cf42f2d126df4810bc7af38b8d769aba0b5edf44e181cb5b82aa7ff3ae979b5cd346ce4842322e34a629bae
7
+ data.tar.gz: fdf6f58c8757dee87d669fe41fe3ffb25a0ab6200af0721707c422fc0d3b60d88832a184cd5bac01121f84bad81e71945316bfd5ae879cff6097a696c2d370c4
data/README.adoc CHANGED
@@ -4,7 +4,26 @@ Rails integration for Alki! Allows easily using Alki in your Rails project. Alki
4
4
 
5
5
  == Why use Alki with Rails?
6
6
 
7
+ While Rails is a fantastic web framework, it doesn't offer a lot of tools to manage your
8
+ core business logic. Common idioms like "Fat Model" or "Fat Controller" work ok for a while,
9
+ but most large Rails projects get to a point where their business logic grows beyond
10
+ Rails' basic MVC paradigm.
7
11
 
12
+ Using Alki to manage your business logic allows your Rails code to focus on what it does best:
13
+ serve web pages. With Alki::Rails, Alki integrates seamlessly with Rails, while also keeping
14
+ your core code encapsulated.
15
+
16
+ === What about Rails Services?
17
+
18
+ Recent versions of Rails have added an `app/services` directory as a place to put
19
+ dedicated service objects containing your business logic.
20
+
21
+ The key difference between these Rails services and Alki services is that Rails services are
22
+ classes or modules, referenced directly by consumers when needed, while Alki services can be
23
+ any time of object, but are typically instances of a service class.
24
+
25
+ By using instances, Alki allows services to be configured and dependency injected before
26
+ being used.
8
27
 
9
28
  == Installation
10
29
 
@@ -22,25 +41,72 @@ And then execute:
22
41
  $ bundle
23
42
  ----
24
43
 
25
- Create a `config/alki` directory and then create an empty Alki Assembly definition in an `assembly.rb` file inside that.
44
+ Finally, run the generator to create an empty `config/assembly.rb` and to make your
45
+ assembly elements accessible in your controllers and in the console.
46
+
47
+ [source]
48
+ ----
49
+ $ bin/rails generate alki
50
+ ----
51
+
52
+ == Usage
53
+
54
+ Elements like services and application settings are defined in your Assembly definition
55
+ (`config/assembly.rb`). These elements are accessible by name directly within controllers
56
+ and the rails console.
57
+
58
+ See https://github.com/alki-project/alki[here] for more documentation on how to use Alki.
26
59
 
27
60
  .config/assembly.rb
28
61
  ```ruby
29
62
  Alki do
63
+ group :orders do
64
+ service :manager do
65
+ require 'order_manager'
66
+ OrderManager.new model, payment_processor
67
+ end
68
+
69
+ service :model do
70
+ Order
71
+ end
72
+
73
+ service :payment_processor do
74
+ require 'stripe_processor'
75
+ StripeProcessor.new
76
+ end
77
+ end
78
+ end
79
+ ```
30
80
 
81
+ .app/controllers/orders_controller.rb
82
+ ```ruby
83
+ class OrdersController < ApplicationController
84
+ def post
85
+ @order = orders.manager.place_order params[:order]
86
+ end
31
87
  end
32
88
  ```
33
89
 
34
- Finally, add the following to your ApplicationController class:
90
+ .lib/order_manager.rb
91
+ ```ruby
92
+ class OrderManager
93
+ def initialize(model,payment_processor)
94
+ @model = model
95
+ @payment_processor = payment_processor
96
+ end
35
97
 
36
- [source,ruby]
37
- ----
38
- include Alki::Rails
39
- ----
98
+ ...
99
+ end
100
+ ```
40
101
 
41
- == Usage
102
+ .lib/stripe_processor.rb
103
+ ```ruby
104
+ class StripeProcessor
105
+ ...
106
+ end
107
+ ```
42
108
 
43
- Element defined in your Assembly definition will be callable directly from your assembly:
109
+ Elements can also be accessed anywhere in your Rails application, via `Alki::Rails`:
44
110
 
45
111
  .config/assembly.rb
46
112
  ```ruby
@@ -51,26 +117,16 @@ Alki do
51
117
  end
52
118
  ```
53
119
 
54
- .app/controllers/home_controller.rb
55
- ```ruby
56
- class HomeController < ApplicationController
57
- def show
58
- @msg = settings.msg
59
- end
60
- end
61
- ```
62
-
63
- Elements can also be accessed in the Rails console, or anywhere else in your Rails application, via Alki::Rails:
64
-
65
120
  .Rails Console
66
121
  ```
122
+ 2.3.2 :001 > settings.msg
123
+ => 'Hello World'
67
124
  2.3.2 :001 > Alki::Rails.settings.msg
68
125
  => 'Hello World'
69
126
  ```
70
127
 
71
128
  Alki will automatically add your projects `lib` directory to the ruby load path, so you can require files from there directly. It also will handle auto-reloading files in lib.
72
129
 
73
- See https://github.com/alki-project/alki[here] for more documentation on how to use Alki.
74
130
 
75
131
  == Contributing
76
132
 
@@ -1,5 +1,5 @@
1
1
  module Alki
2
2
  module Rails
3
- VERSION = "0.3.0"
3
+ VERSION = "0.4.0"
4
4
  end
5
5
  end
@@ -0,0 +1,18 @@
1
+ class AlkiGenerator < Rails::Generators::Base
2
+ def create_initializer
3
+ create_file "config/assembly.rb", <<END
4
+ Alki do
5
+ # elements go here ...
6
+ end
7
+ END
8
+ create_file "config/initializers/alki.rb", <<END
9
+ module Rails::ConsoleMethods
10
+ include Alki::Rails
11
+ end
12
+
13
+ class ActionController::Base
14
+ include Alki::Rails
15
+ end
16
+ END
17
+ end
18
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: alki-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matt Edlefsen
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-03-05 00:00:00.000000000 Z
11
+ date: 2017-03-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -83,6 +83,7 @@ files:
83
83
  - lib/alki-rails.rb
84
84
  - lib/alki/rails.rb
85
85
  - lib/alki/rails/version.rb
86
+ - lib/rails/generators/alki_generator.rb
86
87
  homepage: https://github.com/alki-project/alki-rails
87
88
  licenses:
88
89
  - MIT