nitro 0.7.0 → 0.8.0
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/AUTHORS +14 -4
- data/ChangeLog +192 -1
- data/README +50 -6
- data/RELEASES +60 -0
- data/Rakefile +1 -1
- data/bin/cluster.rb +2 -2
- data/bin/new_form.rb +1 -1
- data/examples/blog/config.rb +5 -4
- data/examples/blog/lib/blog.rb +56 -36
- data/examples/blog/root/comments.xhtml +5 -2
- data/examples/blog/root/entry_form.xhtml +7 -2
- data/examples/blog/root/login.xhtml +1 -1
- data/examples/blog/root/style.xsl +7 -0
- data/examples/og/mock_example.rb +6 -9
- data/examples/og/mysql_to_psql.rb +100 -0
- data/examples/og/run.rb +8 -17
- data/lib/glue.rb +7 -8
- data/lib/glue/array.rb +1 -1
- data/lib/glue/attribute.rb +86 -0
- data/lib/glue/cache.rb +1 -1
- data/lib/glue/hash.rb +1 -1
- data/lib/glue/inflector.rb +1 -1
- data/lib/glue/logger.rb +118 -18
- data/lib/glue/mixins.rb +1 -1
- data/lib/glue/number.rb +1 -1
- data/lib/glue/pool.rb +1 -1
- data/lib/glue/property.rb +48 -31
- data/lib/glue/string.rb +1 -1
- data/lib/glue/time.rb +2 -2
- data/lib/glue/validation.rb +400 -0
- data/lib/nitro/application.rb +6 -6
- data/lib/nitro/builders/form.rb +5 -5
- data/lib/nitro/builders/rss.rb +1 -1
- data/lib/nitro/builders/xhtml.rb +119 -0
- data/lib/nitro/builders/xml.rb +111 -0
- data/lib/nitro/config.rb +6 -6
- data/lib/nitro/events.rb +1 -1
- data/lib/nitro/html.rb +1 -1
- data/lib/nitro/markup.rb +15 -20
- data/lib/nitro/scaffold.rb +2 -2
- data/lib/nitro/server/appserver.rb +3 -3
- data/lib/nitro/server/cluster.rb +2 -2
- data/lib/nitro/server/dispatcher.rb +2 -2
- data/lib/nitro/server/filters/autologin.rb +1 -1
- data/lib/nitro/server/fragment.rb +2 -2
- data/lib/nitro/server/handlers.rb +2 -2
- data/lib/nitro/server/render.rb +17 -15
- data/lib/nitro/server/request.rb +6 -6
- data/lib/nitro/server/script.rb +2 -2
- data/lib/nitro/server/server.rb +2 -2
- data/lib/nitro/server/session.rb +6 -6
- data/lib/nitro/server/shaders.rb +2 -2
- data/lib/nitro/server/webrick.rb +1 -1
- data/lib/nitro/sitemap.rb +2 -2
- data/lib/nitro/uri.rb +1 -1
- data/lib/nitro/version.rb +7 -5
- data/lib/og.rb +95 -129
- data/lib/og/backend.rb +47 -46
- data/lib/og/backends/mysql.rb +64 -63
- data/lib/og/backends/psql.rb +73 -72
- data/lib/og/connection.rb +7 -8
- data/lib/og/enchant.rb +80 -0
- data/lib/og/meta.rb +21 -21
- data/lib/og/mock.rb +31 -88
- data/lib/og/version.rb +6 -5
- data/lib/parts/README +9 -0
- data/lib/parts/content.rb +23 -9
- data/test/glue/tc_attribute.rb +22 -0
- data/test/glue/tc_cache.rb +4 -6
- data/test/glue/tc_hash.rb +2 -2
- data/test/glue/tc_logger.rb +36 -0
- data/test/glue/tc_numbers.rb +2 -2
- data/test/glue/tc_property_mixins.rb +35 -4
- data/test/glue/tc_strings.rb +32 -32
- data/test/glue/tc_validation.rb +186 -0
- data/test/nitro/builders/tc_xhtml.rb +38 -0
- data/test/nitro/builders/tc_xml.rb +47 -0
- data/test/nitro/server/tc_request.rb +2 -2
- data/test/nitro/server/tc_session.rb +1 -1
- data/test/nitro/tc_sitemap.rb +1 -1
- data/test/nitro/ui/tc_pager.rb +1 -10
- data/test/tc_og.rb +3 -3
- data/vendor/blankslate.rb +53 -0
- data/vendor/extensions/_base.rb +153 -0
- data/vendor/extensions/_template.rb +36 -0
- data/vendor/extensions/all.rb +21 -0
- data/vendor/extensions/array.rb +68 -0
- data/vendor/extensions/binding.rb +224 -0
- data/vendor/extensions/class.rb +50 -0
- data/vendor/extensions/continuation.rb +71 -0
- data/vendor/extensions/enumerable.rb +250 -0
- data/vendor/extensions/hash.rb +23 -0
- data/vendor/extensions/io.rb +58 -0
- data/vendor/extensions/kernel.rb +42 -0
- data/vendor/extensions/module.rb +114 -0
- data/vendor/extensions/numeric.rb +230 -0
- data/vendor/extensions/object.rb +164 -0
- data/vendor/extensions/ostruct.rb +41 -0
- data/vendor/extensions/string.rb +316 -0
- data/vendor/extensions/symbol.rb +28 -0
- metadata +35 -13
- data/lib/glue/property.rb.old +0 -307
data/lib/nitro/builders/form.rb
CHANGED
|
@@ -13,7 +13,7 @@ module N
|
|
|
13
13
|
#
|
|
14
14
|
class FormBuilder
|
|
15
15
|
|
|
16
|
-
@@cache =
|
|
16
|
+
@@cache = N::SafeHash.new
|
|
17
17
|
|
|
18
18
|
# Render a standard form for the given managed object.
|
|
19
19
|
# If show_all is false then apply field filtering.
|
|
@@ -39,7 +39,7 @@ class FormBuilder
|
|
|
39
39
|
str << %{
|
|
40
40
|
<dt><label for="#{p.name}">#{p.name}</label></dt>
|
|
41
41
|
<dd>
|
|
42
|
-
<input type="text" name="#{p.name}" value="#{obj.send(p.symbol)}" />
|
|
42
|
+
<input type="text" id="#{p.name}" name="#{p.name}" value="#{obj.send(p.symbol)}" />
|
|
43
43
|
</dd>
|
|
44
44
|
}
|
|
45
45
|
elsif p.klass.ancestors.include?(String)
|
|
@@ -54,11 +54,11 @@ class FormBuilder
|
|
|
54
54
|
end
|
|
55
55
|
if :textarea == p.meta[:ui]
|
|
56
56
|
str << %{
|
|
57
|
-
<textarea name="#{p.name}">#{val}</textarea>
|
|
57
|
+
<textarea id="#{p.name}" name="#{p.name}">#{val}</textarea>
|
|
58
58
|
}
|
|
59
59
|
else
|
|
60
60
|
str << %{
|
|
61
|
-
<input type="text" name="#{p.name}" value="#{val}" />
|
|
61
|
+
<input type="text" id="#{p.name}" name="#{p.name}" value="#{val}" />
|
|
62
62
|
}
|
|
63
63
|
end
|
|
64
64
|
str << %{
|
|
@@ -68,7 +68,7 @@ class FormBuilder
|
|
|
68
68
|
str << %{
|
|
69
69
|
<dt><label for="#{p.name}">#{p.name}</label></dt>
|
|
70
70
|
<dd>
|
|
71
|
-
<input type="checkbox" name="
|
|
71
|
+
<input type="checkbox" id="#{p.name}" name="#{p.name}" />
|
|
72
72
|
</dd>
|
|
73
73
|
}
|
|
74
74
|
=begin
|
data/lib/nitro/builders/rss.rb
CHANGED
|
@@ -25,7 +25,7 @@ class RssBuilder
|
|
|
25
25
|
for obj in objects
|
|
26
26
|
item = RSS::Rss::Channel::Item.new
|
|
27
27
|
item.title = obj.title if obj.respond_to?(:title)
|
|
28
|
-
item.description =
|
|
28
|
+
item.description = N::StringUtils.head(obj.body, 256) if obj.respond_to?(:body)
|
|
29
29
|
item.link = "#$srv_url/#{obj.view_uri}" if obj.respond_to?(:view_uri)
|
|
30
30
|
channel.items << item
|
|
31
31
|
end
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
# George Moschovitis <gm@navel.gr>
|
|
2
|
+
# (c) 2005 Navel, all rights reserved.
|
|
3
|
+
# $Id$
|
|
4
|
+
|
|
5
|
+
require 'nitro/builders/xml'
|
|
6
|
+
|
|
7
|
+
module N
|
|
8
|
+
|
|
9
|
+
# = XhtmlBuilderMixin
|
|
10
|
+
#
|
|
11
|
+
# A helper mixin for programmatically building XHTML
|
|
12
|
+
# blocks.
|
|
13
|
+
#--
|
|
14
|
+
# TODO: add table generator, form generator
|
|
15
|
+
#++
|
|
16
|
+
|
|
17
|
+
module XhtmlBuilderMixin
|
|
18
|
+
|
|
19
|
+
# Render select.
|
|
20
|
+
#
|
|
21
|
+
# The first argument can be a String denoting the
|
|
22
|
+
# default option.
|
|
23
|
+
#--
|
|
24
|
+
# gmosx: hmmm String defines select, this is bad!
|
|
25
|
+
#++
|
|
26
|
+
|
|
27
|
+
def select(*args)
|
|
28
|
+
attrs = args.last.is_a?(Hash) ? args.pop : nil
|
|
29
|
+
start_tag('select', attrs)
|
|
30
|
+
self << %|<option>#{args.first}</option>| unless args.empty?
|
|
31
|
+
yield
|
|
32
|
+
end_tag('select')
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
# Render select options.
|
|
36
|
+
#
|
|
37
|
+
# [+opts+]
|
|
38
|
+
# The options to render, can be an Array or a
|
|
39
|
+
# Hash (allows you to explicitly set the value
|
|
40
|
+
# mapping).
|
|
41
|
+
#
|
|
42
|
+
# [+selected+]
|
|
43
|
+
# The value of the selected option.
|
|
44
|
+
#
|
|
45
|
+
# == Example
|
|
46
|
+
#
|
|
47
|
+
# options = ['Male', 'Female']
|
|
48
|
+
# o.select(:name => 'sex') {
|
|
49
|
+
# o.options(options, selected = 1)
|
|
50
|
+
# }
|
|
51
|
+
#
|
|
52
|
+
# or
|
|
53
|
+
#
|
|
54
|
+
# options = { 'Male' => 'm', 'Female' => 'f' }
|
|
55
|
+
# o.select(:name => 'sex') {
|
|
56
|
+
# o.options(options, selected = 1)
|
|
57
|
+
# }
|
|
58
|
+
|
|
59
|
+
def options(opts, selected = nil)
|
|
60
|
+
if opts.is_a?(Array)
|
|
61
|
+
selected = selected.to_i
|
|
62
|
+
opts.each_with_index do |label, value|
|
|
63
|
+
if value == selected
|
|
64
|
+
self << %|<option value="#{value}" selected="1">#{label}</option>|
|
|
65
|
+
else
|
|
66
|
+
self << %|<option value="#{value}">#{label}</option>|
|
|
67
|
+
end
|
|
68
|
+
end
|
|
69
|
+
else
|
|
70
|
+
opts.each do |label, value|
|
|
71
|
+
if value == selected
|
|
72
|
+
self << %|<option value="#{value}" selected="1">#{label}</option>|
|
|
73
|
+
else
|
|
74
|
+
self << %|<option value="#{value}">#{label}</option>|
|
|
75
|
+
end
|
|
76
|
+
end
|
|
77
|
+
end
|
|
78
|
+
end
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
# = XhtmlString
|
|
82
|
+
#
|
|
83
|
+
# A String extension with XHTML generation
|
|
84
|
+
# functionality.
|
|
85
|
+
|
|
86
|
+
class XhtmlString < String
|
|
87
|
+
include N::XmlBuilderMixin
|
|
88
|
+
include N::XhtmlBuilderMixin
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
# = XhtmlBuilder
|
|
92
|
+
#
|
|
93
|
+
# A class that encapsulats the XHTML generation
|
|
94
|
+
# functionality. Utilizes duck typing to redirect
|
|
95
|
+
# output to a target buffer.
|
|
96
|
+
|
|
97
|
+
class XhtmlBuilder
|
|
98
|
+
include N::XmlBuilderMixin
|
|
99
|
+
include N::XhtmlBuilderMixin
|
|
100
|
+
|
|
101
|
+
# The target receives the generated xml,
|
|
102
|
+
# should respond_to :<<
|
|
103
|
+
|
|
104
|
+
attr_accessor :target
|
|
105
|
+
|
|
106
|
+
def initialize(target = '')
|
|
107
|
+
@target = target
|
|
108
|
+
end
|
|
109
|
+
|
|
110
|
+
def << (str)
|
|
111
|
+
@target << str
|
|
112
|
+
end
|
|
113
|
+
|
|
114
|
+
def to_s
|
|
115
|
+
@target.to_s
|
|
116
|
+
end
|
|
117
|
+
end
|
|
118
|
+
|
|
119
|
+
end
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
# George Moschovitis <gm@navel.gr>
|
|
2
|
+
# (c) 2005 Navel, all rights reserved.
|
|
3
|
+
# $Id$
|
|
4
|
+
|
|
5
|
+
module N
|
|
6
|
+
|
|
7
|
+
# = XmlBuilderMixin
|
|
8
|
+
#
|
|
9
|
+
# A helper mixin for programmatically building XML
|
|
10
|
+
# blocks.
|
|
11
|
+
|
|
12
|
+
module XmlBuilderMixin
|
|
13
|
+
|
|
14
|
+
def method_missing(tag, *args, &block)
|
|
15
|
+
self.class.module_eval <<-"end_eval", __FILE__, __LINE__
|
|
16
|
+
def #{tag}(*args)
|
|
17
|
+
attrs = args.last.is_a?(Hash) ? args.pop : nil
|
|
18
|
+
|
|
19
|
+
if block_given?
|
|
20
|
+
start_tag('#{tag}', attrs)
|
|
21
|
+
yield
|
|
22
|
+
end_tag('#{tag}')
|
|
23
|
+
elsif (!args.empty?)
|
|
24
|
+
start_tag('#{tag}', attrs)
|
|
25
|
+
self << args.first
|
|
26
|
+
end_tag('#{tag}')
|
|
27
|
+
else
|
|
28
|
+
start_tag('#{tag}', attrs)
|
|
29
|
+
self << ' />'
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end_eval
|
|
33
|
+
|
|
34
|
+
self.send(tag, *args, &block)
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def start_tag(tag, attributes = nil)
|
|
38
|
+
unless attributes
|
|
39
|
+
self << "<#{tag}>"
|
|
40
|
+
else
|
|
41
|
+
self << "<#{tag}"
|
|
42
|
+
for name, value in attributes
|
|
43
|
+
if value
|
|
44
|
+
self << %| #{name}="#{value}"|
|
|
45
|
+
else
|
|
46
|
+
self << %| #{name}="1"|
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
self << ">"
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
return self
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
def end_tag(tag)
|
|
56
|
+
self << "</#{tag}>"
|
|
57
|
+
|
|
58
|
+
return self
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
def text(str)
|
|
62
|
+
self << str
|
|
63
|
+
|
|
64
|
+
return self
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
def comment(str)
|
|
68
|
+
self << "<!-- #{str} -->"
|
|
69
|
+
|
|
70
|
+
return self
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
# = XmlString
|
|
76
|
+
#
|
|
77
|
+
# A String extension with XML generation
|
|
78
|
+
# functionality.
|
|
79
|
+
|
|
80
|
+
class XmlString < String
|
|
81
|
+
include N::XmlBuilderMixin
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
# = XmlBuilder
|
|
85
|
+
#
|
|
86
|
+
# A class that encapsulats the XML generation
|
|
87
|
+
# functionality. Utilizes duck typing to redirect
|
|
88
|
+
# output to a target buffer.
|
|
89
|
+
|
|
90
|
+
class XmlBuilder
|
|
91
|
+
include N::XmlBuilderMixin
|
|
92
|
+
|
|
93
|
+
# The target receives the generated xml,
|
|
94
|
+
# should respond_to :<<
|
|
95
|
+
|
|
96
|
+
attr_accessor :target
|
|
97
|
+
|
|
98
|
+
def initialize(target = '')
|
|
99
|
+
@target = target
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
def << (str)
|
|
103
|
+
@target << str
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
def to_s
|
|
107
|
+
@target.to_s
|
|
108
|
+
end
|
|
109
|
+
end
|
|
110
|
+
|
|
111
|
+
end
|
data/lib/nitro/config.rb
CHANGED
|
@@ -62,7 +62,7 @@ $default_content_type = 'text/html'
|
|
|
62
62
|
$services = { :index => N::Service }
|
|
63
63
|
|
|
64
64
|
# The service method map.
|
|
65
|
-
$methods =
|
|
65
|
+
$methods = N::SafeHash.new
|
|
66
66
|
|
|
67
67
|
# The shader. The default shader is very simple, here
|
|
68
68
|
# is a typical example of a production shader pipeline:
|
|
@@ -82,8 +82,8 @@ if $DBG
|
|
|
82
82
|
|
|
83
83
|
# Logger (redirect to STDERR)
|
|
84
84
|
|
|
85
|
-
|
|
86
|
-
|
|
85
|
+
Logger.set(Logger.new(STDERR))
|
|
86
|
+
Logger.get.level = Logger::DEBUG
|
|
87
87
|
|
|
88
88
|
# If set to true disables xsl caching. Usefull when debugging xsls.
|
|
89
89
|
|
|
@@ -92,7 +92,7 @@ if $DBG
|
|
|
92
92
|
# If set to true disables script compilation. Usefull when debugging
|
|
93
93
|
# statically included scripts.
|
|
94
94
|
|
|
95
|
-
$reload_scripts = true
|
|
95
|
+
$reload_scripts = true
|
|
96
96
|
|
|
97
97
|
# Standard server setup for debugging.
|
|
98
98
|
|
|
@@ -105,8 +105,8 @@ else
|
|
|
105
105
|
|
|
106
106
|
puts "\nRunning LIVE configuration.\n\n"
|
|
107
107
|
|
|
108
|
-
|
|
109
|
-
|
|
108
|
+
Logger.set(Logger.new("log/app.log", 10))
|
|
109
|
+
Logger.get.level = Logger::INFO
|
|
110
110
|
|
|
111
111
|
# If set to true disables xsl caching. Usefull when debugging xsls.
|
|
112
112
|
|
data/lib/nitro/events.rb
CHANGED
|
@@ -63,7 +63,7 @@ class EventManager
|
|
|
63
63
|
if event_handlers = @events[event]
|
|
64
64
|
event_handlers.delete(name)
|
|
65
65
|
else
|
|
66
|
-
|
|
66
|
+
Logger.debug "ev: cannot remove, handler #{name} not found for event #{event}" if $DBG
|
|
67
67
|
end
|
|
68
68
|
end
|
|
69
69
|
|
data/lib/nitro/html.rb
CHANGED
|
@@ -141,7 +141,7 @@ module HtmlUtils
|
|
|
141
141
|
# convert plain newlines into line breaks <br/>
|
|
142
142
|
|
|
143
143
|
def self.convert_newlines(string)
|
|
144
|
-
return nil unless
|
|
144
|
+
return nil unless N::StringUtils.valid?(string)
|
|
145
145
|
xstring = string.gsub(/\n/, "<br/>")
|
|
146
146
|
return xstring;
|
|
147
147
|
end
|
data/lib/nitro/markup.rb
CHANGED
|
@@ -1,17 +1,16 @@
|
|
|
1
|
-
#
|
|
2
|
-
# * George Moschovitis <gm@navel.gr>
|
|
3
|
-
#
|
|
1
|
+
# George Moschovitis <gm@navel.gr>
|
|
4
2
|
# (c) 2004 Navel, all rights reserved.
|
|
5
3
|
# $Id$
|
|
6
4
|
|
|
7
5
|
require 'glue/property'
|
|
8
6
|
|
|
9
|
-
module
|
|
7
|
+
module N
|
|
10
8
|
|
|
11
9
|
#--
|
|
12
10
|
# Override the default PropertyUtils implementation to
|
|
13
11
|
# add markup support.
|
|
14
12
|
#++
|
|
13
|
+
|
|
15
14
|
module PropertyUtils
|
|
16
15
|
# Override to add markup code.
|
|
17
16
|
#
|
|
@@ -40,10 +39,6 @@ module PropertyUtils
|
|
|
40
39
|
end
|
|
41
40
|
end
|
|
42
41
|
|
|
43
|
-
end # module
|
|
44
|
-
|
|
45
|
-
module N
|
|
46
|
-
|
|
47
42
|
# = Markup
|
|
48
43
|
#
|
|
49
44
|
# Generalised Markup transformations.
|
|
@@ -62,7 +57,7 @@ module N
|
|
|
62
57
|
# here comes the #{obj.body} # => prints the expanded version.
|
|
63
58
|
#
|
|
64
59
|
# obj.body = N::Markup.expand(@params['body'])
|
|
65
|
-
|
|
60
|
+
|
|
66
61
|
module Markup
|
|
67
62
|
def self.expand_html!(str)
|
|
68
63
|
return unless str
|
|
@@ -82,39 +77,39 @@ module Markup
|
|
|
82
77
|
end
|
|
83
78
|
|
|
84
79
|
# Expand the markup code to produce the
|
|
85
|
-
# actual content.
|
|
86
|
-
#
|
|
80
|
+
# actual content. You should override this method
|
|
81
|
+
# in your application to call your custom markup
|
|
82
|
+
# methods.
|
|
83
|
+
|
|
87
84
|
def self.expand(str)
|
|
88
85
|
if str
|
|
89
86
|
xstr = str.dup
|
|
90
87
|
expand_html!(xstr)
|
|
91
|
-
expand_wiki!(xstr)
|
|
92
88
|
return xstr
|
|
93
|
-
else
|
|
94
|
-
return str
|
|
95
89
|
end
|
|
90
|
+
return nil
|
|
96
91
|
end
|
|
97
92
|
|
|
98
93
|
# Compact (reverse) the content to the origial markup
|
|
99
94
|
# code. Not all markup transformations are reversible.
|
|
100
|
-
#
|
|
95
|
+
# You should override this method in your application
|
|
96
|
+
# to call your custom markup methods.
|
|
97
|
+
|
|
101
98
|
def self.compact(str)
|
|
102
99
|
if str
|
|
103
100
|
xstr = str.dup
|
|
104
101
|
compact_html!(xstr)
|
|
105
|
-
compact_wiki!(xstr)
|
|
106
102
|
return xstr
|
|
107
|
-
else
|
|
108
|
-
return str
|
|
109
103
|
end
|
|
104
|
+
return nil
|
|
110
105
|
end
|
|
111
106
|
|
|
112
107
|
# Remove markup code from the input string.
|
|
113
108
|
# NOT IMPLEMENTED.
|
|
114
|
-
|
|
109
|
+
|
|
115
110
|
def self.clear(str)
|
|
116
111
|
end
|
|
117
112
|
|
|
118
113
|
end
|
|
119
114
|
|
|
120
|
-
end
|
|
115
|
+
end
|
data/lib/nitro/scaffold.rb
CHANGED
|
@@ -25,8 +25,8 @@ module Scaffolding
|
|
|
25
25
|
def scaffold(klass, options = {})
|
|
26
26
|
|
|
27
27
|
oid = options[:oid] || 'oid'
|
|
28
|
-
name = options[:name] ||
|
|
29
|
-
list_name = options[:list_name] ||
|
|
28
|
+
name = options[:name] || N::Inflector.name(klass.name)
|
|
29
|
+
list_name = options[:list_name] || N::Inflector.plural_name(name)
|
|
30
30
|
suffix = "_#{name}"
|
|
31
31
|
|
|
32
32
|
# Add methods to the scaffolded class.
|
|
@@ -26,7 +26,7 @@ module AppServerMixin
|
|
|
26
26
|
$sessions = DRbObject.new(nil, $drb_sessions_cluster)
|
|
27
27
|
else
|
|
28
28
|
# NoCluster mode: use standard Ruby onjects.
|
|
29
|
-
$lm =
|
|
29
|
+
$lm = N::SafeHash.new
|
|
30
30
|
$sessions = N::SessionManager.new
|
|
31
31
|
end
|
|
32
32
|
|
|
@@ -59,8 +59,8 @@ class AppServer < N::Server
|
|
|
59
59
|
super
|
|
60
60
|
initialize_app()
|
|
61
61
|
|
|
62
|
-
|
|
63
|
-
|
|
62
|
+
Logger.info "Web Server listening at #$srv_url"
|
|
63
|
+
Logger.info "App Server listening at http://#$appsrv_address:#$appsrv_port"
|
|
64
64
|
end
|
|
65
65
|
end
|
|
66
66
|
|