jenkins-plugin-runtime 0.2.2 → 0.2.3

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.
@@ -22,9 +22,8 @@ Gem::Specification.new do |s|
22
22
  s.add_dependency "json"
23
23
  s.add_dependency "slop", "~> 3.0.2"
24
24
 
25
- s.add_development_dependency "rake", "0.8.7"
26
- s.add_development_dependency "rspec", "~> 2.7.0" # something in rspec 2.8 breaks rspec-spies
27
- s.add_development_dependency "rspec-spies"
28
- s.add_development_dependency "jenkins-war", "~> 1.445"
29
-
25
+ s.add_development_dependency "rake"
26
+ s.add_development_dependency "rspec"
27
+ s.add_development_dependency "rspec-spies", ">= 2.1.3"
28
+ s.add_development_dependency "jenkins-war", "> 1.445"
30
29
  end
@@ -50,7 +50,7 @@ module Jenkins
50
50
  # TODO: use Descriptor.getPossibleViewNames() that's made protected in 1.441 when it gets released
51
51
  base = "/#{name_to_path}/global"
52
52
  [base+".erb",base+".haml"].find { |n|
53
- self.class.java_class.class_loader.getResource(n)
53
+ self.getKlass.getResource(n)
54
54
  }
55
55
  end
56
56
 
@@ -29,7 +29,7 @@ module Jenkins
29
29
  def unknown(msg = nil, &block); add(Logger::UNKNOWN, msg, &block); end
30
30
 
31
31
  def <<(msg)
32
- logger.write(msg.to_s)
32
+ logger.println(msg.to_s)
33
33
  end
34
34
 
35
35
  private
@@ -39,15 +39,15 @@ module Jenkins
39
39
  if msg.nil? && block_given?
40
40
  msg = yield
41
41
  end
42
- str = msg2str(msg) + "\n"
42
+ str = msg2str(msg)
43
43
  return true if severity < @level
44
44
  case severity
45
45
  when Logger::DEBUG, Logger::INFO
46
- logger.write(str)
46
+ logger.println(str)
47
47
  when Logger::WARN, Logger::ERROR
48
- @native.error(str)
48
+ @native.error(str + "\n")
49
49
  else
50
- @native.fatalError(str)
50
+ @native.fatalError(str + "\n")
51
51
  end
52
52
  end
53
53
 
@@ -1,7 +1,7 @@
1
1
  module Jenkins
2
2
  class Plugin
3
3
  module Runtime
4
- VERSION = "0.2.2"
4
+ VERSION = "0.2.3"
5
5
  end
6
6
  end
7
7
  end
@@ -106,7 +106,8 @@ module Jenkins
106
106
  #
107
107
  # @return [Jenkins::Plugin::Specification] the loaded specification
108
108
  def self.load(path)
109
- eval(File.read(path), binding, path, 1)
109
+ _path = path.to_s
110
+ eval(File.read(_path), binding, _path, 1)
110
111
  end
111
112
 
112
113
  # Looks inside `dir` for a file ending in .pluginspec, and if found,
@@ -116,7 +117,7 @@ module Jenkins
116
117
  def self.find(dir = Dir.pwd)
117
118
  dir = Pathname(dir)
118
119
  if spec_path = Pathname(dir).entries.find {|e| e.to_s =~ /\.pluginspec$/}
119
- load(dir.join(spec_path))
120
+ load(dir.join(spec_path).to_s)
120
121
  end
121
122
  rescue Errno::ENOENT => e
122
123
  fail SpecificationNotFound, "#{dir} does not appear to be a directory"
@@ -20,7 +20,7 @@ describe Jenkins::Plugin::Specification do
20
20
  end
21
21
 
22
22
  describe "a spec loaded from a file" do
23
- subject {Specification.load(Pathname(__FILE__).dirname.join('example.pluginspec'))}
23
+ subject {Specification.load(Pathname(__FILE__).dirname.join('example.pluginspec').to_s)}
24
24
  its(:name) {should eql "the-name"}
25
25
  its(:version) {should eql "1.0.0"}
26
26
  its(:description) {should eql "one great plugin"}
