trailblazer-rails 1.0.8 → 1.0.9
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.
- checksums.yaml +5 -5
- data/.gitignore +12 -11
- data/.travis.yml +17 -10
- data/CHANGES.md +111 -104
- data/LICENSE.txt +21 -21
- data/README.md +34 -34
- data/lib/trailblazer/rails/cell.rb +21 -21
- data/lib/trailblazer/rails/controller.rb +43 -43
- data/lib/trailblazer/rails/railtie.rb +29 -90
- data/lib/trailblazer/rails/railtie/extend_application_controller.rb +28 -0
- data/lib/trailblazer/rails/railtie/loader.rb +56 -0
- data/lib/trailblazer/rails/test/integration.rb +5 -5
- data/lib/trailblazer/rails/version.rb +5 -5
- data/trailblazer-rails-2.1.4.gem +0 -0
- data/trailblazer-rails.gemspec +31 -31
- metadata +6 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 75dc8012bc26b4744c1e9d9bbbac1a9c48bb2dfbb2a2fcc3666cb90dbf5bb98c
|
4
|
+
data.tar.gz: 448a1646c41e7b061a75466201fd2dfc39a792952ef57c71d744854bafe7b894
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4d6b74c528958964c57ec7a01d071f46800ac6788419be2c968901132a3acd7a7baac93df43d86913bca100072b213280761b94c0733deaf414649ced759d827
|
7
|
+
data.tar.gz: f2cc72a1e83d51bdb5045fb5cfd4a6fde0b9fb6b7e9312b2eb96bcc3058aa815a475d10958828b5291a8e252d1e3ee9ac30dcb72d49d2ac0aa6d7fb347e55a62
|
data/.gitignore
CHANGED
@@ -1,11 +1,12 @@
|
|
1
|
-
/.bundle/
|
2
|
-
/.yardoc
|
3
|
-
/Gemfile.lock
|
4
|
-
/_yardoc/
|
5
|
-
/coverage/
|
6
|
-
/doc/
|
7
|
-
/pkg/
|
8
|
-
/spec/reports/
|
9
|
-
/tmp/
|
10
|
-
test/**/*.log
|
11
|
-
test/**/db/*.sqlite3
|
1
|
+
/.bundle/
|
2
|
+
/.yardoc
|
3
|
+
/Gemfile.lock
|
4
|
+
/_yardoc/
|
5
|
+
/coverage/
|
6
|
+
/doc/
|
7
|
+
/pkg/
|
8
|
+
/spec/reports/
|
9
|
+
/tmp/
|
10
|
+
test/**/*.log
|
11
|
+
test/**/db/*.sqlite3
|
12
|
+
test/**/Gemfile.lock
|
data/.travis.yml
CHANGED
@@ -1,10 +1,17 @@
|
|
1
|
-
language: ruby
|
2
|
-
matrix:
|
3
|
-
include:
|
4
|
-
- rvm: 2.3.1
|
5
|
-
env: TEST_SUITE=rails4.2
|
6
|
-
gemfile: test/rails4.2/Gemfile
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
1
|
+
language: ruby
|
2
|
+
matrix:
|
3
|
+
include:
|
4
|
+
- rvm: 2.3.1
|
5
|
+
env: TEST_SUITE=rails4.2
|
6
|
+
gemfile: test/rails4.2/Gemfile
|
7
|
+
- rvm: 2.4.1
|
8
|
+
env: TEST_SUITE=rails5.0
|
9
|
+
gemfile: test/rails5.0/Gemfile
|
10
|
+
- rvm: 2.4.1
|
11
|
+
env: TEST_SUITE=rails5.1
|
12
|
+
gemfile: test/rails5.1/Gemfile
|
13
|
+
- rvm: 2.5.1
|
14
|
+
env: TEST_SUITE=rails5.2
|
15
|
+
gemfile: test/rails5.2/Gemfile
|
16
|
+
|
17
|
+
script: cd test/$TEST_SUITE && bundle install && bundle exec rake test
|
data/CHANGES.md
CHANGED
@@ -1,104 +1,111 @@
|
|
1
|
-
# 1.0.
|
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
|
-
# 0.
|
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
|
-
|
1
|
+
# 1.0.9
|
2
|
+
|
3
|
+
* `Trailblazer::Rails::Railtie` divided in 2 modules:
|
4
|
+
* `Loader` -> require_dependecy `concepts`
|
5
|
+
* `ExtendApplicationController` -> include `run` and `render` in controllers
|
6
|
+
* Remove Gemfile.lock in the test folders to make travis CI to work
|
7
|
+
|
8
|
+
# 1.0.8
|
9
|
+
|
10
|
+
* Fixed Circular dependency detected in rails 5.2
|
11
|
+
|
12
|
+
# 1.0.7
|
13
|
+
|
14
|
+
* Fixed typo error in use_loader config flag
|
15
|
+
|
16
|
+
# 1.0.6 (revoked)
|
17
|
+
|
18
|
+
* Introduce use_loader config flag
|
19
|
+
|
20
|
+
# 1.0.5
|
21
|
+
|
22
|
+
* Hook trailblazer application_controller initializer to finisher_hook
|
23
|
+
|
24
|
+
# 1.0.4
|
25
|
+
|
26
|
+
* Make `Railtie::extend_application_controller!` overwriteable via a module.
|
27
|
+
|
28
|
+
# 1.0.3
|
29
|
+
|
30
|
+
* Return the computed application controller constant from `Railtie::extend_application_controller!` to make `compat` code simpler.
|
31
|
+
|
32
|
+
# 1.0.2
|
33
|
+
|
34
|
+
* Allow configuring `ApplicationController` constant via `config.trailblazer.application_controller`.
|
35
|
+
|
36
|
+
# 1.0.1
|
37
|
+
|
38
|
+
* Allow using this gem without `cells,` by loading cells support only when the `cells` gem got detected. Thanks to @promisedlandt.
|
39
|
+
|
40
|
+
# 1.0.0
|
41
|
+
|
42
|
+
* Runs only with >= Trailblazer 2.0.0.
|
43
|
+
* Removed `Controller#form`, `#present` and `#respond`. The latter is now [replaced with `Endpoint`](https://github.com/trailblazer/trailblazer-endpoint/). The only operation trigger is `Controller#run`.
|
44
|
+
* Added support for explicit `render cell(Artist::Cell::Index, model)`.
|
45
|
+
* Autoloading got replaced with explicit requires.
|
46
|
+
|
47
|
+
# 0.4.0
|
48
|
+
|
49
|
+
* Better engines support.
|
50
|
+
* Fix `Responder#errors` by simply removing it and letting `Operation#errors` return the contract errors.
|
51
|
+
|
52
|
+
# 0.3.2
|
53
|
+
|
54
|
+
* Make it work with Rails 3.x, again.
|
55
|
+
|
56
|
+
# 0.3.1
|
57
|
+
|
58
|
+
* Fix loading of `reform-rails`.
|
59
|
+
|
60
|
+
# 0.3.0
|
61
|
+
|
62
|
+
* Require `reform-rails` as a static dependency. This simplifies the user's setup significantly.
|
63
|
+
* Run the `Railtie` after `reform.form_extensions` and allow reform-rails to do its setup work, then load concepts.
|
64
|
+
|
65
|
+
# 0.2.4
|
66
|
+
|
67
|
+
* Require `trailblazer-loader-0.0.7`.
|
68
|
+
* Fix sorting, model files are now always required first.
|
69
|
+
* Manually include `Operation::Controller` in `ApplicationController` for every reload.
|
70
|
+
|
71
|
+
# 0.2.3
|
72
|
+
|
73
|
+
* Bump to `trailblazer-loader` 0.0.4.
|
74
|
+
|
75
|
+
# 0.2.2
|
76
|
+
|
77
|
+
* Remove cells loading code, this happens via trailblazer-loader now.
|
78
|
+
* We now load the concept's model file if it exists.
|
79
|
+
|
80
|
+
# 0.2.1
|
81
|
+
|
82
|
+
* Require `trailblazer-loader`.
|
83
|
+
|
84
|
+
# 0.2.0
|
85
|
+
|
86
|
+
* Use `trailblazer-loader` for loading operations and associated files, now. Note that `operations.rb` now is `operation.rb` (hence the minor bump).
|
87
|
+
* The `Operation::Controller` module is not included into `ApplicationController` automatically.
|
88
|
+
* Added `Trailblazer::Test::Integration`.
|
89
|
+
|
90
|
+
# 0.1.6
|
91
|
+
|
92
|
+
* Fix `Controller#run`, which now returns the operation instance instead of the `Else` object.
|
93
|
+
|
94
|
+
# 0.1.5
|
95
|
+
|
96
|
+
* Treat all requests as `params` requests unless the operation has a representer mixed in. If you don't want that, you can override using `is_document: false`. This appears to be the smoothest solution for all. Thanks to @Scharrels for discussion.
|
97
|
+
* In `Controller#form`, the options argument is now passed into `form.prepopulate!(options)`. This allows to use arbitrary options and the `options[:params]` for prepopulation. Thanks @sauy7 for discussion.
|
98
|
+
|
99
|
+
# 0.1.4
|
100
|
+
|
101
|
+
* Treat `:js` requests as non-document, too.
|
102
|
+
* `Controller#form` now returns the form object and not the operation.
|
103
|
+
* In `Controller`, `#form`, `#present`, `#run` and `#respond` now all have the same API: `run(constant, options)`. If you want to pass a custom params hash, use `run Comment::Create, params: {..}`.
|
104
|
+
|
105
|
+
# 0.1.3
|
106
|
+
|
107
|
+
* `Operation::contract` works properly with `Operation::ActiveModel` mixed in.
|
108
|
+
|
109
|
+
# 0.1.2
|
110
|
+
|
111
|
+
* First version running with Trailblazer 1.0.0.
|
data/LICENSE.txt
CHANGED
@@ -1,21 +1,21 @@
|
|
1
|
-
The MIT License (MIT)
|
2
|
-
|
3
|
-
Copyright (c) 2015 Nick Sutterer
|
4
|
-
|
5
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
-
of this software and associated documentation files (the "Software"), to deal
|
7
|
-
in the Software without restriction, including without limitation the rights
|
8
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
-
copies of the Software, and to permit persons to whom the Software is
|
10
|
-
furnished to do so, subject to the following conditions:
|
11
|
-
|
12
|
-
The above copyright notice and this permission notice shall be included in
|
13
|
-
all copies or substantial portions of the Software.
|
14
|
-
|
15
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
21
|
-
THE SOFTWARE.
|
1
|
+
The MIT License (MIT)
|
2
|
+
|
3
|
+
Copyright (c) 2015 Nick Sutterer
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
7
|
+
in the Software without restriction, including without limitation the rights
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
10
|
+
furnished to do so, subject to the following conditions:
|
11
|
+
|
12
|
+
The above copyright notice and this permission notice shall be included in
|
13
|
+
all copies or substantial portions of the Software.
|
14
|
+
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
21
|
+
THE SOFTWARE.
|
data/README.md
CHANGED
@@ -1,34 +1,34 @@
|
|
1
|
-
# Trailblazer::Rails
|
2
|
-
|
3
|
-
*Trailblazer in your Rails controllers.*
|
4
|
-
|
5
|
-
[](https://gitter.im/trailblazer/chat)
|
6
|
-
[](http://trailblazer.to/newsletter/)
|
7
|
-
[](https://travis-ci.org/trailblazer/trailblazer-rails)
|
9
|
-
[](http://badge.fury.io/rb/cells)
|
10
|
-
|
11
|
-
## Overview
|
12
|
-
|
13
|
-
`trailblazer-rails` helps you with the following.
|
14
|
-
|
15
|
-
* Running operations in your controller actions.
|
16
|
-
* Minimalistic integration tests ("smoke tests") to test controller/operation wiring.
|
17
|
-
* Rendering cells instead of an ActionView in a controller action.
|
18
|
-
|
19
|
-
Please refer to the [full documentation for more](http://trailblazer.to/gems/trailblazer/2.0/rails.html).
|
20
|
-
|
21
|
-
## Installation
|
22
|
-
|
23
|
-
Add this line to your application's Gemfile:
|
24
|
-
|
25
|
-
```ruby
|
26
|
-
gem 'trailblazer-rails'
|
27
|
-
```
|
28
|
-
|
29
|
-
Note that the 1.x version only runs with TRB >= 2.0.0.
|
30
|
-
|
31
|
-
## License
|
32
|
-
|
33
|
-
The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
|
34
|
-
|
1
|
+
# Trailblazer::Rails
|
2
|
+
|
3
|
+
*Trailblazer in your Rails controllers.*
|
4
|
+
|
5
|
+
[](https://gitter.im/trailblazer/chat)
|
6
|
+
[](http://trailblazer.to/newsletter/)
|
7
|
+
[](https://travis-ci.org/trailblazer/trailblazer-rails)
|
9
|
+
[](http://badge.fury.io/rb/cells)
|
10
|
+
|
11
|
+
## Overview
|
12
|
+
|
13
|
+
`trailblazer-rails` helps you with the following.
|
14
|
+
|
15
|
+
* Running operations in your controller actions.
|
16
|
+
* Minimalistic integration tests ("smoke tests") to test controller/operation wiring.
|
17
|
+
* Rendering cells instead of an ActionView in a controller action.
|
18
|
+
|
19
|
+
Please refer to the [full documentation for more](http://trailblazer.to/gems/trailblazer/2.0/rails.html).
|
20
|
+
|
21
|
+
## Installation
|
22
|
+
|
23
|
+
Add this line to your application's Gemfile:
|
24
|
+
|
25
|
+
```ruby
|
26
|
+
gem 'trailblazer-rails'
|
27
|
+
```
|
28
|
+
|
29
|
+
Note that the 1.x version only runs with TRB >= 2.0.0.
|
30
|
+
|
31
|
+
## License
|
32
|
+
|
33
|
+
The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
|
34
|
+
|
@@ -1,21 +1,21 @@
|
|
1
|
-
module Trailblazer::Rails::Controller::Cell
|
2
|
-
private
|
3
|
-
|
4
|
-
module Render
|
5
|
-
def render(cell=nil, options={}, *, &block)
|
6
|
-
return super unless cell.kind_of?(::Cell::ViewModel)
|
7
|
-
render_cell(cell, options)
|
8
|
-
end
|
9
|
-
|
10
|
-
def render_cell(cell, options)
|
11
|
-
options = options.reverse_merge(layout: true)
|
12
|
-
|
13
|
-
# render the cell.
|
14
|
-
content = cell.()
|
15
|
-
|
16
|
-
render( { html: content }.merge(options) )
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
|
-
include Render
|
21
|
-
end
|
1
|
+
module Trailblazer::Rails::Controller::Cell
|
2
|
+
private
|
3
|
+
|
4
|
+
module Render
|
5
|
+
def render(cell=nil, options={}, *, &block)
|
6
|
+
return super unless cell.kind_of?(::Cell::ViewModel)
|
7
|
+
render_cell(cell, options)
|
8
|
+
end
|
9
|
+
|
10
|
+
def render_cell(cell, options)
|
11
|
+
options = options.reverse_merge(layout: true)
|
12
|
+
|
13
|
+
# render the cell.
|
14
|
+
content = cell.()
|
15
|
+
|
16
|
+
render( { html: content }.merge(options) )
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
include Render
|
21
|
+
end
|
@@ -1,43 +1,43 @@
|
|
1
|
-
module Trailblazer::Rails
|
2
|
-
module Controller
|
3
|
-
def run(operation, params=self.params, *dependencies)
|
4
|
-
result = operation.(
|
5
|
-
_run_params(params),
|
6
|
-
*_run_runtime_options(*dependencies)
|
7
|
-
)
|
8
|
-
|
9
|
-
@form = Trailblazer::Rails::Form.new(result["contract.default"], result["model"].class)
|
10
|
-
@model = result["model"]
|
11
|
-
|
12
|
-
yield(result) if result.success? && block_given?
|
13
|
-
|
14
|
-
@_result = result
|
15
|
-
end
|
16
|
-
|
17
|
-
private
|
18
|
-
# Override to tweak params. Not recommended.
|
19
|
-
# Use a deserializer instead.
|
20
|
-
def _run_params(params)
|
21
|
-
params
|
22
|
-
end
|
23
|
-
|
24
|
-
# This is where we can inject Dry.RB containers and the like via dependencies.
|
25
|
-
def _run_runtime_options(options={}, *dependencies)
|
26
|
-
[_run_options(options), *dependencies]
|
27
|
-
end
|
28
|
-
|
29
|
-
# Override this to inject dependencies such as "current_user"
|
30
|
-
# into the runtime options.
|
31
|
-
def _run_options(options)
|
32
|
-
options
|
33
|
-
end
|
34
|
-
|
35
|
-
module Result
|
36
|
-
def result
|
37
|
-
@_result
|
38
|
-
end
|
39
|
-
end
|
40
|
-
|
41
|
-
include Result
|
42
|
-
end
|
43
|
-
end
|
1
|
+
module Trailblazer::Rails
|
2
|
+
module Controller
|
3
|
+
def run(operation, params=self.params, *dependencies)
|
4
|
+
result = operation.(
|
5
|
+
_run_params(params),
|
6
|
+
*_run_runtime_options(*dependencies)
|
7
|
+
)
|
8
|
+
|
9
|
+
@form = Trailblazer::Rails::Form.new(result["contract.default"], result["model"].class)
|
10
|
+
@model = result["model"]
|
11
|
+
|
12
|
+
yield(result) if result.success? && block_given?
|
13
|
+
|
14
|
+
@_result = result
|
15
|
+
end
|
16
|
+
|
17
|
+
private
|
18
|
+
# Override to tweak params. Not recommended.
|
19
|
+
# Use a deserializer instead.
|
20
|
+
def _run_params(params)
|
21
|
+
params
|
22
|
+
end
|
23
|
+
|
24
|
+
# This is where we can inject Dry.RB containers and the like via dependencies.
|
25
|
+
def _run_runtime_options(options={}, *dependencies)
|
26
|
+
[_run_options(options), *dependencies]
|
27
|
+
end
|
28
|
+
|
29
|
+
# Override this to inject dependencies such as "current_user"
|
30
|
+
# into the runtime options.
|
31
|
+
def _run_options(options)
|
32
|
+
options
|
33
|
+
end
|
34
|
+
|
35
|
+
module Result
|
36
|
+
def result
|
37
|
+
@_result
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
include Result
|
42
|
+
end
|
43
|
+
end
|
@@ -1,90 +1,29 @@
|
|
1
|
-
require "rails/railtie"
|
2
|
-
require "trailblazer/loader"
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
config.trailblazer
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
def
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
# This is to autoload Operation::Dispatch, etc. I'm simply assuming people find this helpful in Rails.
|
31
|
-
initializer "trailblazer.library_autoloading" do
|
32
|
-
end
|
33
|
-
|
34
|
-
# thank you, http://stackoverflow.com/a/17573888/465070
|
35
|
-
initializer 'trailblazer.install', after: "reform.form_extensions" do |app|
|
36
|
-
# the trb autoloading has to be run after initializers have been loaded, so we can tweak inclusion of features in
|
37
|
-
# initializers.
|
38
|
-
if config.trailblazer.use_loader
|
39
|
-
reloader_class.to_prepare do
|
40
|
-
Trailblazer::Railtie.load_concepts(app)
|
41
|
-
end
|
42
|
-
end
|
43
|
-
end
|
44
|
-
|
45
|
-
initializer "trailblazer.application_controller", before: "finisher_hook" do |app|
|
46
|
-
reloader_class.to_prepare do
|
47
|
-
ActiveSupport.on_load(:action_controller) do |app|
|
48
|
-
Trailblazer::Railtie.extend_application_controller!(app)
|
49
|
-
end
|
50
|
-
end
|
51
|
-
end
|
52
|
-
|
53
|
-
# Prepend model file, before the concept files like operation.rb get loaded.
|
54
|
-
ModelFile = ->(input, options) do
|
55
|
-
model = "app/models/#{options[:name]}.rb"
|
56
|
-
File.exist?(model) ? [model]+input : input
|
57
|
-
end
|
58
|
-
|
59
|
-
# Load all model files before any TRB files.
|
60
|
-
AllModelFiles = ->(input, options) do
|
61
|
-
Dir.glob("#{options[:root]}/app/models/**/*.rb").sort + input
|
62
|
-
end
|
63
|
-
|
64
|
-
private
|
65
|
-
|
66
|
-
def reloader_class
|
67
|
-
# Rails 5.0.0.rc1 says:
|
68
|
-
# DEPRECATION WARNING: to_prepare is deprecated and will be removed from Rails 5.1
|
69
|
-
# (use ActiveSupport::Reloader.to_prepare instead)
|
70
|
-
if Gem.loaded_specs['activesupport'].version >= Gem::Version.new('5')
|
71
|
-
ActiveSupport::Reloader
|
72
|
-
else
|
73
|
-
ActionDispatch::Reloader
|
74
|
-
end
|
75
|
-
end
|
76
|
-
|
77
|
-
module ExtendApplicationController
|
78
|
-
def extend_application_controller!(app)
|
79
|
-
controllers = Array(::Rails.application.config.trailblazer.application_controller).map{ |x| x.to_s }
|
80
|
-
if controllers.include? app.to_s
|
81
|
-
app.send :include, Trailblazer::Rails::Controller
|
82
|
-
app.send :include, Trailblazer::Rails::Controller::Cell if defined?(::Cell)
|
83
|
-
end
|
84
|
-
app
|
85
|
-
end
|
86
|
-
end
|
87
|
-
|
88
|
-
extend ExtendApplicationController
|
89
|
-
end
|
90
|
-
end
|
1
|
+
require "rails/railtie"
|
2
|
+
require "trailblazer/loader"
|
3
|
+
require "trailblazer/rails/railtie/loader"
|
4
|
+
require "trailblazer/rails/railtie/extend_application_controller"
|
5
|
+
|
6
|
+
module Trailblazer
|
7
|
+
class Railtie < ::Rails::Railtie
|
8
|
+
config.trailblazer = ActiveSupport::OrderedOptions.new
|
9
|
+
## Accept also an Array of controllers
|
10
|
+
config.trailblazer.application_controller ||= 'ActionController::Base'
|
11
|
+
config.trailblazer.use_loader ||= true
|
12
|
+
|
13
|
+
include Loader
|
14
|
+
include ExtendApplicationController
|
15
|
+
|
16
|
+
private
|
17
|
+
|
18
|
+
def reloader_class
|
19
|
+
# Rails 5.0.0.rc1 says:
|
20
|
+
# DEPRECATION WARNING: to_prepare is deprecated and will be removed from Rails 5.1
|
21
|
+
# (use ActiveSupport::Reloader.to_prepare instead)
|
22
|
+
if Gem.loaded_specs['activesupport'].version >= Gem::Version.new('5')
|
23
|
+
ActiveSupport::Reloader
|
24
|
+
else
|
25
|
+
ActionDispatch::Reloader
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
require 'active_support/concern'
|
2
|
+
|
3
|
+
module Trailblazer
|
4
|
+
class Railtie < ::Rails::Railtie
|
5
|
+
module ExtendApplicationController
|
6
|
+
extend ActiveSupport::Concern
|
7
|
+
|
8
|
+
included do
|
9
|
+
initializer "trailblazer.application_controller", before: "finisher_hook" do |app|
|
10
|
+
reloader_class.to_prepare do
|
11
|
+
ActiveSupport.on_load(:action_controller) do |app|
|
12
|
+
Trailblazer::Railtie.extend_application_controller!(app)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
def extend_application_controller!(app)
|
18
|
+
controllers = Array(::Rails.application.config.trailblazer.application_controller).map{ |x| x.to_s }
|
19
|
+
if controllers.include? app.to_s
|
20
|
+
app.send :include, Trailblazer::Rails::Controller
|
21
|
+
app.send :include, Trailblazer::Rails::Controller::Cell if defined?(::Cell)
|
22
|
+
end
|
23
|
+
app
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,56 @@
|
|
1
|
+
require 'active_support/concern'
|
2
|
+
|
3
|
+
module Trailblazer
|
4
|
+
class Railtie < ::Rails::Railtie
|
5
|
+
module Loader
|
6
|
+
extend ActiveSupport::Concern
|
7
|
+
|
8
|
+
included do
|
9
|
+
def self.load_concepts(app)
|
10
|
+
# Loader.new.(insert: [ModelFile, before: Loader::AddConceptFiles]) { |file| require_dependency("#{app.root}/#{file}") }
|
11
|
+
load_for(app)
|
12
|
+
|
13
|
+
engines.each { |engine| load_for(engine) }
|
14
|
+
end
|
15
|
+
|
16
|
+
def self.engines
|
17
|
+
if Gem::Version.new(::Rails.version) >= Gem::Version.new("4.1")
|
18
|
+
::Rails.application.railties.find_all { |tie| tie.is_a?(::Rails::Engine) }
|
19
|
+
else
|
20
|
+
::Rails.application.railties.engines
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
def self.load_for(app)
|
25
|
+
Trailblazer::Loader.new.(prepend: AllModelFiles, root: app.root) { |file| require_dependency(file) }
|
26
|
+
end
|
27
|
+
|
28
|
+
# Prepend model file, before the concept files like operation.rb get loaded.
|
29
|
+
ModelFile = ->(input, options) do
|
30
|
+
model = "app/models/#{options[:name]}.rb"
|
31
|
+
File.exist?(model) ? [model]+input : input
|
32
|
+
end
|
33
|
+
|
34
|
+
# Load all model files before any TRB files.
|
35
|
+
AllModelFiles = ->(input, options) do
|
36
|
+
Dir.glob("#{options[:root]}/app/models/**/*.rb").sort + input
|
37
|
+
end
|
38
|
+
|
39
|
+
# This is to autoload Operation::Dispatch, etc. I'm simply assuming people find this helpful in Rails.
|
40
|
+
initializer "trailblazer.library_autoloading" do
|
41
|
+
end
|
42
|
+
|
43
|
+
# thank you, http://stackoverflow.com/a/17573888/465070
|
44
|
+
initializer 'trailblazer.install', after: "reform.form_extensions" do |app|
|
45
|
+
# the trb autoloading has to be run after initializers have been loaded, so we can tweak inclusion of features in
|
46
|
+
# initializers.
|
47
|
+
if config.trailblazer.use_loader
|
48
|
+
reloader_class.to_prepare do
|
49
|
+
Trailblazer::Railtie.load_concepts(app)
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
@@ -1,6 +1,6 @@
|
|
1
|
-
require "minitest/rails/capybara" # loads Capybara, etc.
|
2
|
-
|
3
|
-
module Trailblazer::Test
|
4
|
-
class Integration < Capybara::Rails::TestCase
|
5
|
-
end
|
1
|
+
require "minitest/rails/capybara" # loads Capybara, etc.
|
2
|
+
|
3
|
+
module Trailblazer::Test
|
4
|
+
class Integration < Capybara::Rails::TestCase
|
5
|
+
end
|
6
6
|
end
|
@@ -1,5 +1,5 @@
|
|
1
|
-
module Trailblazer
|
2
|
-
module Rails
|
3
|
-
VERSION = "1.0.
|
4
|
-
end
|
5
|
-
end
|
1
|
+
module Trailblazer
|
2
|
+
module Rails
|
3
|
+
VERSION = "1.0.9"
|
4
|
+
end
|
5
|
+
end
|
Binary file
|
data/trailblazer-rails.gemspec
CHANGED
@@ -1,31 +1,31 @@
|
|
1
|
-
lib = File.expand_path('../lib', __FILE__)
|
2
|
-
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
3
|
-
require 'trailblazer/rails/version'
|
4
|
-
|
5
|
-
Gem::Specification.new do |spec|
|
6
|
-
spec.name = "trailblazer-rails"
|
7
|
-
spec.version = Trailblazer::Rails::VERSION
|
8
|
-
spec.authors = ["Nick Sutterer"]
|
9
|
-
spec.email = ["apotonick@gmail.com"]
|
10
|
-
|
11
|
-
spec.summary = %q{Convenient Rails support for Trailblazer.}
|
12
|
-
spec.homepage = "http://trailblazer.to/gems/trailblazer/2.0/rails.html"
|
13
|
-
spec.license = "MIT"
|
14
|
-
|
15
|
-
spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
16
|
-
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
17
|
-
spec.require_paths = ["lib"]
|
18
|
-
|
19
|
-
spec.add_dependency "trailblazer", "~> 2.0.0"
|
20
|
-
spec.add_dependency "trailblazer-loader", ">= 0.1.0"
|
21
|
-
spec.add_dependency "reform-rails", ">= 0.1.4", "< 0.2.0"
|
22
|
-
|
23
|
-
spec.add_development_dependency "bundler", "~> 1.10"
|
24
|
-
spec.add_development_dependency "rake", "~> 10.0"
|
25
|
-
spec.add_development_dependency "minitest"
|
26
|
-
spec.add_development_dependency "actionpack", '>= 3.0.0' # Rails is optional.
|
27
|
-
spec.add_development_dependency "sqlite3"
|
28
|
-
# spec.add_development_dependency "responders"
|
29
|
-
|
30
|
-
spec.add_development_dependency "multi_json"
|
31
|
-
end
|
1
|
+
lib = File.expand_path('../lib', __FILE__)
|
2
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
3
|
+
require 'trailblazer/rails/version'
|
4
|
+
|
5
|
+
Gem::Specification.new do |spec|
|
6
|
+
spec.name = "trailblazer-rails"
|
7
|
+
spec.version = Trailblazer::Rails::VERSION
|
8
|
+
spec.authors = ["Nick Sutterer"]
|
9
|
+
spec.email = ["apotonick@gmail.com"]
|
10
|
+
|
11
|
+
spec.summary = %q{Convenient Rails support for Trailblazer.}
|
12
|
+
spec.homepage = "http://trailblazer.to/gems/trailblazer/2.0/rails.html"
|
13
|
+
spec.license = "MIT"
|
14
|
+
|
15
|
+
spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
16
|
+
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
17
|
+
spec.require_paths = ["lib"]
|
18
|
+
|
19
|
+
spec.add_dependency "trailblazer", "~> 2.0.0"
|
20
|
+
spec.add_dependency "trailblazer-loader", ">= 0.1.0"
|
21
|
+
spec.add_dependency "reform-rails", ">= 0.1.4", "< 0.2.0"
|
22
|
+
|
23
|
+
spec.add_development_dependency "bundler", "~> 1.10"
|
24
|
+
spec.add_development_dependency "rake", "~> 10.0"
|
25
|
+
spec.add_development_dependency "minitest"
|
26
|
+
spec.add_development_dependency "actionpack", '>= 3.0.0' # Rails is optional.
|
27
|
+
spec.add_development_dependency "sqlite3"
|
28
|
+
# spec.add_development_dependency "responders"
|
29
|
+
|
30
|
+
spec.add_development_dependency "multi_json"
|
31
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: trailblazer-rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nick Sutterer
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-06-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: trailblazer
|
@@ -163,8 +163,11 @@ files:
|
|
163
163
|
- lib/trailblazer/rails/controller.rb
|
164
164
|
- lib/trailblazer/rails/form.rb
|
165
165
|
- lib/trailblazer/rails/railtie.rb
|
166
|
+
- lib/trailblazer/rails/railtie/extend_application_controller.rb
|
167
|
+
- lib/trailblazer/rails/railtie/loader.rb
|
166
168
|
- lib/trailblazer/rails/test/integration.rb
|
167
169
|
- lib/trailblazer/rails/version.rb
|
170
|
+
- trailblazer-rails-2.1.4.gem
|
168
171
|
- trailblazer-rails.gemspec
|
169
172
|
homepage: http://trailblazer.to/gems/trailblazer/2.0/rails.html
|
170
173
|
licenses:
|
@@ -186,7 +189,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
186
189
|
version: '0'
|
187
190
|
requirements: []
|
188
191
|
rubyforge_project:
|
189
|
-
rubygems_version: 2.
|
192
|
+
rubygems_version: 2.7.3
|
190
193
|
signing_key:
|
191
194
|
specification_version: 4
|
192
195
|
summary: Convenient Rails support for Trailblazer.
|