rsence 2.1.6 → 2.1.7
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.
- data/VERSION +1 -1
- data/js/datetime/timesheet/timesheet.js +4 -0
- data/js/datetime/timesheet_item/timesheet_item.js +11 -3
- data/lib/conf/default.rb +0 -3
- data/lib/http/broker.rb +6 -5
- data/lib/http/rackup.rb +3 -3
- data/lib/http/response.rb +26 -2
- data/lib/session/msg.rb +2 -2
- data/lib/values/hvalue.rb +1 -4
- data/lib/values/valuemanager.rb +36 -22
- data/plugins/client_pkg/lib/client_pkg_serve.rb +7 -7
- data/plugins/main/main.rb +4 -5
- data/plugins/ticket/lib/common.rb +4 -4
- data/plugins/ticket/lib/favicon.rb +1 -1
- data/plugins/ticket/lib/rsrc.rb +1 -1
- data/plugins/ticket/lib/upload.rb +2 -2
- data/plugins/ticket/ticket.rb +3 -3
- metadata +10 -11
- data/lib/util/ruby19_fixes.rb +0 -18
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
2.1.
|
1
|
+
2.1.7
|
@@ -31,6 +31,7 @@ HTimeSheet = HControl.extend({
|
|
31
31
|
pxPerHour: null,
|
32
32
|
itemOffsetLeft: null,
|
33
33
|
itemOffsetRight: null,
|
34
|
+
itemMinHeight: 24,
|
34
35
|
newItemLabel: 'New Item',
|
35
36
|
constructor: function(_ctrl){
|
36
37
|
if(this.pxPerHour !== null){
|
@@ -173,6 +174,9 @@ HTimeSheet = HControl.extend({
|
|
173
174
|
_top = _origY+1,
|
174
175
|
_right = this.rect.width - this.itemOffsetRight - 1,
|
175
176
|
_bottom = _origY + _lineHeight - 2;
|
177
|
+
if( (_top - _bottom) < this.options.itemMinHeight ){
|
178
|
+
_bottom = _top + this.options.itemMinHeight;
|
179
|
+
}
|
176
180
|
return HRect.nu( _left, _top, _right, _bottom );
|
177
181
|
},
|
178
182
|
|
@@ -289,9 +289,17 @@ HTimeSheetItem = HControl.extend({
|
|
289
289
|
**/
|
290
290
|
refreshValue: function(){
|
291
291
|
if ( HVM.type(this.value) === 'h' ){
|
292
|
-
|
293
|
-
|
294
|
-
|
292
|
+
var
|
293
|
+
_label = this._getValueLabel( this.value ),
|
294
|
+
_top = this._getValueTop( this.value ),
|
295
|
+
_bottom = this._getValueBottom( this.value ),
|
296
|
+
_minHeight = this.parent.options.itemMinHeight;
|
297
|
+
this.setLabel( _label );
|
298
|
+
if( (_bottom - _top) < _minHeight ){
|
299
|
+
_bottom = _top + _minHeight;
|
300
|
+
}
|
301
|
+
this.rect.setTop( _top );
|
302
|
+
this.rect.setBottom( _bottom );
|
295
303
|
this.drawRect();
|
296
304
|
}
|
297
305
|
}
|
data/lib/conf/default.rb
CHANGED
data/lib/http/broker.rb
CHANGED
@@ -24,7 +24,7 @@ class Broker
|
|
24
24
|
|
25
25
|
# This method is called from Rack.
|
26
26
|
# @param [Hash] env is the Rack environment.
|
27
|
-
# @return [Array(Number, Hash,
|
27
|
+
# @return [Array(Number, Hash, Array)] Rack-style response status, header, body
|
28
28
|
def call( env )
|
29
29
|
sleep @@ping_sim if @@ping_sim
|
30
30
|
unless @@transporter.online?
|
@@ -35,7 +35,7 @@ class Broker
|
|
35
35
|
'Refresh' => "2; #{env['REQUEST_URI']}",
|
36
36
|
'Content-Length' => '4'
|
37
37
|
}
|
38
|
-
return [ 503, headers, 'BUSY' ]
|
38
|
+
return [ 503, headers, ['BUSY'] ]
|
39
39
|
end
|
40
40
|
request = Request.new(env)
|
41
41
|
response = Response.new
|
@@ -43,8 +43,9 @@ class Broker
|
|
43
43
|
dispatcher = dispatcher_class.new( request, response )
|
44
44
|
dispatcher.send( request_method )
|
45
45
|
content_type = dispatcher.content_type
|
46
|
-
|
47
|
-
|
46
|
+
response_body = response.body
|
47
|
+
response.header['Content-Length'] = response.body_bytes unless response.header.has_key?('Content-Length')
|
48
|
+
return [response.status, response.header, response_body]
|
48
49
|
end
|
49
50
|
|
50
51
|
# Returns a dynamically created "REST Dispatcher" kind of class that has
|
@@ -121,7 +122,7 @@ class Broker
|
|
121
122
|
@response.status = 404
|
122
123
|
err404 = '<html><head><title>404 - Page Not Found</title></head><body>404 - Page Not Found</body></html>'
|
123
124
|
@response['Content-Type'] = 'text/html; charset=UTF-8'
|
124
|
-
@response['Content-Length'] = err404.
|
125
|
+
@response['Content-Length'] = err404.bytesize.to_s
|
125
126
|
@response.body = err404
|
126
127
|
end
|
127
128
|
|
data/lib/http/rackup.rb
CHANGED
@@ -74,7 +74,7 @@ module Broker
|
|
74
74
|
else
|
75
75
|
puts "unsupported method: #{request_method.inspect}"
|
76
76
|
end
|
77
|
-
response.header['Content-Length'] = response.body.
|
77
|
+
response.header['Content-Length'] = response.body.bytesize.to_s unless response.header.has_key?('Content-Length')
|
78
78
|
return [response.status, response.header, response.body]
|
79
79
|
end
|
80
80
|
|
@@ -82,8 +82,8 @@ module Broker
|
|
82
82
|
puts "/404: #{request.fullpath.inspect}" if $DEBUG_MODE
|
83
83
|
response.status = 404
|
84
84
|
err404 = '<html><head><title>404 - Page Not Found</title></head><body>404 - Page Not Found</body></html>'
|
85
|
-
response['
|
86
|
-
response['
|
85
|
+
response['Content-Type'] = 'text/html; charset=UTF-8'
|
86
|
+
response['Content-Length'] = err404.bytesize.to_s
|
87
87
|
response.body = err404
|
88
88
|
end
|
89
89
|
|
data/lib/http/response.rb
CHANGED
@@ -17,6 +17,19 @@ module RSence
|
|
17
17
|
# Adds the + method "operator" to an extended Array.
|
18
18
|
# Used for pushing http body data.
|
19
19
|
class ResponseBody < Array
|
20
|
+
def push( body_data )
|
21
|
+
super( sanitize_body_data( body_data ) )
|
22
|
+
end
|
23
|
+
def sanitize_body_data( body_data )
|
24
|
+
if body_data.class == String
|
25
|
+
return body_data
|
26
|
+
elsif body_data.respond_to?(:to_s)
|
27
|
+
return body_data.to_s
|
28
|
+
else
|
29
|
+
warn "Invalid response data: #{body_data.inspect[0..100]}"
|
30
|
+
return ''
|
31
|
+
end
|
32
|
+
end
|
20
33
|
def +(body_data)
|
21
34
|
self.push(body_data)
|
22
35
|
end
|
@@ -33,10 +46,21 @@ module RSence
|
|
33
46
|
end
|
34
47
|
def body=(body_data)
|
35
48
|
@body = ResponseBody.new(1)
|
36
|
-
@body[0] = body_data
|
49
|
+
@body[0] = @body.sanitize_body_data( body_data )
|
37
50
|
end
|
38
51
|
def body
|
39
|
-
@body
|
52
|
+
@body
|
53
|
+
end
|
54
|
+
def body_bytes
|
55
|
+
bytes = 0
|
56
|
+
@body.each do |part|
|
57
|
+
if part.respond_to?(:to_s)
|
58
|
+
bytes += part.to_s.bytesize
|
59
|
+
else
|
60
|
+
warn "body data part does not respond to to_s: #{part.inspect[0..100]}"
|
61
|
+
end
|
62
|
+
end
|
63
|
+
return bytes.to_s
|
40
64
|
end
|
41
65
|
def content_type=(new_content_type)
|
42
66
|
@header['Content-Type'] = new_content_type
|
data/lib/session/msg.rb
CHANGED
@@ -135,7 +135,7 @@ module RSence
|
|
135
135
|
if options[:servlet]
|
136
136
|
@do_gzip = false
|
137
137
|
else
|
138
|
-
@response
|
138
|
+
@response['Content-Type'] = 'text/javascript; charset=utf-8'
|
139
139
|
@response['Cache-Control'] = 'no-cache'
|
140
140
|
|
141
141
|
# gnu-zipped responses:
|
@@ -268,7 +268,7 @@ module RSence
|
|
268
268
|
outp = buf_json(buffer)
|
269
269
|
end
|
270
270
|
|
271
|
-
@response['
|
271
|
+
@response['Content-Length'] = outp.bytesize.to_s
|
272
272
|
@response.body = outp
|
273
273
|
|
274
274
|
@response_sent = true
|
data/lib/values/hvalue.rb
CHANGED
@@ -84,10 +84,7 @@ module RSence
|
|
84
84
|
if RSence.args[:debug] and meta[:name] and not msg.valuemanager.id_exists?( msg, meta[:name] )
|
85
85
|
@value_id = meta[:name]
|
86
86
|
else
|
87
|
-
@value_id =
|
88
|
-
while @value_id[0] == 95 # ascii for '_'
|
89
|
-
@value_id = msg.valuemanager.randgen.gen
|
90
|
-
end
|
87
|
+
@value_id = msg.valuemanager.ses_unique_id( msg )
|
91
88
|
end
|
92
89
|
|
93
90
|
@meta = meta
|
data/lib/values/valuemanager.rb
CHANGED
@@ -35,6 +35,40 @@ module RSence
|
|
35
35
|
|
36
36
|
end
|
37
37
|
|
38
|
+
|
39
|
+
# @private Returns a session-unique random string
|
40
|
+
def ses_unique_id( msg )
|
41
|
+
new_id = randgen.gen while id_exists?( msg, new_id )
|
42
|
+
return new_id
|
43
|
+
end
|
44
|
+
|
45
|
+
|
46
|
+
# @private Regenerate a value id
|
47
|
+
def reshuffle_id( msg, ses_values, val_obj, old_id )
|
48
|
+
|
49
|
+
new_id = ses_unique_id( msg )
|
50
|
+
|
51
|
+
# replace the old id in the hvalue itself
|
52
|
+
val_obj.val_id = new_id
|
53
|
+
|
54
|
+
# re-associate the value with the new id
|
55
|
+
ses_values[:by_id][new_id] = val_obj
|
56
|
+
ses_values[:by_id].delete(old_id)
|
57
|
+
|
58
|
+
# replace the id in the unvalidated values (:check) array
|
59
|
+
if ses_values[:check].include?(old_id)
|
60
|
+
old_idx = ses_values[:check].index(old_id)
|
61
|
+
ses_values[:check][old_idx] = new_id
|
62
|
+
end
|
63
|
+
|
64
|
+
# replace the id in the unsynchronized values (:sync) array
|
65
|
+
if ses_values[:sync].include?(old_id)
|
66
|
+
old_idx = ses_values[:sync].index(old_id)
|
67
|
+
ses_values[:sync][old_idx] = new_id
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
|
38
72
|
# @private Re-constructs all stored values and sends them to the client.
|
39
73
|
# Used for restoring and cloning session values.
|
40
74
|
def resend_session_values( msg )
|
@@ -56,28 +90,7 @@ module RSence
|
|
56
90
|
|
57
91
|
# make a new id
|
58
92
|
unless RSence.args[:debug] and val_obj.meta[:name]
|
59
|
-
|
60
|
-
new_id = @randgen.gen while new_id[0] == 95 or id_exists?( msg, new_id )
|
61
|
-
|
62
|
-
# replace the old id in the hvalue itself
|
63
|
-
val_obj.val_id = new_id
|
64
|
-
|
65
|
-
# re-associate the value with the new id
|
66
|
-
ses_values[:by_id][new_id] = val_obj
|
67
|
-
ses_values[:by_id].delete(old_id)
|
68
|
-
|
69
|
-
# replace the id in the unvalidated values (:check) array
|
70
|
-
if ses_values[:check].include?(old_id)
|
71
|
-
old_idx = ses_values[:check].index(old_id)
|
72
|
-
ses_values[:check][old_idx] = new_id
|
73
|
-
end
|
74
|
-
|
75
|
-
# replace the id in the unsynchronized values (:sync) array
|
76
|
-
if ses_values[:sync].include?(old_id)
|
77
|
-
old_idx = ses_values[:sync].index(old_id)
|
78
|
-
ses_values[:sync][old_idx] = new_id
|
79
|
-
end
|
80
|
-
|
93
|
+
reshuffle_id( msg, ses_values, val_obj, old_id )
|
81
94
|
end
|
82
95
|
|
83
96
|
# tell the hvalue to send its client-side initialization
|
@@ -96,6 +109,7 @@ module RSence
|
|
96
109
|
|
97
110
|
# @private Verifies new_id is unique.
|
98
111
|
def id_exists?( msg, new_id )
|
112
|
+
return true unless new_id.class == String
|
99
113
|
return msg.session[:values][:by_id].has_key?(new_id)
|
100
114
|
end
|
101
115
|
|
@@ -112,7 +112,7 @@ module ClientPkgServe
|
|
112
112
|
else
|
113
113
|
|
114
114
|
response.status = 200
|
115
|
-
response
|
115
|
+
response['Content-Type'] = 'text/javascript; charset=utf-8'
|
116
116
|
|
117
117
|
# these browsers have issues with gzipped js content
|
118
118
|
support_gzip = false if (is_safari or is_msie or is_symbian)
|
@@ -121,14 +121,14 @@ module ClientPkgServe
|
|
121
121
|
#response['Transfer-Encoding'] = 'chunked,gzip'
|
122
122
|
response['Last-Modified'] = @client_cache.last_modified
|
123
123
|
body = @client_cache.gz_cache[ req_file ]+"\r\n\r\n"
|
124
|
-
response['Content-Length'] = body.
|
124
|
+
response['Content-Length'] = body.bytesize.to_s
|
125
125
|
response['Content-Encoding'] = 'gzip'
|
126
126
|
response.body = body
|
127
127
|
else
|
128
128
|
|
129
129
|
response['Last-Modified'] = @client_cache.last_modified
|
130
130
|
body = @client_cache.js_cache[ req_file ]
|
131
|
-
response['Content-Length'] = body.
|
131
|
+
response['Content-Length'] = body.bytesize.to_s
|
132
132
|
response.body = body
|
133
133
|
|
134
134
|
end
|
@@ -160,7 +160,7 @@ module ClientPkgServe
|
|
160
160
|
|
161
161
|
if not has_theme_file and req_file == 'common.css'
|
162
162
|
response.status = 200
|
163
|
-
response
|
163
|
+
response['Content-Type'] = 'text/css'
|
164
164
|
response.body = ''
|
165
165
|
end
|
166
166
|
|
@@ -180,7 +180,7 @@ module ClientPkgServe
|
|
180
180
|
response.status = 200
|
181
181
|
|
182
182
|
file_ext = req_file.split('.')[-1]
|
183
|
-
response
|
183
|
+
response['Content-Type'] = {
|
184
184
|
'html' => 'text/html; charset=utf-8',
|
185
185
|
'css' => 'text/css; charset=utf-8',
|
186
186
|
'png' => 'image/png',
|
@@ -195,7 +195,7 @@ module ClientPkgServe
|
|
195
195
|
if support_gzip
|
196
196
|
response['Last-Modified'] = @client_cache.last_modified
|
197
197
|
body = @client_cache.theme_cache[theme_name][theme_part][ req_file+'.gz' ]
|
198
|
-
response['Content-Length'] = body.
|
198
|
+
response['Content-Length'] = body.bytesize.to_s
|
199
199
|
response['Content-Encoding'] = 'gzip'
|
200
200
|
response.body = body
|
201
201
|
else
|
@@ -213,7 +213,7 @@ module ClientPkgServe
|
|
213
213
|
warn "ClientPkgServe#get: empty body for #{request.path}"
|
214
214
|
body = ''
|
215
215
|
end
|
216
|
-
response['Content-Length'] = body.
|
216
|
+
response['Content-Length'] = body.bytesize.to_s
|
217
217
|
response.body = body
|
218
218
|
|
219
219
|
end
|
data/plugins/main/main.rb
CHANGED
@@ -154,11 +154,11 @@ class MainPlugin < Plugin
|
|
154
154
|
gzwriter = Zlib::GzipWriter.new( index_gzip, 9 )
|
155
155
|
gzwriter.write( index_html )
|
156
156
|
gzwriter.close
|
157
|
-
response['Content-Length'] = index_gzip.
|
157
|
+
response['Content-Length'] = index_gzip.bytesize.to_s
|
158
158
|
response['Content-Encoding'] = 'gzip'
|
159
159
|
response.body = index_gzip
|
160
160
|
else
|
161
|
-
response['Content-Length'] = index_html.
|
161
|
+
response['Content-Length'] = index_html.bytesize.to_s
|
162
162
|
response.body = index_html
|
163
163
|
end
|
164
164
|
end
|
@@ -229,14 +229,14 @@ class MainPlugin < Plugin
|
|
229
229
|
|
230
230
|
|
231
231
|
# New session initialization, called just once per session.
|
232
|
-
def init_ses(msg)
|
232
|
+
def init_ses( msg )
|
233
233
|
super
|
234
234
|
restore_ses( msg )
|
235
235
|
end
|
236
236
|
|
237
237
|
|
238
238
|
# Called once when a session is restored or cloned using the cookie's ses_key
|
239
|
-
def restore_ses(msg)
|
239
|
+
def restore_ses( msg )
|
240
240
|
super
|
241
241
|
## Resets session data to defaults
|
242
242
|
ses = get_ses( msg )
|
@@ -391,7 +391,6 @@ class MainPlugin < Plugin
|
|
391
391
|
def idle(msg)
|
392
392
|
|
393
393
|
ses = get_ses( msg )
|
394
|
-
|
395
394
|
if ses[:boot] == 0
|
396
395
|
boot0( msg, ses )
|
397
396
|
elsif ses[:boot] == 1
|
@@ -156,7 +156,7 @@ module Common
|
|
156
156
|
(content_type, filename) = format
|
157
157
|
|
158
158
|
# content size for the header
|
159
|
-
content_size = content.
|
159
|
+
content_size = content.bytesize.to_s
|
160
160
|
|
161
161
|
storage_hash = @files
|
162
162
|
storage_arr = [content_type,content_size,content,msg.ses_id,filename]
|
@@ -270,7 +270,7 @@ module Common
|
|
270
270
|
}
|
271
271
|
|
272
272
|
# content size for the header
|
273
|
-
content_size = content.
|
273
|
+
content_size = content.bytesize.to_s
|
274
274
|
|
275
275
|
# content type for the header
|
276
276
|
content_type = @content_types[format]
|
@@ -335,12 +335,12 @@ module Common
|
|
335
335
|
end
|
336
336
|
if @raw_uris.include?(blobobj_id)
|
337
337
|
content_type = @raw_uris[blobobj_id].mime
|
338
|
-
content_size = @raw_uris[blobobj_id].
|
338
|
+
content_size = @raw_uris[blobobj_id].bytesize
|
339
339
|
content = @raw_uris[blobobj_id].data
|
340
340
|
elsif @blob_objs[:by_id].include?(blobobj_id)
|
341
341
|
(ses_id, blobobj) = @blob_objs[:by_id][blobobj_id]
|
342
342
|
content_type = blobobj.mime
|
343
|
-
content_size = blobobj.
|
343
|
+
content_size = blobobj.bytesize
|
344
344
|
content = blobobj.data
|
345
345
|
if req.header.has_key?('keep-alive') and req.header['keep-alive'].size > 0
|
346
346
|
keep_alive = req.header['keep-alive'][0].to_i
|
@@ -30,7 +30,7 @@ module Favicon
|
|
30
30
|
# Sets favicon. First parameter is favicon data and the second one is content type which defaults to false.
|
31
31
|
def set_favicon( ico_data, content_type=false )
|
32
32
|
@raw_uris['favicon.ico'][0] = content_type if content_type
|
33
|
-
@raw_uris['favicon.ico'][1] = ico_data.
|
33
|
+
@raw_uris['favicon.ico'][1] = ico_data.bytesize.to_s
|
34
34
|
@raw_uris['favicon.ico'][2] = ico_data
|
35
35
|
|
36
36
|
end
|
data/plugins/ticket/lib/rsrc.rb
CHANGED
@@ -176,8 +176,8 @@ create table rsence_uploads (
|
|
176
176
|
}
|
177
177
|
|
178
178
|
response.status = 200
|
179
|
-
response['
|
180
|
-
response['
|
179
|
+
response['Content-Type'] = 'text/html; charset=UTF-8'
|
180
|
+
response['Content-Length'] = response_body.bytesize.to_s
|
181
181
|
response.body = response_body
|
182
182
|
end
|
183
183
|
|
data/plugins/ticket/ticket.rb
CHANGED
@@ -110,8 +110,8 @@ class TicketPlugin < Plugin
|
|
110
110
|
puts "/U/iframe_html: #{uri.inspect}" if RSence.args[:verbose]
|
111
111
|
res.status = 200
|
112
112
|
http_body = '<html><head><title>Empty Iframe for Uploading</title></head><body></body></html>'
|
113
|
-
res['
|
114
|
-
res['
|
113
|
+
res['Content-Type'] = 'text/html; charset=UTF-8'
|
114
|
+
res['Content-Length'] = http_body.bytesize.to_s
|
115
115
|
res.body = http_body
|
116
116
|
end
|
117
117
|
end
|
@@ -158,7 +158,7 @@ class TicketPlugin < Plugin
|
|
158
158
|
|
159
159
|
# @return [Number] The size (in bytes) of the data
|
160
160
|
def size
|
161
|
-
return @data.
|
161
|
+
return @data.bytesize
|
162
162
|
end
|
163
163
|
|
164
164
|
# Implement, if you need to do cleanup before destructing
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rsence
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
5
|
-
prerelease:
|
4
|
+
hash: 5
|
5
|
+
prerelease:
|
6
6
|
segments:
|
7
7
|
- 2
|
8
8
|
- 1
|
9
|
-
-
|
10
|
-
version: 2.1.
|
9
|
+
- 7
|
10
|
+
version: 2.1.7
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Riassence Inc.
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date:
|
18
|
+
date: 2011-01-03 00:00:00 +02:00
|
19
19
|
default_executable: rsence
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
@@ -26,14 +26,14 @@ dependencies:
|
|
26
26
|
requirements:
|
27
27
|
- - "="
|
28
28
|
- !ruby/object:Gem::Version
|
29
|
-
hash:
|
29
|
+
hash: 1925
|
30
30
|
segments:
|
31
|
-
-
|
32
|
-
version: "
|
31
|
+
- 963
|
32
|
+
version: "963"
|
33
33
|
type: :runtime
|
34
34
|
version_requirements: *id001
|
35
35
|
description: |
|
36
|
-
RSence is a RIA framework designed for responsive GUI applications on the web.
|
36
|
+
RSence is a RIA ("HTML5" or "Ajax" if you like those terms better) framework designed for responsive GUI applications on the web.
|
37
37
|
|
38
38
|
RSence is a flexible and high-performance RIA framework aimed on building responsive, scalable and over-all as high-performance GUI Applications as possible with the chosen technologies.
|
39
39
|
|
@@ -76,7 +76,6 @@ files:
|
|
76
76
|
- lib/session/sessionstorage.rb
|
77
77
|
- lib/transporter/transporter.rb
|
78
78
|
- lib/util/gzstring.rb
|
79
|
-
- lib/util/ruby19_fixes.rb
|
80
79
|
- lib/values/hvalue.rb
|
81
80
|
- lib/values/valuemanager.rb
|
82
81
|
- setup/welcome/gui/welcome.yaml
|
@@ -404,7 +403,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
404
403
|
requirements: []
|
405
404
|
|
406
405
|
rubyforge_project: rsence-
|
407
|
-
rubygems_version: 1.
|
406
|
+
rubygems_version: 1.4.1
|
408
407
|
signing_key:
|
409
408
|
specification_version: 3
|
410
409
|
summary: Release 2.1 version of the RSence framework.
|
data/lib/util/ruby19_fixes.rb
DELETED
@@ -1,18 +0,0 @@
|
|
1
|
-
|
2
|
-
# NOTE: Ruby 1.9 isn't fully supported yet.
|
3
|
-
# There are some encoding handlers and some of the dependencies are not fully working yet.
|
4
|
-
# One should wait for Ruby 2.0 for production use anyway.
|
5
|
-
|
6
|
-
# Ruby 1.9 encoding defaults.
|
7
|
-
# This is clearly not enough but a good start for fixing the encoding madness.
|
8
|
-
Encoding.default_external = Encoding::BINARY
|
9
|
-
Encoding.default_internal = Encoding::BINARY
|
10
|
-
|
11
|
-
# Ruby 1.9 doesn't have String#each anymore.
|
12
|
-
# This is a backwards-compatible work-around.
|
13
|
-
class String
|
14
|
-
def each
|
15
|
-
self.split($/).each { |e| yield e }
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|