@@ -11,8 +11,8 @@ require 'jenkins/war'
11
11
  for path in Dir[File.join(ENV['HOME'], '.jenkins', 'wars', Jenkins::War::VERSION, "**/*.jar")]
12
12
  $CLASSPATH << path
13
13
  end
14
- $CLASSPATH << Pathname(__FILE__).dirname.join('../target/')
15
- $:.unshift Pathname(__FILE__).dirname.join('../lib')
14
+ $CLASSPATH << Pathname(__FILE__).dirname.join('../target/').to_s
15
+ $:.unshift Pathname(__FILE__).dirname.join('../lib').to_s
16
16
 
17
17
  require 'jenkins/plugin/runtime'
18
18
  require 'jenkins/plugin/proxies/proxy_helper'
metadata CHANGED
@@ -1,221 +1,254 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: jenkins-plugin-runtime
3
- version: !ruby/object:Gem::Version
4
- prerelease:
5
- version: 0.2.2
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.2.3
5
+ prerelease:
6
6
  platform: ruby
7
- authors:
8
- - Charles Lowell
9
- autorequire:
7
+ authors:
8
+ - Charles Lowell
9
+ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
-
13
- date: 2012-04-19 00:00:00 Z
14
- dependencies:
15
- - !ruby/object:Gem::Dependency
16
- name: json
17
- prerelease: false
18
- requirement: &id001 !ruby/object:Gem::Requirement
19
- none: false
20
- requirements:
21
- - - ">="
22
- - !ruby/object:Gem::Version
23
- version: "0"
24
- type: :runtime
25
- version_requirements: *id001
26
- - !ruby/object:Gem::Dependency
27
- name: slop
28
- prerelease: false
29
- requirement: &id002 !ruby/object:Gem::Requirement
30
- none: false
31
- requirements:
32
- - - ~>
33
- - !ruby/object:Gem::Version
34
- version: 3.0.2
35
- type: :runtime
36
- version_requirements: *id002
37
- - !ruby/object:Gem::Dependency
38
- name: rake
39
- prerelease: false
40
- requirement: &id003 !ruby/object:Gem::Requirement
41
- none: false
42
- requirements:
43
- - - "="
44
- - !ruby/object:Gem::Version
45
- version: 0.8.7
46
- type: :development
47
- version_requirements: *id003
48
- - !ruby/object:Gem::Dependency
49
- name: rspec
50
- prerelease: false
51
- requirement: &id004 !ruby/object:Gem::Requirement
52
- none: false
53
- requirements:
54
- - - ~>
55
- - !ruby/object:Gem::Version
56
- version: 2.7.0
57
- type: :development
58
- version_requirements: *id004
59
- - !ruby/object:Gem::Dependency
60
- name: rspec-spies
61
- prerelease: false
62
- requirement: &id005 !ruby/object:Gem::Requirement
63
- none: false
64
- requirements:
65
- - - ">="
66
- - !ruby/object:Gem::Version
67
- version: "0"
68
- type: :development
69
- version_requirements: *id005
70
- - !ruby/object:Gem::Dependency
71
- name: jenkins-war
72
- prerelease: false
73
- requirement: &id006 !ruby/object:Gem::Requirement
74
- none: false
75
- requirements:
76
- - - ~>
77
- - !ruby/object:Gem::Version
78
- version: "1.445"
79
- type: :development
80
- version_requirements: *id006
12
+ date: 2012-11-14 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: json
16
+ version_requirements: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - ! '>='
19
+ - !ruby/object:Gem::Version
20
+ version: !binary |-
21
+ MA==
22
+ none: false
23
+ requirement: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - ! '>='
26
+ - !ruby/object:Gem::Version
27
+ version: !binary |-
28
+ MA==
29
+ none: false
30
+ prerelease: false
31
+ type: :runtime
32
+ - !ruby/object:Gem::Dependency
33
+ name: slop
34
+ version_requirements: !ruby/object:Gem::Requirement
35
+ requirements:
36
+ - - ~>
37
+ - !ruby/object:Gem::Version
38
+ version: 3.0.2
39
+ none: false
40
+ requirement: !ruby/object:Gem::Requirement
41
+ requirements:
42
+ - - ~>
43
+ - !ruby/object:Gem::Version
44
+ version: 3.0.2
45
+ none: false
46
+ prerelease: false
47
+ type: :runtime
48
+ - !ruby/object:Gem::Dependency
49
+ name: rake
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: !binary |-
55
+ MA==
56
+ none: false
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: !binary |-
62
+ MA==
63
+ none: false
64
+ prerelease: false
65
+ type: :development
66
+ - !ruby/object:Gem::Dependency
67
+ name: rspec
68
+ version_requirements: !ruby/object:Gem::Requirement
69
+ requirements:
70
+ - - ! '>='
71
+ - !ruby/object:Gem::Version
72
+ version: !binary |-
73
+ MA==
74
+ none: false
75
+ requirement: !ruby/object:Gem::Requirement
76
+ requirements:
77
+ - - ! '>='
78
+ - !ruby/object:Gem::Version
79
+ version: !binary |-
80
+ MA==
81
+ none: false
82
+ prerelease: false
83
+ type: :development
84
+ - !ruby/object:Gem::Dependency
85
+ name: rspec-spies
86
+ version_requirements: !ruby/object:Gem::Requirement
87
+ requirements:
88
+ - - ! '>='
89
+ - !ruby/object:Gem::Version
90
+ version: 2.1.3
91
+ none: false
92
+ requirement: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ! '>='
95
+ - !ruby/object:Gem::Version
96
+ version: 2.1.3
97
+ none: false
98
+ prerelease: false
99
+ type: :development
100
+ - !ruby/object:Gem::Dependency
101
+ name: jenkins-war
102
+ version_requirements: !ruby/object:Gem::Requirement
103
+ requirements:
104
+ - - !binary |-
105
+ Pg==
106
+ - !ruby/object:Gem::Version
107
+ version: '1.445'
108
+ none: false
109
+ requirement: !ruby/object:Gem::Requirement
110
+ requirements:
111
+ - - !binary |-
112
+ Pg==
113
+ - !ruby/object:Gem::Version
114
+ version: '1.445'
115
+ none: false
116
+ prerelease: false
117
+ type: :development
81
118
  description: I'll think of a better description later, but if you're reading this, then I haven't
