chanko 2.0.5 → 2.0.6

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: 85f38de7313d2d2ee7f638e03dc81c249a1bc3e6
4
- data.tar.gz: 0fe314d508fdb5cf1df669f26eb02e2c61e6a7bc
3
+ metadata.gz: 30b75ddfc1e9fe43d6d3b754e7fbf52d335cc3fc
4
+ data.tar.gz: 95f8aff4181c18e35e9c9bab4764c8c965e10fec
5
5
  SHA512:
6
- metadata.gz: 4294a26631dab10ffd21f2467c3ac7762dfa53009beebee2575f5b051862ee00da396c80af45a368a2489add336181a77d531bb3e5f28f3bba1c5df66752af46
7
- data.tar.gz: 0801e6006c30e6e67fe5426487f6baa388d538b6028dfd20c987da74c87a76e9e4532ca0cbad64449cbcb21d0e9e679ebdf6ae1cf940ab739f4ce09d25a00072
6
+ metadata.gz: 475502c0c6e2795a09ec61ec99fb42ebdae1d34c63b35e49304a943c4f6b7806c6b688115662255ef155947e417b7ba62253c7ad17f741d11d122ba5e36b6433
7
+ data.tar.gz: 4984aabddb178deea973816105c6b3a590d2dc2b5901a1ec61c6a52e86f7b4797a5582a019437cc3b25069167094db4d9cf90cd8373b616708cf56d5ccfdda4e
@@ -1,3 +1,6 @@
1
+ ## 2.0.6
2
+ * Fix stack control of run_default.
3
+
1
4
  ## 2.0.5
2
5
  * Guarantee thread-safety of unit stack for Rails 4
3
6
 
@@ -1,4 +1,4 @@
1
- Copyright (c) 2013 Ryo Nakamura
1
+ Copyright (c) 2013 COOKPAD Inc.
2
2
 
3
3
  MIT License
4
4
 
@@ -6,7 +6,7 @@ Gem::Specification.new do |gem|
6
6
  gem.name = "chanko"
7
7
  gem.version = Chanko::VERSION
8
8
  gem.authors = ["Ryo Nakamura"]
9
- gem.email = ["r7kamura@gmail.com"]
9
+ gem.email = ["tech@cookpad.com"]
10
10
  gem.description = "Chanko is a Rails extension tool"
11
11
  gem.summary = "Rails extension tool"
12
12
  gem.homepage = "https://github.com/cookpad/chanko"
@@ -40,6 +40,18 @@ module Chanko
40
40
  end
41
41
  end
42
42
 
43
+ def __current_run_default_depth
44
+ @__run_default_depth ||= 0
45
+ end
46
+
47
+ def __increment_run_default_depth
48
+ @__run_default_depth = __current_run_default_depth + 1
49
+ end
50
+
51
+ def __decrement_run_default_depth
52
+ @__run_default_depth = __current_run_default_depth - 1
53
+ end
54
+
43
55
  def __find_unit_local(method_name)
44
56
  __current_unit_locals.has_key?(method_name)
45
57
  end
@@ -49,7 +61,7 @@ module Chanko
49
61
  end
50
62
 
51
63
  def __current_unit_locals
52
- __unit_locals_stack.last || {}
64
+ __unit_locals_stack[-1 - __current_run_default_depth] || {}
53
65
  end
54
66
 
55
67
  def __unit_locals_stack
@@ -73,7 +85,7 @@ module Chanko
73
85
  end
74
86
 
75
87
  def __default_block
76
- __defaults_stack.last
88
+ __defaults_stack[-1 - __current_run_default_depth]
77
89
  end
78
90
 
79
91
  def __has_default_block?
@@ -81,10 +93,16 @@ module Chanko
81
93
  end
82
94
 
83
95
  def __invoke_default_block
