aruba 1.0.0.pre.alpha.5 → 1.0.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +153 -28
- data/CONTRIBUTING.md +0 -9
- data/LICENSE +1 -1
- data/README.md +37 -30
- data/lib/aruba/api.rb +0 -1
- data/lib/aruba/api/bundler.rb +17 -2
- data/lib/aruba/api/commands.rb +15 -16
- data/lib/aruba/api/core.rb +64 -50
- data/lib/aruba/api/environment.rb +12 -4
- data/lib/aruba/api/filesystem.rb +32 -46
- data/lib/aruba/api/text.rb +15 -3
- data/lib/aruba/aruba_path.rb +23 -95
- data/lib/aruba/basic_configuration.rb +46 -65
- data/lib/aruba/basic_configuration/option.rb +2 -2
- data/lib/aruba/cli.rb +4 -1
- data/lib/aruba/config/jruby.rb +1 -1
- data/lib/aruba/config_wrapper.rb +17 -4
- data/lib/aruba/configuration.rb +29 -22
- data/lib/aruba/console.rb +0 -2
- data/lib/aruba/console/help.rb +8 -5
- data/lib/aruba/contracts/absolute_path.rb +3 -3
- data/lib/aruba/contracts/is_power_of_two.rb +2 -2
- data/lib/aruba/contracts/relative_path.rb +3 -3
- data/lib/aruba/cucumber/command.rb +93 -82
- data/lib/aruba/cucumber/file.rb +43 -23
- data/lib/aruba/cucumber/hooks.rb +4 -1
- data/lib/aruba/cucumber/testing_frameworks.rb +14 -12
- data/lib/aruba/event_bus.rb +4 -2
- data/lib/aruba/event_bus/name_resolver.rb +9 -8
- data/lib/aruba/events.rb +2 -1
- data/lib/aruba/hooks.rb +2 -4
- data/lib/aruba/in_config_wrapper.rb +8 -5
- data/lib/aruba/initializer.rb +9 -3
- data/lib/aruba/matchers/base/base_matcher.rb +2 -11
- data/lib/aruba/matchers/base/message_indenter.rb +1 -1
- data/lib/aruba/matchers/base/object_formatter.rb +0 -5
- data/lib/aruba/matchers/collection/include_an_object.rb +4 -4
- data/lib/aruba/matchers/command/be_successfully_executed.rb +3 -1
- data/lib/aruba/matchers/command/have_exit_status.rb +3 -1
- data/lib/aruba/matchers/command/have_finished_in_time.rb +3 -1
- data/lib/aruba/matchers/command/have_output.rb +3 -1
- data/lib/aruba/matchers/command/have_output_on_stderr.rb +3 -1
- data/lib/aruba/matchers/command/have_output_on_stdout.rb +3 -1
- data/lib/aruba/matchers/directory/have_sub_directory.rb +8 -3
- data/lib/aruba/matchers/file/have_file_size.rb +4 -2
- data/lib/aruba/matchers/path/have_permissions.rb +7 -4
- data/lib/aruba/platforms/announcer.rb +25 -11
- data/lib/aruba/platforms/aruba_file_creator.rb +3 -1
- data/lib/aruba/platforms/aruba_fixed_size_file_creator.rb +7 -2
- data/lib/aruba/platforms/aruba_logger.rb +10 -9
- data/lib/aruba/platforms/command_monitor.rb +4 -6
- data/lib/aruba/platforms/determine_disk_usage.rb +55 -20
- data/lib/aruba/platforms/filesystem_status.rb +19 -13
- data/lib/aruba/platforms/simple_table.rb +2 -2
- data/lib/aruba/platforms/unix_environment_variables.rb +9 -4
- data/lib/aruba/platforms/unix_platform.rb +10 -10
- data/lib/aruba/platforms/unix_which.rb +1 -1
- data/lib/aruba/platforms/windows_command_string.rb +1 -1
- data/lib/aruba/platforms/windows_environment_variables.rb +2 -1
- data/lib/aruba/platforms/windows_platform.rb +3 -3
- data/lib/aruba/platforms/windows_which.rb +6 -2
- data/lib/aruba/processes/basic_process.rb +4 -6
- data/lib/aruba/processes/debug_process.rb +4 -2
- data/lib/aruba/processes/in_process.rb +5 -3
- data/lib/aruba/processes/spawn_process.rb +27 -16
- data/lib/aruba/rspec.rb +25 -15
- data/lib/aruba/runtime.rb +11 -4
- data/lib/aruba/setup.rb +23 -10
- data/lib/aruba/tasks/docker_helpers.rb +3 -1
- data/lib/aruba/version.rb +1 -1
- metadata +96 -109
- data/.cucumberproignore +0 -3
- data/.document +0 -5
- data/.github/ISSUE_TEMPLATE.md +0 -48
- data/.github/PULL_REQUEST_TEMPLATE.md +0 -41
- data/.gitignore +0 -38
- data/.rspec +0 -3
- data/.rubocop.yml +0 -31
- data/.rubocop_todo.yml +0 -258
- data/.simplecov +0 -34
- data/.travis.yml +0 -73
- data/.yardopts +0 -11
- data/Dockerfile +0 -67
- data/Gemfile +0 -15
- data/Rakefile +0 -92
- data/TODO.md +0 -13
- data/appveyor.yml +0 -30
- data/aruba.gemspec +0 -46
- data/bin/console +0 -7
- data/bin/test +0 -9
- data/config/.gitignore +0 -1
- data/cucumber.yml +0 -6
- data/docker-compose.yml +0 -26
- data/fixtures/cli-app/.gitignore +0 -9
- data/fixtures/cli-app/.rspec +0 -2
- data/fixtures/cli-app/README.md +0 -39
- data/fixtures/cli-app/Rakefile +0 -1
- data/fixtures/cli-app/bin/aruba-test-cli +0 -6
- data/fixtures/cli-app/cli-app.gemspec +0 -25
- data/fixtures/cli-app/features/support/aruba.rb +0 -1
- data/fixtures/cli-app/features/support/env.rb +0 -1
- data/fixtures/cli-app/lib/cli/app.rb +0 -9
- data/fixtures/cli-app/lib/cli/app/suppress_simple_cov_output.rb +0 -15
- data/fixtures/cli-app/lib/cli/app/version.rb +0 -5
- data/fixtures/cli-app/script/console +0 -14
- data/fixtures/cli-app/spec/spec_helper.rb +0 -7
- data/fixtures/cli-app/spec/support/aruba.rb +0 -1
- data/fixtures/copy/file.txt +0 -1
- data/fixtures/empty-app/.gitignore +0 -9
- data/fixtures/empty-app/.rspec +0 -2
- data/fixtures/empty-app/README.md +0 -24
- data/fixtures/empty-app/Rakefile +0 -1
- data/fixtures/empty-app/cli-app.gemspec +0 -25
- data/fixtures/empty-app/lib/cli/app.rb +0 -7
- data/fixtures/empty-app/lib/cli/app/version.rb +0 -5
- data/fixtures/getting-started-app/.gitignore +0 -4
- data/fixtures/getting-started-app/Gemfile +0 -4
- data/fixtures/getting-started-app/README.md +0 -3
- data/fixtures/getting-started-app/features/support/env.rb +0 -1
- data/lib/aruba/extensions/string/strip.rb +0 -25
- data/lib/aruba/platforms/disk_usage_calculator.rb +0 -20
data/lib/aruba/api/text.rb
CHANGED
@@ -14,7 +14,14 @@ module Aruba
|
|
14
14
|
# @param [#to_s] text
|
15
15
|
# Input
|
16
16
|
def unescape_text(text)
|
17
|
-
text
|
17
|
+
text
|
18
|
+
.gsub('\n', "\n")
|
19
|
+
.gsub('\"', '"')
|
20
|
+
.gsub('\e', "\e")
|
21
|
+
.gsub('\033', "\e")
|
22
|
+
.gsub('\016', "\016")
|
23
|
+
.gsub('\017', "\017")
|
24
|
+
.gsub('\t', "\t")
|
18
25
|
end
|
19
26
|
|
20
27
|
# Remove ansi characters from text
|
@@ -22,7 +29,10 @@ module Aruba
|
|
22
29
|
# @param [#to_s] text
|
23
30
|
# Input
|
24
31
|
def extract_text(text)
|
25
|
-
text
|
32
|
+
text
|
33
|
+
.gsub(/(?:\e|\033)\[\d+(?>(;\d+)*)m/, '')
|
34
|
+
.gsub(/\\\[|\\\]/, '')
|
35
|
+
.gsub(/\007|\016|\017/, '')
|
26
36
|
end
|
27
37
|
|
28
38
|
# Unescape special characters and remove ANSI characters
|
@@ -41,7 +51,9 @@ module Aruba
|
|
41
51
|
# @param [#to_s] text
|
42
52
|
# The text to parse
|
43
53
|
def replace_variables(text)
|
44
|
-
|
54
|
+
if text.include? '<pid-last-command-started>'
|
55
|
+
text = text.gsub(/<pid-last-command-started>/, last_command_started.pid.to_s)
|
56
|
+
end
|
45
57
|
|
46
58
|
text
|
47
59
|
end
|
data/lib/aruba/aruba_path.rb
CHANGED
@@ -1,30 +1,21 @@
|
|
1
1
|
require 'pathname'
|
2
|
-
require 'delegate'
|
3
|
-
|
4
|
-
require 'aruba/file_size'
|
5
2
|
|
6
3
|
# Aruba
|
7
4
|
module Aruba
|
8
5
|
# Pathname for aruba files and directories
|
9
6
|
#
|
10
7
|
# @private
|
11
|
-
class ArubaPath
|
8
|
+
class ArubaPath
|
12
9
|
def initialize(path)
|
13
|
-
obj = [path.to_s].flatten
|
14
|
-
|
15
|
-
super obj
|
16
|
-
|
17
|
-
@delegate_sd_obj = obj
|
10
|
+
@obj = [path.to_s].flatten
|
18
11
|
end
|
19
12
|
|
20
|
-
|
21
|
-
|
22
|
-
::Pathname.new(::File.join(*@delegate_sd_obj))
|
13
|
+
def to_str
|
14
|
+
to_pathname.to_s
|
23
15
|
end
|
24
16
|
|
25
|
-
|
26
|
-
|
27
|
-
@delegate_sd_obj = [obj.to_s].flatten
|
17
|
+
def to_s
|
18
|
+
to_str
|
28
19
|
end
|
29
20
|
|
30
21
|
# Add directory/file to path
|
@@ -39,47 +30,19 @@ module Aruba
|
|
39
30
|
# puts path
|
40
31
|
# # => path/to/dir.d/subdir.d
|
41
32
|
def push(p)
|
42
|
-
@
|
33
|
+
@obj << p
|
43
34
|
end
|
44
35
|
alias << push
|
45
36
|
|
46
|
-
# Remove last component of path
|
37
|
+
# Remove last pushed component of path
|
47
38
|
#
|
48
39
|
# @example
|
49
|
-
# path = ArubaPath.new 'path/to
|
40
|
+
# path = ArubaPath.new 'path/to'
|
41
|
+
# path.push 'dir'
|
50
42
|
# path.pop
|
51
43
|
# puts path # => path/to
|
52
44
|
def pop
|
53
|
-
@
|
54
|
-
end
|
55
|
-
|
56
|
-
# How many parts has the file name
|
57
|
-
#
|
58
|
-
# @return [Integer]
|
59
|
-
# The count of file name parts
|
60
|
-
#
|
61
|
-
# @example
|
62
|
-
# path = ArubaPath.new('path/to/file.txt')
|
63
|
-
# path.depth # => 3
|
64
|
-
#
|
65
|
-
def depth
|
66
|
-
__getobj__.each_filename.to_a.size
|
67
|
-
end
|
68
|
-
|
69
|
-
# Path ends with string
|
70
|
-
#
|
71
|
-
# @param [String] string
|
72
|
-
# The string to check
|
73
|
-
def end_with?(string)
|
74
|
-
to_s.end_with? string
|
75
|
-
end
|
76
|
-
|
77
|
-
# Path starts with string
|
78
|
-
#
|
79
|
-
# @param [String] string
|
80
|
-
# The string to check
|
81
|
-
def start_with?(string)
|
82
|
-
to_s.start_with? string
|
45
|
+
@obj.pop
|
83
46
|
end
|
84
47
|
|
85
48
|
# Return string at index
|
@@ -89,54 +52,19 @@ module Aruba
|
|
89
52
|
to_s[index]
|
90
53
|
end
|
91
54
|
|
92
|
-
|
93
|
-
# (So the unit size can be autodetected)
|
94
|
-
|
95
|
-
# Report minimum disk space used
|
96
|
-
#
|
97
|
-
# This estimates the minimum bytes allocated by the path.
|
98
|
-
#
|
99
|
-
# E.g. a 1-byte text file on a typical EXT-3 filesystem takes up 4096 bytes
|
100
|
-
# (could be more if it was truncated or less for sparse files).
|
101
|
-
#
|
102
|
-
# Both `File::Stat` and the `stat()` system call will report 8 `blocks`
|
103
|
-
# (each "usually" represents 512 bytes). So 8 * 512 is exactly 4096 bytes.
|
104
|
-
#
|
105
|
-
# (The "magic" 512 bye implied makes the value of "blocks" so confusing).
|
106
|
-
#
|
107
|
-
# Currently Aruba allows you to set what's called the `physical_block_size`,
|
108
|
-
# which is a bit misleading - it's the "512" value. So if you somehow have a
|
109
|
-
# "filesystem unit size" of 8192 (instead of a typical 4KB), set the
|
110
|
-
# `physical_block_size` to 1024 (yes, divide by 8: 8192/8 = 1024).
|
111
|
-
#
|
112
|
-
# Ideally, Aruba should provide e.g. `Aruba.config.fs_allocation_unit`
|
113
|
-
# (with 4096 as the default), so you wouldn't have to "divide by 8".
|
114
|
-
#
|
115
|
-
# (typical_fs_unit / typical_dev_bsize = 4096 / 512 = 8)
|
116
|
-
#
|
117
|
-
#
|
118
|
-
# @return [Integer]
|
119
|
-
# Total bytes allocate
|
120
|
-
#
|
121
|
-
# TODO: this is recommended over the above "blocks"
|
122
|
-
def minimum_disk_space_used
|
123
|
-
# TODO: replace Aruba.config.physical_block_size
|
124
|
-
# with something like Aruba.config.fs_allocation_unit
|
125
|
-
dev_bsize = Aruba.config.physical_block_size
|
126
|
-
|
127
|
-
stat = File::Stat.new(to_s)
|
128
|
-
|
129
|
-
blocks = stat.blocks
|
130
|
-
return (blocks * dev_bsize) if blocks
|
55
|
+
private
|
131
56
|
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
57
|
+
# Get path
|
58
|
+
def to_pathname
|
59
|
+
current_path = @obj.inject do |path, element|
|
60
|
+
if element.start_with?('~') ||
|
61
|
+
Aruba.platform.absolute_path?(element)
|
62
|
+
element
|
63
|
+
else
|
64
|
+
File.join(path, element)
|
65
|
+
end
|
66
|
+
end
|
67
|
+
::Pathname.new(current_path)
|
140
68
|
end
|
141
69
|
end
|
142
70
|
end
|
@@ -20,27 +20,18 @@ module Aruba
|
|
20
20
|
# @param [Symbol] name
|
21
21
|
# The name of the reader
|
22
22
|
#
|
23
|
-
# @
|
24
|
-
#
|
25
|
-
#
|
26
|
-
# @option [Class, Module] contract
|
27
|
-
# The contract for the option
|
23
|
+
# @option [Class, Module] type
|
24
|
+
# The type contract for the option
|
28
25
|
#
|
29
26
|
# @option [Object] default
|
30
27
|
# The default value
|
31
|
-
def option_reader(name,
|
32
|
-
|
33
|
-
default = opts[:default]
|
34
|
-
|
35
|
-
fail ArgumentError, 'Either use block or default value' if block_given? && default
|
36
|
-
fail ArgumentError, 'contract-options is required' if contract.nil?
|
28
|
+
def option_reader(name, type:, default: nil)
|
29
|
+
raise ArgumentError, 'Either use block or default value' if block_given? && default
|
37
30
|
|
38
|
-
Contract contract
|
39
31
|
add_option(name, block_given? ? yield(InConfigWrapper.new(known_options)) : default)
|
40
32
|
|
33
|
+
Contract None => type
|
41
34
|
define_method(name) { find_option(name).value }
|
42
|
-
|
43
|
-
self
|
44
35
|
end
|
45
36
|
|
46
37
|
# Define an option reader and writer
|
@@ -48,31 +39,23 @@ module Aruba
|
|
48
39
|
# @param [Symbol] name
|
49
40
|
# The name of the reader
|
50
41
|
#
|
51
|
-
# @
|
52
|
-
#
|
53
|
-
#
|
54
|
-
# @option [Class, Module] contract
|
55
|
-
# The contract for the option
|
42
|
+
# @option [Class, Module] type
|
43
|
+
# The type contract for the option
|
56
44
|
#
|
57
45
|
# @option [Object] default
|
58
46
|
# The default value
|
59
47
|
#
|
60
|
-
def option_accessor(name,
|
61
|
-
|
62
|
-
default = opts[:default]
|
63
|
-
|
64
|
-
fail ArgumentError, 'Either use block or default value' if block_given? && default
|
65
|
-
# fail ArgumentError, 'Either use block or default value' if !block_given? && default.nil? && default.to_s.empty?
|
66
|
-
fail ArgumentError, 'contract-options is required' if contract.nil?
|
48
|
+
def option_accessor(name, type:, default: nil)
|
49
|
+
raise ArgumentError, 'Either use block or default value' if block_given? && default
|
67
50
|
|
68
51
|
# Add writer
|
69
52
|
add_option(name, block_given? ? yield(InConfigWrapper.new(known_options)) : default)
|
70
53
|
|
71
|
-
Contract
|
54
|
+
Contract type => type
|
72
55
|
define_method("#{name}=") { |v| find_option(name).value = v }
|
73
56
|
|
74
57
|
# Add reader
|
75
|
-
option_reader name,
|
58
|
+
option_reader name, type: type
|
76
59
|
end
|
77
60
|
|
78
61
|
private
|
@@ -91,8 +74,6 @@ module Aruba
|
|
91
74
|
attr_accessor :local_options
|
92
75
|
attr_writer :hooks
|
93
76
|
|
94
|
-
# attr_reader :hooks
|
95
|
-
|
96
77
|
public
|
97
78
|
|
98
79
|
# Create configuration
|
@@ -121,68 +102,68 @@ module Aruba
|
|
121
102
|
obj
|
122
103
|
end
|
123
104
|
|
124
|
-
# Define
|
105
|
+
# Define before-hook
|
125
106
|
#
|
126
107
|
# @param [Symbol, String] name
|
127
108
|
# The name of the hook
|
128
109
|
#
|
129
|
-
# @param [Proc] context
|
130
|
-
# The context a hook should run in. This is a runtime only option.
|
131
|
-
#
|
132
|
-
# @param [Array] args
|
133
|
-
# Arguments for the run of hook. This is a runtime only option.
|
134
|
-
#
|
135
110
|
# @yield
|
136
111
|
# The code block which should be run. This is a configure time only option
|
137
|
-
def before(name,
|
112
|
+
def before(name, &block)
|
138
113
|
name = format('%s_%s', 'before_', name.to_s).to_sym
|
114
|
+
raise ArgumentError, 'A block is required' unless block
|
139
115
|
|
140
|
-
|
141
|
-
@hooks.append(name, block)
|
116
|
+
@hooks.append(name, block)
|
142
117
|
|
143
|
-
|
144
|
-
else
|
145
|
-
@hooks.execute(name, context, *args)
|
146
|
-
end
|
118
|
+
self
|
147
119
|
end
|
148
120
|
|
149
|
-
#
|
121
|
+
# Run before-hook
|
150
122
|
#
|
151
123
|
# @param [Symbol, String] name
|
152
124
|
# The name of the hook
|
153
125
|
#
|
154
126
|
# @param [Proc] context
|
155
|
-
# The context a hook should run in
|
127
|
+
# The context a hook should run in
|
156
128
|
#
|
157
129
|
# @param [Array] args
|
158
|
-
# Arguments for the run of hook
|
130
|
+
# Arguments for the run of hook
|
131
|
+
def run_before_hook(name, context, *args)
|
132
|
+
name = format('%s_%s', 'before_', name.to_s).to_sym
|
133
|
+
|
134
|
+
@hooks.execute(name, context, *args)
|
135
|
+
end
|
136
|
+
|
137
|
+
# Define after-hook
|
138
|
+
#
|
139
|
+
# @param [Symbol, String] name
|
140
|
+
# The name of the hook
|
159
141
|
#
|
160
142
|
# @yield
|
161
143
|
# The code block which should be run. This is a configure time only option
|
162
|
-
def after(name,
|
144
|
+
def after(name, &block)
|
163
145
|
name = format('%s_%s', 'after_', name.to_s).to_sym
|
146
|
+
raise ArgumentError, 'A block is required' unless block
|
164
147
|
|
165
|
-
|
166
|
-
@hooks.append(name, block)
|
167
|
-
|
168
|
-
self
|
169
|
-
else
|
170
|
-
@hooks.execute(name, context, *args)
|
171
|
-
end
|
172
|
-
end
|
173
|
-
|
174
|
-
# Check if before-hook <name> is defined
|
175
|
-
def before?(name)
|
176
|
-
name = format('%s_%s', 'before_', name.to_s).to_sym
|
148
|
+
@hooks.append(name, block)
|
177
149
|
|
178
|
-
|
150
|
+
self
|
179
151
|
end
|
180
152
|
|
181
|
-
#
|
182
|
-
|
153
|
+
# Run after-hook
|
154
|
+
#
|
155
|
+
# @param [Symbol, String] name
|
156
|
+
# The name of the hook
|
157
|
+
#
|
158
|
+
# @param [Proc] context
|
159
|
+
# The context a hook should run in
|
160
|
+
#
|
161
|
+
# @param [Array] args
|
162
|
+
# Arguments for the run of hook
|
163
|
+
def run_after_hook(name, context, *args)
|
183
164
|
name = format('%s_%s', 'after_', name.to_s).to_sym
|
184
165
|
|
185
|
-
@hooks.
|
166
|
+
@hooks.execute(name, context, *args)
|
186
167
|
end
|
187
168
|
|
188
169
|
# Check if <name> is option
|
@@ -210,7 +191,7 @@ module Aruba
|
|
210
191
|
end
|
211
192
|
|
212
193
|
def find_option(name)
|
213
|
-
|
194
|
+
raise NotImplementedError, %(Unknown option "#{name}") unless option? name
|
214
195
|
|
215
196
|
local_options[name]
|
216
197
|
end
|
@@ -15,8 +15,8 @@ module Aruba
|
|
15
15
|
name = opts[:name]
|
16
16
|
value = opts[:value]
|
17
17
|
|
18
|
-
|
19
|
-
|
18
|
+
raise ArgumentError, '"name" is required' unless opts.key? :name
|
19
|
+
raise ArgumentError, '"value" is required' unless opts.key? :value
|
20
20
|
|
21
21
|
@name = name
|
22
22
|
@value = value
|
data/lib/aruba/cli.rb
CHANGED
@@ -18,7 +18,10 @@ module Aruba
|
|
18
18
|
end
|
19
19
|
|
20
20
|
desc 'init', 'Initialize aruba'
|
21
|
-
option :test_framework,
|
21
|
+
option :test_framework,
|
22
|
+
default: 'cucumber',
|
23
|
+
enum: %w(cucumber rspec minitest),
|
24
|
+
desc: 'Choose which test framework to use'
|
22
25
|
def init
|
23
26
|
Aruba::Initializer.new.call(options[:test_framework])
|
24
27
|
end
|
data/lib/aruba/config/jruby.rb
CHANGED
@@ -17,7 +17,7 @@ Aruba.configure do |config|
|
|
17
17
|
|
18
18
|
env['JRUBY_OPTS'] = jruby_opts
|
19
19
|
|
20
|
-
if RbConfig::CONFIG['host_os']
|
20
|
+
if /solaris|sunos/i.match?(RbConfig::CONFIG['host_os'])
|
21
21
|
java_opts = env['JAVA_OPTS'] || ''
|
22
22
|
|
23
23
|
# force jRuby to use client JVM for faster startup times
|
data/lib/aruba/config_wrapper.rb
CHANGED
@@ -30,11 +30,11 @@ module Aruba
|
|
30
30
|
# If one method ends with "=", e.g. ":option1=", then notify the event
|
31
31
|
# queue, that the user changes the value of "option1"
|
32
32
|
def method_missing(name, *args, &block)
|
33
|
-
if name.to_s.end_with?
|
34
|
-
event_bus.notify Events::ChangedConfiguration.new(changed: { name: name.to_s.gsub(/=$/, ''), value: args.first })
|
35
|
-
end
|
33
|
+
notify(name, args) if name.to_s.end_with?('=')
|
36
34
|
|
37
|
-
config.send(name, *args, &block)
|
35
|
+
return config.send(name, *args, &block) if config.respond_to? name
|
36
|
+
|
37
|
+
super
|
38
38
|
end
|
39
39
|
|
40
40
|
# Pass on respond_to?-calls
|
@@ -56,5 +56,18 @@ module Aruba
|
|
56
56
|
def respond_to?(m)
|
57
57
|
config.respond_to? m
|
58
58
|
end
|
59
|
+
|
60
|
+
private
|
61
|
+
|
62
|
+
def notify(name, args)
|
63
|
+
event_bus.notify(
|
64
|
+
Events::ChangedConfiguration.new(
|
65
|
+
changed: {
|
66
|
+
name: name.to_s.gsub(/=$/, ''),
|
67
|
+
value: args.first
|
68
|
+
}
|
69
|
+
)
|
70
|
+
)
|
71
|
+
end
|
59
72
|
end
|
60
73
|
end
|