Class: DevScripts::Script
- Inherits:
-
Object
- Object
- DevScripts::Script
show all
- Defined in:
- lib/dev_scripts/script.rb
Defined Under Namespace
Classes: ScriptNotRegistered
Instance Attribute Summary collapse
Class Method Summary
collapse
Instance Method Summary
collapse
Constructor Details
#initialize(script_name:, &block) ⇒ Script
Returns a new instance of Script.
41
42
43
44
45
46
|
# File 'lib/dev_scripts/script.rb', line 41
def initialize(script_name:, &block)
@name = script_name
@block = block
@base = block.binding.receiver
@run_args = []
end
|
Instance Attribute Details
#name ⇒ Object
Returns the value of attribute name.
39
40
41
|
# File 'lib/dev_scripts/script.rb', line 39
def name
@name
end
|
Class Method Details
.clear_scripts ⇒ Object
14
15
16
|
# File 'lib/dev_scripts/script.rb', line 14
def clear_scripts
@scripts = []
end
|
.define_script(script_name, &block) ⇒ Object
18
19
20
|
# File 'lib/dev_scripts/script.rb', line 18
def define_script(script_name, &block)
scripts << new(script_name: script_name, &block)
end
|
.execute(args) ⇒ Object
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
# File 'lib/dev_scripts/script.rb', line 22
def execute(args)
script_name, *rest = args
script_to_execute = scripts.find { |script| script.name == script_name.to_sym }
if script_to_execute
begin
script_to_execute.run(rest)
ensure
scripts[scripts.index(script_to_execute)] = script_to_execute.duplicate
end
else
raise ScriptNotRegistered.new(script_name)
end
end
|
.scripts ⇒ Object
10
11
12
|
# File 'lib/dev_scripts/script.rb', line 10
def scripts
@scripts ||= []
end
|
Instance Method Details
#duplicate ⇒ Object
54
55
56
|
# File 'lib/dev_scripts/script.rb', line 54
def duplicate
self.class.new(script_name: name, &block)
end
|
#run(args) ⇒ Object
48
49
50
51
52
|
# File 'lib/dev_scripts/script.rb', line 48
def run(args)
@run_args = args
instance_eval(&block)
end
|