Module: Pleiades::Command::Routing::NestBlocks
- Extended by:
- ActiveSupport::Concern
- Includes:
- RouteRefine
- Included in:
- Pleiades::Command::Router
- Defined in:
- lib/pleiades/core/command/routing/nest_blocks.rb
Overview
ブロック付きメソッド郡。
イベントメソッドに渡すキーワード引数を、ネストしたリソースとしてまとめて実行する。
Instance Method Summary collapse
-
#_method_ ⇒ Object
コマンドクラスへの呼び出すメソッド名をネストしたリソースに適用する。.
-
#action(*actions, &block) ⇒ Object
アクションをネストする。.
-
#concern(*concerns, &block) ⇒ Object
Concernsをネストしたリソースに適用する。.
- #method(method_name, &block) ⇒ Object
-
#nest_blocks(**keywords, &block) ⇒ Object
複数のネストメソッドを呼び出す。.
-
#scope(*scopes, &block) ⇒ Object
(also: #scope_append, #scope_unshift)
スコープをネストする。.
Methods included from RouteRefine
Instance Method Details
#_method_ ⇒ Object
コマンドクラスへの呼び出すメソッド名をネストしたリソースに適用する。
## EXAMPLE ### 使用しないpostback scope :hoge, action: :fuga, method: :greet # => Hoge::Fuga#greet が実行される。
postback scope :hoge, action: :piyo, method: :greet # => Hoge::Piyo#greet が実行される
### 使用するmethod: :greet do
postback scope :hoge, action: :fuga
postback scope :hoge, action: :piyo
end
118 |
# File 'lib/pleiades/core/command/routing/nest_blocks.rb', line 118 alias :_method_ method |
#action(*actions, &block) ⇒ Object
アクションをネストする。
EXAMPLE ## 使用しないpostback scope :hoge, action: :piyo postback scope :fuga, action: :piyo
## 使用するaction :piyo do
postback scope :hoge
postback scope :fuga
end
## EXAMPLE(単一リソースのネスト) ### 使用しないpostback scope :hoge, action: :piyo postback scope :fuga, action: :piyo
### 使用するaction :piyo do
postback scope :hoge
postback scope :fuga
end
## EXAMPLE(複数リソースのネスト) ### 使用しないpostback scope :piyo, action: :hoge postback scope :piyo, action: :fuga
### 使用するaction :hoge, :fuga do
postback scope: :piyo
end
85 86 87 |
# File 'lib/pleiades/core/command/routing/nest_blocks.rb', line 85 def action(*actions, &block) actions.flatten.map { |act| nest_block __method__, act, &block } end |
#concern(*concerns, &block) ⇒ Object
Concernsをネストしたリソースに適用する。
concern HogeModule do
postback # => HogeModule が include される
concern FugaModule do
postback # => HogeModule, FugaModule が include される
end
end
98 99 100 |
# File 'lib/pleiades/core/command/routing/nest_blocks.rb', line 98 def concern(*concerns, &block) nest_block __method__, concerns, &block end |
#method(method_name, &block) ⇒ Object
119 120 121 122 123 124 125 |
# File 'lib/pleiades/core/command/routing/nest_blocks.rb', line 119 def method(method_name, &block) if block_given? nest_block __method__, method_name, &block else _method_(method_name) end end |
#nest_blocks(**keywords, &block) ⇒ Object
複数のネストメソッドを呼び出す。
EXAMPLE ## 使用しない
scope :hoge do
action :fuga do
postback
end
end
## 使用するnest_blocks scope: :hoge, action: :fuga do
postback
end
145 146 147 148 149 150 151 152 153 154 155 |
# File 'lib/pleiades/core/command/routing/nest_blocks.rb', line 145 def nest_blocks(**keywords, &block) validate_event_keywords(keywords.deep_dup.merge(type: '')) = (keywords) return if == false .each do |opt| nest(@options.deep_dup.merge(opt), &block) end end |
#scope(*scopes, &block) ⇒ Object Also known as: scope_append, scope_unshift
スコープをネストする。
## メソッド呼び出し時のメソッド名による処理の違いscope, scope_append 引数を後方追加する
scope_unshift 引数を前方追加する
## EXAMPLE(単一リソースのネスト) ### 使用しないpostback scope :hoge, action: :fuga postback scope :hoge, action: :piyo
### 使用するscope :hoge do
postback action: :fuga
postback action: :piyo
end
## EXAMPLE(複数リソースのネスト) ### 使用しないpostback scope :hoge, action: :piyo postback scope :fuga, action: :piyo
### 使用するscope :hoge, :fuga do
postback action: :piyo
end
45 46 47 |
# File 'lib/pleiades/core/command/routing/nest_blocks.rb', line 45 def scope(*scopes, &block) scopes.flatten.map { |scp| nest_block __callee__, scp, &block } end |