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 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