scorpion-ioc 0.5.11 → 0.5.12
Sign up to get free protection for your applications and to get access to all the features.
- 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
|