scorpion-ioc 0.5.11 → 0.5.12
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 +4 -4
- data/lib/scorpion/rack/env.rb +10 -0
- data/lib/scorpion/rack/middleware.rb +34 -0
- data/lib/scorpion/rails/controller.rb +3 -1
- data/lib/scorpion/rails/railtie.rb +1 -0
- data/lib/scorpion/version.rb +1 -1
- data/spec/lib/scorpion/rack/middleware_spec.rb +30 -0
- data/spec/lib/scorpion/rails/controller_spec.rb +9 -0
- data/spec/lib/scorpion/rspec/helper_spec.rb +1 -1
- metadata +7 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 26f6b97f16d1b60f0a4643d3490011b0f9243249
|
4
|
+
data.tar.gz: 2e17bdbf0e8b42afc657e9ed32f70ff72e571ca8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: dda56d8d4eb81fcccfa1a74d8bab69780cbef9dbec885d3708fe524ae654f8e40a96442363804c259a3e21152d0406eac39b1e5ded82f3b1fbd1eb4cdba86995
|
7
|
+
data.tar.gz: 6fb8b248262d963cbcf41d5fe852406fe64005521999287a3983f140ce5999b7931fa673963ddf8b321c2e403e3c69168f2a9531af1eb01c805a0a47f2b99f83
|
@@ -0,0 +1,34 @@
|
|
1
|
+
require "scorpion/rack/env"
|
2
|
+
|
3
|
+
module Scorpion
|
4
|
+
module Rack
|
5
|
+
class Middleware
|
6
|
+
|
7
|
+
ENV_KEY = 'scorpion.rack.instance'.freeze
|
8
|
+
|
9
|
+
def initialize( app, nest = nil )
|
10
|
+
@app = app
|
11
|
+
@nest = nest || Scorpion.instance.build_nest
|
12
|
+
end
|
13
|
+
|
14
|
+
def call( env )
|
15
|
+
env[ENV_KEY] = prepare_scorpion( nest.conceive, env )
|
16
|
+
@app.call(env).tap do
|
17
|
+
free_scorpion( env )
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
private
|
22
|
+
attr_reader :nest
|
23
|
+
|
24
|
+
def prepare_scorpion( scorpion, env )
|
25
|
+
scorpion.hunt_for Rack::Env, return: env
|
26
|
+
scorpion
|
27
|
+
end
|
28
|
+
|
29
|
+
def free_scorpion( env )
|
30
|
+
env[ENV_KEY].destroy
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -6,7 +6,7 @@ module Scorpion
|
|
6
6
|
# Adds a scorpion nest to support injection into rails controllers.
|
7
7
|
module Controller
|
8
8
|
|
9
|
-
ENV_KEY = 'scorpion.instance'.freeze
|
9
|
+
ENV_KEY = 'scorpion.controller.instance'.freeze
|
10
10
|
|
11
11
|
|
12
12
|
# Fetch an object from the controller's {#scorpion}.
|
@@ -61,6 +61,8 @@ module Scorpion
|
|
61
61
|
hunter.hunt_for ActionDispatch::Response do |hunt|
|
62
62
|
hunt.fetch( AbstractController::Base ).response
|
63
63
|
end
|
64
|
+
|
65
|
+
hunter.hunt_for Scorpion::Rack::Env, return: request.env
|
64
66
|
end
|
65
67
|
end
|
66
68
|
|
data/lib/scorpion/version.rb
CHANGED
@@ -0,0 +1,30 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
require "scorpion/rack/middleware"
|
3
|
+
|
4
|
+
describe Scorpion::Rack::Middleware do
|
5
|
+
let(:app) { proc{ [ 200, {}, [ 'Sting!' ] ] } }
|
6
|
+
let(:stack) { Scorpion::Rack::Middleware.new( app ) }
|
7
|
+
let(:request) { Rack::MockRequest.new( stack ) }
|
8
|
+
let(:response) { request.get('/') }
|
9
|
+
|
10
|
+
it "creates a scorpion" do
|
11
|
+
expect( stack ).to receive( :prepare_scorpion ).and_call_original
|
12
|
+
response
|
13
|
+
end
|
14
|
+
|
15
|
+
it "prepares it with the environment" do
|
16
|
+
proc = ->(env) {
|
17
|
+
scorpion = env[Scorpion::Rack::Middleware::ENV_KEY]
|
18
|
+
expect( scorpion.fetch( Scorpion::Rack::Env) ).to be env
|
19
|
+
app.call( env )
|
20
|
+
}
|
21
|
+
|
22
|
+
request = Rack::MockRequest::new( Scorpion::Rack::Middleware.new( proc ) )
|
23
|
+
request.get '/'
|
24
|
+
end
|
25
|
+
|
26
|
+
it "frees the scorpion on return" do
|
27
|
+
expect( stack ).to receive( :free_scorpion ).and_call_original
|
28
|
+
response
|
29
|
+
end
|
30
|
+
end
|
@@ -153,6 +153,15 @@ describe Scorpion::Rails::Controller, type: :controller do
|
|
153
153
|
get :index
|
154
154
|
end
|
155
155
|
|
156
|
+
it "hunts for rack env" do
|
157
|
+
allow( subject ).to receive( :index ) do
|
158
|
+
expect( subject.scorpion.fetch( Scorpion::Rack::Env ) ).to be_present
|
159
|
+
controller.render nothing: true
|
160
|
+
end
|
161
|
+
|
162
|
+
get :index
|
163
|
+
end
|
164
|
+
|
156
165
|
it "scopes relations" do
|
157
166
|
allow( subject ).to receive( :index ) do
|
158
167
|
expect( subject.scorpion( Todo ).all.scorpion ).to be subject.scorpion
|
@@ -40,7 +40,7 @@ describe Scorpion::Rspec::Helper do
|
|
40
40
|
specify{ expect( scorpion.fetch Numeric ).to eq 5 }
|
41
41
|
specify{ expect( scorpion.fetch String ).to eq "hello" }
|
42
42
|
specify{ expect( scorpion.fetch Regexp ).to be_a RSpec::Mocks::TestDouble }
|
43
|
-
specify{ expect( scorpion.fetch ScorpionRspecHelperSpec::Food ).to
|
43
|
+
specify{ expect( scorpion.fetch ScorpionRspecHelperSpec::Food ).to be food }
|
44
44
|
end
|
45
45
|
|
46
46
|
context "child context" do
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: scorpion-ioc
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.
|
4
|
+
version: 0.5.12
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Paul Alexander
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-02-
|
11
|
+
date: 2016-02-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -150,6 +150,8 @@ files:
|
|
150
150
|
- lib/scorpion/nest.rb
|
151
151
|
- lib/scorpion/object.rb
|
152
152
|
- lib/scorpion/object_constructor.rb
|
153
|
+
- lib/scorpion/rack/env.rb
|
154
|
+
- lib/scorpion/rack/middleware.rb
|
153
155
|
- lib/scorpion/rails.rb
|
154
156
|
- lib/scorpion/rails/active_record.rb
|
155
157
|
- lib/scorpion/rails/active_record/association.rb
|
@@ -184,6 +186,7 @@ files:
|
|
184
186
|
- spec/lib/scorpion/hunter_spec.rb
|
185
187
|
- spec/lib/scorpion/object_constructor_spec.rb
|
186
188
|
- spec/lib/scorpion/object_spec.rb
|
189
|
+
- spec/lib/scorpion/rack/middleware_spec.rb
|
187
190
|
- spec/lib/scorpion/rails/active_record/association_spec.rb
|
188
191
|
- spec/lib/scorpion/rails/active_record/model_spec.rb
|
189
192
|
- spec/lib/scorpion/rails/active_record/relation_spec.rb
|
@@ -212,7 +215,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
212
215
|
version: '0'
|
213
216
|
requirements: []
|
214
217
|
rubyforge_project:
|
215
|
-
rubygems_version: 2.5.
|
218
|
+
rubygems_version: 2.5.1
|
216
219
|
signing_key:
|
217
220
|
specification_version: 4
|
218
221
|
summary: Add IoC to rails with minimal fuss and ceremony
|
@@ -236,6 +239,7 @@ test_files:
|
|
236
239
|
- spec/lib/scorpion/hunter_spec.rb
|
237
240
|
- spec/lib/scorpion/object_constructor_spec.rb
|
238
241
|
- spec/lib/scorpion/object_spec.rb
|
242
|
+
- spec/lib/scorpion/rack/middleware_spec.rb
|
239
243
|
- spec/lib/scorpion/rails/active_record/association_spec.rb
|
240
244
|
- spec/lib/scorpion/rails/active_record/model_spec.rb
|
241
245
|
- spec/lib/scorpion/rails/active_record/relation_spec.rb
|