82
- email:
83
- - cowboyd@thefrontside.net
119
+ email:
120
+ - cowboyd@thefrontside.net
84
121
  executables: []
85
-
86
122
  extensions: []
87
-
88
123
  extra_rdoc_files: []
89
-
90
- files:
91
- - Gemfile
92
- - README.md
93
- - Rakefile
94
- - jenkins-plugin-runtime.gemspec
95
- - lib/core_ext/exception.rb
96
- - lib/jenkins/cli.rb
97
- - lib/jenkins/cli/command.rb
98
- - lib/jenkins/cli/command_proxy.rb
99
- - lib/jenkins/extension.rb
100
- - lib/jenkins/filepath.rb
101
- - lib/jenkins/launcher.rb
102
- - lib/jenkins/listeners.rb
103
- - lib/jenkins/listeners/run_listener.rb
104
- - lib/jenkins/listeners/run_listener_proxy.rb
105
- - lib/jenkins/model.rb
106
- - lib/jenkins/model/action.rb
107
- - lib/jenkins/model/action_proxy.rb
108
- - lib/jenkins/model/build.rb
109
- - lib/jenkins/model/describable.rb
110
- - lib/jenkins/model/describable_native.rb
111
- - lib/jenkins/model/describable_proxy.rb
112
- - lib/jenkins/model/descriptor.rb
113
- - lib/jenkins/model/environment.rb
114
- - lib/jenkins/model/environment_proxy.rb
115
- - lib/jenkins/model/listener.rb
116
- - lib/jenkins/model/root_action.rb
117
- - lib/jenkins/model/root_action_proxy.rb
118
- - lib/jenkins/plugin.rb
119
- - lib/jenkins/plugin/behavior.rb
120
- - lib/jenkins/plugin/proxies.rb
121
- - lib/jenkins/plugin/proxy.rb
122
- - lib/jenkins/plugin/runtime.rb
123
- - lib/jenkins/plugin/runtime/version.rb
124
- - lib/jenkins/plugin/specification.rb
125
- - lib/jenkins/plugin/wrapper.rb
126
- - lib/jenkins/rack.rb
127
- - lib/jenkins/slaves.rb
128
- - lib/jenkins/slaves/cloud.rb
129
- - lib/jenkins/slaves/computer_listener.rb
130
- - lib/jenkins/slaves/computer_listener_proxy.rb
131
- - lib/jenkins/slaves/node_property.rb
132
- - lib/jenkins/slaves/node_property_proxy.rb
133
- - lib/jenkins/tasks.rb
134
- - lib/jenkins/tasks/build_step.rb
135
- - lib/jenkins/tasks/build_step_proxy.rb
136
- - lib/jenkins/tasks/build_wrapper.rb
137
- - lib/jenkins/tasks/build_wrapper_proxy.rb
138
- - lib/jenkins/tasks/builder.rb
139
- - lib/jenkins/tasks/builder_proxy.rb
140
- - lib/jenkins/tasks/publisher.rb
141
- - lib/jenkins/tasks/publisher_proxy.rb
142
- - spec/jenkins/cli/command_proxy_spec.rb
143
- - spec/jenkins/cli/command_spec.rb
144
- - spec/jenkins/extension_spec.rb
145
- - spec/jenkins/filepath_spec.rb
146
- - spec/jenkins/launcher_spec.rb
147
- - spec/jenkins/listeners/run_listener_proxy_spec.rb
148
- - spec/jenkins/model/action_spec.rb
149
- - spec/jenkins/model/build_spec.rb
150
- - spec/jenkins/model/describable_spec.rb
151
- - spec/jenkins/model/listener_spec.rb
152
- - spec/jenkins/model/root_action_proxy_spec.rb
153
- - spec/jenkins/model_spec.rb
154
- - spec/jenkins/plugin/behavior_spec.rb
155
- - spec/jenkins/plugin/example.pluginspec
156
- - spec/jenkins/plugin/proxies/proxy_helper.rb
157
- - spec/jenkins/plugin/proxies_spec.rb
158
- - spec/jenkins/plugin/proxy_spec.rb
159
- - spec/jenkins/plugin/specification_spec.rb
160
- - spec/jenkins/plugin_spec.rb
161
- - spec/jenkins/tasks/build_wrapper_proxy_spec.rb
162
- - spec/jenkins/tasks/build_wrapper_spec.rb
163
- - spec/jenkins/tasks/builder_proxy_spec.rb
164
- - spec/jenkins/tasks/builder_spec.rb
165
- - spec/jenkins/tasks/publisher_proxy_spec.rb
166
- - spec/spec_helper.rb
167
- - src/jenkins/ruby/DoDynamic.java
168
- - src/jenkins/ruby/Get.java
124
+ files:
125
+ - Gemfile
126
+ - README.md
127
+ - Rakefile
128
+ - jenkins-plugin-runtime.gemspec
129
+ - lib/core_ext/exception.rb
130
+ - lib/jenkins/cli.rb
131
+ - lib/jenkins/cli/command.rb
132
+ - lib/jenkins/cli/command_proxy.rb
133
+ - lib/jenkins/extension.rb
134
+ - lib/jenkins/filepath.rb
135
+ - lib/jenkins/launcher.rb
136
+ - lib/jenkins/listeners.rb
137
+ - lib/jenkins/listeners/run_listener.rb
138
+ - lib/jenkins/listeners/run_listener_proxy.rb
139
+ - lib/jenkins/model.rb
140
+ - lib/jenkins/model/action.rb
141
+ - lib/jenkins/model/action_proxy.rb
142
+ - lib/jenkins/model/build.rb
143
+ - lib/jenkins/model/describable.rb
144
+ - lib/jenkins/model/describable_native.rb
145
+ - lib/jenkins/model/describable_proxy.rb
146
+ - lib/jenkins/model/descriptor.rb
147
+ - lib/jenkins/model/environment.rb
148
+ - lib/jenkins/model/environment_proxy.rb
149
+ - lib/jenkins/model/listener.rb
150
+ - lib/jenkins/model/root_action.rb
151
+ - lib/jenkins/model/root_action_proxy.rb
152
+ - lib/jenkins/plugin.rb
153
+ - lib/jenkins/plugin/behavior.rb
154
+ - lib/jenkins/plugin/proxies.rb
155
+ - lib/jenkins/plugin/proxy.rb
156
+ - lib/jenkins/plugin/runtime.rb
157
+ - lib/jenkins/plugin/runtime/version.rb
158
+ - lib/jenkins/plugin/specification.rb
159
+ - lib/jenkins/plugin/wrapper.rb
160
+ - lib/jenkins/rack.rb
161
+ - lib/jenkins/slaves.rb
162
+ - lib/jenkins/slaves/cloud.rb
163
+ - lib/jenkins/slaves/computer_listener.rb
164
+ - lib/jenkins/slaves/computer_listener_proxy.rb
165
+ - lib/jenkins/slaves/node_property.rb
166
+ - lib/jenkins/slaves/node_property_proxy.rb
167
+ - lib/jenkins/tasks.rb
168
+ - lib/jenkins/tasks/build_step.rb
169
+ - lib/jenkins/tasks/build_step_proxy.rb
170
+ - lib/jenkins/tasks/build_wrapper.rb
171
+ - lib/jenkins/tasks/build_wrapper_proxy.rb
172
+ - lib/jenkins/tasks/builder.rb
173
+ - lib/jenkins/tasks/builder_proxy.rb
174
+ - lib/jenkins/tasks/publisher.rb
175
+ - lib/jenkins/tasks/publisher_proxy.rb
176
+ - spec/jenkins/cli/command_proxy_spec.rb
177
+ - spec/jenkins/cli/command_spec.rb
178
+ - spec/jenkins/extension_spec.rb
179
+ - spec/jenkins/filepath_spec.rb
180
+ - spec/jenkins/launcher_spec.rb
181
+ - spec/jenkins/listeners/run_listener_proxy_spec.rb
182
+ - spec/jenkins/model/action_spec.rb
183
+ - spec/jenkins/model/build_spec.rb
184
+ - spec/jenkins/model/describable_spec.rb
185
+ - spec/jenkins/model/listener_spec.rb
186
+ - spec/jenkins/model/root_action_proxy_spec.rb
187
+ - spec/jenkins/model_spec.rb
188
+ - spec/jenkins/plugin/behavior_spec.rb
189
+ - spec/jenkins/plugin/example.pluginspec
190
+ - spec/jenkins/plugin/proxies/proxy_helper.rb
191
+ - spec/jenkins/plugin/proxies_spec.rb
192
+ - spec/jenkins/plugin/proxy_spec.rb
193
+ - spec/jenkins/plugin/specification_spec.rb
194
+ - spec/jenkins/plugin_spec.rb
195
+ - spec/jenkins/tasks/build_wrapper_proxy_spec.rb
196
+ - spec/jenkins/tasks/build_wrapper_spec.rb
197
+ - spec/jenkins/tasks/builder_proxy_spec.rb
198
+ - spec/jenkins/tasks/builder_spec.rb
199
+ - spec/jenkins/tasks/publisher_proxy_spec.rb
200
+ - spec/spec_helper.rb
201
+ - src/jenkins/ruby/DoDynamic.java
202
+ - src/jenkins/ruby/Get.java
169
203
  homepage: https://github.com/jenkinsci/jenkins.rb/tree/master/ruby-runtime