84
- if view?
85
- capture(&__default_block)
86
- else
87
- instance_exec(&__default_block)
96
+ current_default_block = __default_block
97
+ begin
98
+ __increment_run_default_depth
99
+ if view?
100
+ capture(&current_default_block)
101
+ else
102
+ instance_exec(&current_default_block)
103
+ end
104
+ ensure
105
+ __decrement_run_default_depth
88
106
  end
89
107
  end
90
108
 
@@ -1,3 +1,3 @@
1
1
  module Chanko
2
- VERSION = "2.0.5"
2
+ VERSION = "2.0.6"
3
3
  end
@@ -115,6 +115,23 @@ module Chanko
115
115
  end
116
116
  end
117
117
 
118
+ context "when nested run_default is called in function" do
119
+ it "invokes given block as a fallback" do
120
+ Chanko::Loader.load("sensitive_unit")
121
+ expect(SensitiveUnit).to receive(:ping).once
122
+
123
+ controller.invoke(:sensitive_unit, :outer_default) do
124
+ "default"
125
+ end.should eq "default"
126
+ end
127
+
128
+ it 'use both locals' do
129
+ controller.invoke(:example_unit, :nesting_locals_outer, :locals => { :outer_one => "outer_one", :outer_two => "outer_two", :outer_three => "outer_three"}) do
130
+ "default"
131
+ end.should eq "outer_one.inner_one.outer_two.default.inner_two.outer_three"
132
+ end
133
+ end
134
+
118
135
  context "when run_default is called but no block given" do
119
136
  it "invokes given block as a fallback" do
120
137
  controller.invoke(:example_unit, :default).should == nil
@@ -29,6 +29,19 @@ module ExampleUnit
29
29
  function(:render) do
30
30
  render_to_string :partial => "/test", :locals => { :local => "test" }
31
31
  end
32
+
33
+ function(:nesting_locals_outer) do
34
+ result = "#{outer_one}."
35
+ result += invoke(:example_unit, :nesting_locals_inner, :locals => { :inner_one => "inner_one", :inner_two => "inner_two" }) do
36
+ "#{outer_two}.#{run_default}"
37
+ end
38
+ result += ".#{outer_three}"
39
+ result
40
+ end
41
+
42
+ function(:nesting_locals_inner) do
43
+ "#{inner_one}.#{run_default}.#{inner_two}"
44
+ end
32
45
  end
33
46
 
34
47
  scope(:view) do
@@ -1,4 +1,20 @@
1
1
  module SensitiveUnit
2
2
  include Chanko::Unit
3
3
  raise_error
4
+
5
+ def self.ping
6
+ end
7
+
8
+ scope(:controller) do
9
+ function(:outer_default) do
10
+ invoke(:sensitive_unit, :inner_default) do
11
+ SensitiveUnit.ping
12
+ run_default
13
+ end
14
+ end
15
+
16
+ function(:inner_default) do
17
+ run_default
18
+ end
19
+ end
4
20
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: chanko
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.5
4
+ version: 2.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryo Nakamura
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-06-26 00:00:00.000000000 Z
11
+ date: 2015-05-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -180,7 +180,7 @@ dependencies:
180
180
  version: '0'
181
181
  description: Chanko is a Rails extension tool
182
182
  email:
183
- - r7kamura@gmail.com
183
+ - tech@cookpad.com
184
184
  executables: []
185
185
  extensions: []
186
186
  extra_rdoc_files: []
@@ -300,7 +300,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
300
300
  version: '0'
301
301
  requirements: []
302
302
  rubyforge_project:
303
- rubygems_version: 2.2.2
303
+ rubygems_version: 2.0.14
304
304
  signing_key:
305
305
  specification_version: 4
306
306
  summary: Rails extension tool
@@ -369,4 +369,3 @@ test_files:
369
369
  - spec/fixtures/units/insensitive_unit/insensitive_unit.rb
370
370
  - spec/fixtures/units/sensitive_unit/sensitive_unit.rb
371
371
  - spec/spec_helper.rb
372
- has_rdoc: