chanko 2.0.5 → 2.0.6

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