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 +4 -4
- data/CHANGELOG.md +3 -0
- data/MIT-LICENSE +1 -1
- data/chanko.gemspec +1 -1
- data/lib/chanko/invoker.rb +24 -6
- data/lib/chanko/version.rb +1 -1
- data/spec/chanko/invoker_spec.rb +17 -0
- data/spec/fixtures/units/example_unit/example_unit.rb +13 -0
- data/spec/fixtures/units/sensitive_unit/sensitive_unit.rb +16 -0
- metadata +4 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 30b75ddfc1e9fe43d6d3b754e7fbf52d335cc3fc
|
4
|
+
data.tar.gz: 95f8aff4181c18e35e9c9bab4764c8c965e10fec
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 475502c0c6e2795a09ec61ec99fb42ebdae1d34c63b35e49304a943c4f6b7806c6b688115662255ef155947e417b7ba62253c7ad17f741d11d122ba5e36b6433
|
7
|
+
data.tar.gz: 4984aabddb178deea973816105c6b3a590d2dc2b5901a1ec61c6a52e86f7b4797a5582a019437cc3b25069167094db4d9cf90cd8373b616708cf56d5ccfdda4e
|
data/CHANGELOG.md
CHANGED
data/MIT-LICENSE
CHANGED
data/chanko.gemspec
CHANGED
@@ -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 = ["
|
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"
|
data/lib/chanko/invoker.rb
CHANGED
@@ -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
|
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
|
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
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
96
|
+
current_default_block = __default_block
|
97
|
+
begin
|
98
|
+
__increment_run_default_depth
|
99
|
+
if view?
|
100
|
+
capture(¤t_default_block)
|
101
|
+
else
|
102
|
+
instance_exec(¤t_default_block)
|
103
|
+
end
|
104
|
+
ensure
|
105
|
+
__decrement_run_default_depth
|
88
106
|
end
|
89
107
|
end
|
90
108
|
|
data/lib/chanko/version.rb
CHANGED
data/spec/chanko/invoker_spec.rb
CHANGED
@@ -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.
|
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:
|
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
|
-
-
|
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.
|
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:
|