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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 52fbe5183ff0a1f9d4f205f716bbaddf513767c7
4
- data.tar.gz: d50fa2d75a737f998ac3cffe35c89ce9e693dc32
3
+ metadata.gz: 26f6b97f16d1b60f0a4643d3490011b0f9243249
4
+ data.tar.gz: 2e17bdbf0e8b42afc657e9ed32f70ff72e571ca8
5
5
  SHA512:
6
- metadata.gz: 3b3af973484798628141cee2eb677ab5489e1482782e1b20ec9307f1f3f7c693b9a934dc42f6050241343ea07a79989612aa22495ea7ee0901fbca4826e45328
7
- data.tar.gz: 5378df2b99f06c9002b1f165a0467bbccefbeb3f4b2afa610efe2952e9e2b9fe136d1e57a2788017a6b9eaa06e060c66ab8d9e98d5025ded6bb9145aa63d3243
6
+ metadata.gz: dda56d8d4eb81fcccfa1a74d8bab69780cbef9dbec885d3708fe524ae654f8e40a96442363804c259a3e21152d0406eac39b1e5ded82f3b1fbd1eb4cdba86995
7
+ data.tar.gz: 6fb8b248262d963cbcf41d5fe852406fe64005521999287a3983f140ce5999b7931fa673963ddf8b321c2e403e3c69168f2a9531af1eb01c805a0a47f2b99f83
@@ -0,0 +1,10 @@
1
+ module Scorpion
2
+ module Rack
3
+ module Env
4
+ def self.create( * )
5
+ fail "Include Scorpion::Rails::Controller in your ApplicationController" if defined? Rails
6
+ fail "Add Scorpion::Rack::Middleware"
7
+ end
8
+ end
9
+ end
10
+ end
@@ -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
 
@@ -1,4 +1,5 @@
1
1
  require 'rails/railtie'
2
+ require "scorpion/rack/middleware"
2
3
 
3
4
  module Scorpion
4
5
  module Rails
@@ -1,5 +1,5 @@
1
1
  module Scorpion
2
- VERSION_NUMBER = "0.5.11"
2
+ VERSION_NUMBER = "0.5.12"
3
3
  VERSION_SUFFIX = ""
4
4
  VERSION = "#{VERSION_NUMBER}#{VERSION_SUFFIX}"
5
5
  end
@@ -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 be_a ScorpionRspecHelperSpec::Food }
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.11
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-03 00:00:00.000000000 Z
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.0
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