170
204
  licenses: []
171
-
172
- post_install_message:
205
+ post_install_message:
173
206
  rdoc_options: []
174
-
175
- require_paths:
176
- - lib
177
- required_ruby_version: !ruby/object:Gem::Requirement
207
+ require_paths:
208
+ - lib
209
+ required_ruby_version: !ruby/object:Gem::Requirement
210
+ requirements:
211
+ - - ! '>='
212
+ - !ruby/object:Gem::Version
213
+ version: !binary |-
214
+ MA==
178
215
  none: false
179
- requirements:
180
- - - ">="
181
- - !ruby/object:Gem::Version
182
- version: "0"
183
- required_rubygems_version: !ruby/object:Gem::Requirement
216
+ required_rubygems_version: !ruby/object:Gem::Requirement
217
+ requirements:
218
+ - - ! '>='
219
+ - !ruby/object:Gem::Version
220
+ version: !binary |-
221
+ MA==
184
222
  none: false
185
- requirements:
186
- - - ">="
187
- - !ruby/object:Gem::Version
188
- version: "0"
189
223
  requirements: []
190
-
191
224
  rubyforge_project: jenkins-plugin-runtime
192
- rubygems_version: 1.8.15
193
- signing_key:
225
+ rubygems_version: 1.8.24
226
+ signing_key:
194
227
  specification_version: 3
