Module: Trailblazer::Macro::Policy
- Defined in:
- lib/trailblazer/macro/guard.rb,
lib/trailblazer/macro/policy.rb,
lib/trailblazer/macro/pundit.rb
Defined Under Namespace
Modules: Guard, Pundit Classes: Eval
Class Method Summary collapse
- .Guard(proc, name: :default, &block) ⇒ Object
- .Pundit(policy_class, action, name: :default) ⇒ Object
-
.step(condition, name: nil, &block) ⇒ Object
Adds the ‘yield` result to the Railway and treats it like a policy-compatible object at runtime.
Class Method Details
.Guard(proc, name: :default, &block) ⇒ Object
3 4 5 |
# File 'lib/trailblazer/macro/guard.rb', line 3 def self.Guard(proc, name: :default, &block) Policy.step(Guard.build(proc), name: name) end |
.Pundit(policy_class, action, name: :default) ⇒ Object
3 4 5 |
# File 'lib/trailblazer/macro/pundit.rb', line 3 def self.Pundit(policy_class, action, name: :default) Policy.step(Pundit.build(policy_class, action), name: name) end |
.step(condition, name: nil, &block) ⇒ Object
Adds the ‘yield` result to the Railway and treats it like a policy-compatible object at runtime.
31 32 33 34 35 36 37 38 39 40 41 42 43 |
# File 'lib/trailblazer/macro/policy.rb', line 31 def self.step(condition, name: nil, &block) path = :"policy.#{name}.eval" task = Eval.new(name: name, path: path) injections = { Trailblazer::Activity::Railway.Inject() => { # :"policy.default.eval" path => ->(*) { condition } } } {task: task, id: path}.merge(injections) end |