195
228
  summary: Runtime support libraries for Jenkins Ruby plugins
196
- test_files:
197
- - spec/jenkins/cli/command_proxy_spec.rb
198
- - spec/jenkins/cli/command_spec.rb
199
- - spec/jenkins/extension_spec.rb
200
- - spec/jenkins/filepath_spec.rb
201
- - spec/jenkins/launcher_spec.rb
202
- - spec/jenkins/listeners/run_listener_proxy_spec.rb
203
- - spec/jenkins/model/action_spec.rb
204
- - spec/jenkins/model/build_spec.rb
205
- - spec/jenkins/model/describable_spec.rb
206
- - spec/jenkins/model/listener_spec.rb
207
- - spec/jenkins/model/root_action_proxy_spec.rb
208
- - spec/jenkins/model_spec.rb
209
- - spec/jenkins/plugin/behavior_spec.rb
210
- - spec/jenkins/plugin/example.pluginspec
211
- - spec/jenkins/plugin/proxies/proxy_helper.rb
212
- - spec/jenkins/plugin/proxies_spec.rb
213
- - spec/jenkins/plugin/proxy_spec.rb
214
- - spec/jenkins/plugin/specification_spec.rb
215
- - spec/jenkins/plugin_spec.rb
216
- - spec/jenkins/tasks/build_wrapper_proxy_spec.rb
217
- - spec/jenkins/tasks/build_wrapper_spec.rb
218
- - spec/jenkins/tasks/builder_proxy_spec.rb
219
- - spec/jenkins/tasks/builder_spec.rb
220
- - spec/jenkins/tasks/publisher_proxy_spec.rb
221
- - spec/spec_helper.rb
229
+ test_files:
230
+ - spec/jenkins/cli/command_proxy_spec.rb
231
+ - spec/jenkins/cli/command_spec.rb
232
+ - spec/jenkins/extension_spec.rb
233
+ - spec/jenkins/filepath_spec.rb
234
+ - spec/jenkins/launcher_spec.rb
235
+ - spec/jenkins/listeners/run_listener_proxy_spec.rb
236
+ - spec/jenkins/model/action_spec.rb
237
+ - spec/jenkins/model/build_spec.rb
238
+ - spec/jenkins/model/describable_spec.rb
239
+ - spec/jenkins/model/listener_spec.rb
240
+ - spec/jenkins/model/root_action_proxy_spec.rb
241
+ - spec/jenkins/model_spec.rb
242
+ - spec/jenkins/plugin/behavior_spec.rb
243
+ - spec/jenkins/plugin/example.pluginspec
244
+ - spec/jenkins/plugin/proxies/proxy_helper.rb
245
+ - spec/jenkins/plugin/proxies_spec.rb
246
+ - spec/jenkins/plugin/proxy_spec.rb
247
+ - spec/jenkins/plugin/specification_spec.rb
248
+ - spec/jenkins/plugin_spec.rb
249
+ - spec/jenkins/tasks/build_wrapper_proxy_spec.rb
250
+ - spec/jenkins/tasks/build_wrapper_spec.rb
251
+ - spec/jenkins/tasks/builder_proxy_spec.rb
252
+ - spec/jenkins/tasks/builder_spec.rb
253
+ - spec/jenkins/tasks/publisher_proxy_spec.rb
254
+ - spec/spec_helper.rb