cuca 0.01
Sign up to get free protection for your applications and to get access to all the features.
- data/application_skeleton/README +21 -0
- data/application_skeleton/app/_controllers/application.rb +7 -0
- data/application_skeleton/app/_layouts/simple.rb +19 -0
- data/application_skeleton/app/_widgets/sourcecode.rb +21 -0
- data/application_skeleton/app/_widgets/test.rb +23 -0
- data/application_skeleton/app/demo.rb +64 -0
- data/application_skeleton/app/index.rb +39 -0
- data/application_skeleton/app/user/__default_username/index.rb +7 -0
- data/application_skeleton/conf/environment.rb +16 -0
- data/application_skeleton/log/access.log +1 -0
- data/application_skeleton/log/error.log +1 -0
- data/application_skeleton/log/messages +1 -0
- data/application_skeleton/public/css/style.css +27 -0
- data/application_skeleton/public/dispatch.cgi +31 -0
- data/application_skeleton/public/dispatch.fcgi +36 -0
- data/application_skeleton/public/img/cuca-seagull.png +0 -0
- data/application_skeleton/scripts/console +5 -0
- data/application_skeleton/scripts/console.rb +5 -0
- data/application_skeleton/scripts/server-lighttpd-fcgi.rb +116 -0
- data/application_skeleton/scripts/server-lighttpd.rb +109 -0
- data/application_skeleton/scripts/server-webrick.rb +26 -0
- data/application_skeleton/scripts/test.rb +8 -0
- data/application_skeleton/tests/widgets/link.rb +22 -0
- data/bin/cuca +43 -0
- data/lib/cuca/app.rb +317 -0
- data/lib/cuca/cgi_emu.rb +67 -0
- data/lib/cuca/cgi_fix.rb +58 -0
- data/lib/cuca/const.rb +3 -0
- data/lib/cuca/controller.rb +240 -0
- data/lib/cuca/generator/markaby.rb +80 -0
- data/lib/cuca/generator/view.rb +121 -0
- data/lib/cuca/layout.rb +62 -0
- data/lib/cuca/mimetypes.rb +89 -0
- data/lib/cuca/session.rb +143 -0
- data/lib/cuca/sessionflash.rb +56 -0
- data/lib/cuca/sessionpage.rb +41 -0
- data/lib/cuca/stdlib/arform.rb +208 -0
- data/lib/cuca/stdlib/arview.rb +16 -0
- data/lib/cuca/stdlib/form.rb +137 -0
- data/lib/cuca/stdlib/formerrors.rb +20 -0
- data/lib/cuca/stdlib/link.rb +37 -0
- data/lib/cuca/stdlib/list.rb +3 -0
- data/lib/cuca/stdlib/listwidget/dblist.rb +122 -0
- data/lib/cuca/stdlib/listwidget/list.rb +189 -0
- data/lib/cuca/stdlib/listwidget/querydef.rb +167 -0
- data/lib/cuca/stdlib/listwidget/staticdatalist.rb +79 -0
- data/lib/cuca/stdlib/slink.rb +30 -0
- data/lib/cuca/test/helpers.rb +42 -0
- data/lib/cuca/urlmap.rb +267 -0
- data/lib/cuca/widget.rb +212 -0
- data/lib/cuca.rb +68 -0
- metadata +141 -0
@@ -0,0 +1,21 @@
|
|
1
|
+
Welcome to the Cuca Framework
|
2
|
+
|
3
|
+
Directory Layout:
|
4
|
+
|
5
|
+
app - Place your application here
|
6
|
+
conf - Your script configs and environment.rb file
|
7
|
+
lib - Is in your load path
|
8
|
+
public - Point your webserver to this directory
|
9
|
+
log - Cuca framework log directory (should be writable by the webserver)
|
10
|
+
scripts - Tools to run/debug/test cuca
|
11
|
+
tests - application tests
|
12
|
+
|
13
|
+
|
14
|
+
To get started:
|
15
|
+
|
16
|
+
1. Run ./script/server-webrick.rb and open http://localhost:2000/
|
17
|
+
2. See http://cuca.rubyforge.org/ for more information
|
18
|
+
|
19
|
+
|
20
|
+
Questions/Comments/Suggestions are welcome: Email boesemar@rubyforge.org or
|
21
|
+
use the rubyforge cuca project forum.
|
@@ -0,0 +1,19 @@
|
|
1
|
+
#
|
2
|
+
# A simple Layout
|
3
|
+
#
|
4
|
+
class SimpleLayout < Cuca::Layout
|
5
|
+
def output
|
6
|
+
content << <<-EOF
|
7
|
+
<HTML>
|
8
|
+
<HEAD><TITLE>Cuca Default Page - #{@page_title}</TITLE></HEAD>
|
9
|
+
<LINK href="/css/style.css" type="text/css" rel="stylesheet"></LINK>
|
10
|
+
|
11
|
+
<BODY>
|
12
|
+
#{@content_for_layout}
|
13
|
+
<HR/>
|
14
|
+
<SMALL>Generated by Cuca Framework #{Time.now} (using 'simple' demo layout on Cuca Version #{Cuca::VERSION})</SMALL>
|
15
|
+
</BODY>
|
16
|
+
</HTML>
|
17
|
+
EOF
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
# this demo widget will display the sourcecode of the current
|
2
|
+
# action (the file that contains the controller)
|
3
|
+
#
|
4
|
+
# This is a demo widget - part of the cuca application skeleton
|
5
|
+
# You can delete it unless you have any use for it in your applicaiton
|
6
|
+
|
7
|
+
|
8
|
+
require 'cuca/generator/markaby'
|
9
|
+
class SourceCodeWidget < Cuca::Widget
|
10
|
+
include Cuca::Generator::Markaby
|
11
|
+
|
12
|
+
def output
|
13
|
+
@script = app.urlmap.script
|
14
|
+
mab do
|
15
|
+
div(:style=>'background-color:#FAFAFF; border: 1px dashed blue;') do
|
16
|
+
b { "Sourcecode of: " }; text "#{@script}"
|
17
|
+
pre { escapeHTML(File.open(@script).read) } # escapeHTML is defined in Cuca::Widget
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
# this demo widget will simply display all parameters and blocks
|
2
|
+
# it got called with.
|
3
|
+
#
|
4
|
+
# This is a demo widget - part of the cuca application skeleton
|
5
|
+
# You can delete it unless you have any use for it in your applica
|
6
|
+
require 'cuca/generator/markaby'
|
7
|
+
|
8
|
+
class TestWidget < Cuca::Widget
|
9
|
+
|
10
|
+
include Cuca::Generator::Markaby
|
11
|
+
|
12
|
+
def output(*args, &block)
|
13
|
+
@a = @_assigns
|
14
|
+
mab { text "Debug-Widget: "; br ;
|
15
|
+
text "ARGS: " + args.inspect ; br ;
|
16
|
+
text "ASSIGNS:" + @a.inspect; br;
|
17
|
+
text "PARAMS: " + @params.inspect ; br;
|
18
|
+
text "BLOCK: " + (block_given? ? "YES" : "NO") ; br }
|
19
|
+
mab { text "Block returns:" ;br }
|
20
|
+
mab(&block)
|
21
|
+
end
|
22
|
+
|
23
|
+
end
|
@@ -0,0 +1,64 @@
|
|
1
|
+
# this action will show some widgets
|
2
|
+
|
3
|
+
|
4
|
+
require 'cuca/stdlib/list' # this will include the StaticDataListWidget
|
5
|
+
require 'cuca/stdlib/link' # to use the LinkWidget
|
6
|
+
|
7
|
+
|
8
|
+
class DemoController < ApplicationController
|
9
|
+
|
10
|
+
layout 'simple'
|
11
|
+
|
12
|
+
def run
|
13
|
+
@page_title = "Example use of a Widget"
|
14
|
+
@script = app.urlmap.script
|
15
|
+
mab do
|
16
|
+
h1 { "A few widgets" }
|
17
|
+
br
|
18
|
+
i { "Please have a look at the page sourcecode below so these mixed examples make sense" }
|
19
|
+
br
|
20
|
+
br
|
21
|
+
|
22
|
+
# LinkWidget 1
|
23
|
+
h2 { "This is a simple Link" }
|
24
|
+
Link('index') { "This is a Link back to Index" }
|
25
|
+
br
|
26
|
+
|
27
|
+
# LinkWidget 2
|
28
|
+
h2 { "Also the following block is one link, but with markaby code as content that displays the bird and the script filename" }
|
29
|
+
Link('index', {}) { img(:src=>'/img/cuca-seagull.png'); br; text "Rendered with #{@script}" }
|
30
|
+
br
|
31
|
+
|
32
|
+
# Static Data List
|
33
|
+
h2 { "This is a demo of the List widget using Static Data" }
|
34
|
+
small { "Note: You can sort, browse and filter this list" }
|
35
|
+
StaticDataList('random_names',
|
36
|
+
:columns => [ { :id => 'id', :display=>'ID #' },
|
37
|
+
{ :id => 'name', :display=>'Name' } ],
|
38
|
+
:data => [[ 1, 'Jack'],
|
39
|
+
[ 2, 'Elvis'],
|
40
|
+
[ 3, 'Alice'],
|
41
|
+
[ 4, 'John'],
|
42
|
+
[ 5, 'Elwood'],
|
43
|
+
[ 6, 'Jake'],
|
44
|
+
[ 7, 'Purple'],
|
45
|
+
[ 8, 'Nicci'],
|
46
|
+
[ 9, 'Feti'],
|
47
|
+
[ 10, 'Fella'],
|
48
|
+
[ 11, 'Scott'],
|
49
|
+
[ 12, 'Leo']])
|
50
|
+
br
|
51
|
+
|
52
|
+
# TestWidget
|
53
|
+
h2 {"The 'TestWidget' will take any parameter and any block and will display how we called it: " }
|
54
|
+
Test("one", 2, 'tree') { b { "a bold block with a string" }}
|
55
|
+
br
|
56
|
+
|
57
|
+
# SourceCode
|
58
|
+
h2 { "Finally this is the sourcecode of the script" }
|
59
|
+
SourceCode();
|
60
|
+
br
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
# This index demo will just output some text using Markaby
|
2
|
+
|
3
|
+
require 'cuca/stdlib/slink'
|
4
|
+
|
5
|
+
class IndexController < ApplicationController
|
6
|
+
layout 'simple'
|
7
|
+
|
8
|
+
def run
|
9
|
+
@page_title = "Welcome"
|
10
|
+
mab do
|
11
|
+
img(:src=>'/img/cuca-seagull.png', :alt=>"Cuca Bird");
|
12
|
+
br
|
13
|
+
h1 { "Welcome to Cuca" }
|
14
|
+
br
|
15
|
+
text "Thank you for installing the cuca framework.";br;
|
16
|
+
br
|
17
|
+
h2 { "If you want to lean cuca" }
|
18
|
+
ul do
|
19
|
+
li { text "Have a look at the Demo Widgets: "; SLink('demo', 'Here') }
|
20
|
+
li { text "Checkout the cuca website: "; SLink("http://cuca.rubyforge.net") }
|
21
|
+
li { text "Read the source code of these examples" }
|
22
|
+
end
|
23
|
+
|
24
|
+
h2 { "If you want to start a new application" }
|
25
|
+
text "This skeleton comes with a few examples you might want to cleanup. Mainly:"
|
26
|
+
ul do
|
27
|
+
li { "Delete app/_widgets/*" }
|
28
|
+
li { "Delete app/demo.rb and app/index.rb" }
|
29
|
+
li { "Delete app/_layout/*" }
|
30
|
+
li { "Look at public/css/style.css" }
|
31
|
+
li { "Look at app/_controllers/application.rb" }
|
32
|
+
end
|
33
|
+
br
|
34
|
+
h2 { "Good Luck..." }
|
35
|
+
text "If you like cuca use the rubyforge to give any type of feedback."
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
@@ -0,0 +1,16 @@
|
|
1
|
+
|
2
|
+
# Use this file to setup your application environment
|
3
|
+
|
4
|
+
Cuca::App.configure do |config|
|
5
|
+
# config.db_database = 'm3'
|
6
|
+
# config.db_username = 'postgres'
|
7
|
+
# config.db_password = ''
|
8
|
+
# config.db_host = 'localhost'
|
9
|
+
# config.db_adapter = 'postgresql'
|
10
|
+
# config.db_database_testing = 'm3_test'
|
11
|
+
|
12
|
+
config.log_level = 3
|
13
|
+
config.include_directories = %w{_controllers _layouts _models _widgets}
|
14
|
+
config.magic_action_prefix = '__default_'
|
15
|
+
|
16
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
|
@@ -0,0 +1 @@
|
|
1
|
+
|
@@ -0,0 +1 @@
|
|
1
|
+
|
@@ -0,0 +1,27 @@
|
|
1
|
+
.list table {
|
2
|
+
font-size: 10pt;
|
3
|
+
}
|
4
|
+
|
5
|
+
.list .hl a {
|
6
|
+
display: block;
|
7
|
+
background-color: gray;
|
8
|
+
text-decoration: none;
|
9
|
+
font-weight: bold;
|
10
|
+
color:white;
|
11
|
+
}
|
12
|
+
|
13
|
+
|
14
|
+
h1 {
|
15
|
+
border-bottom: 1px solid gray;
|
16
|
+
font-size: 15pt;
|
17
|
+
}
|
18
|
+
|
19
|
+
h2 {
|
20
|
+
border-bottom: 1px solid gray;
|
21
|
+
font-size: 12pt;
|
22
|
+
}
|
23
|
+
|
24
|
+
small {
|
25
|
+
color: gray;
|
26
|
+
}
|
27
|
+
|
@@ -0,0 +1,31 @@
|
|
1
|
+
#!/usr/bin/ruby
|
2
|
+
|
3
|
+
# Set this Environment variable to load the cuca framework from a specific
|
4
|
+
# Path. If not set it will try via rubygems.
|
5
|
+
|
6
|
+
FRAMEWORK_PATH = ENV['CUCA_FRAMEWORK_PATH']
|
7
|
+
|
8
|
+
$cuca_path = File.dirname(__FILE__)+"/../"
|
9
|
+
|
10
|
+
if (FRAMEWORK_PATH) then
|
11
|
+
$: << FRAMEWORK_PATH
|
12
|
+
require 'cuca'
|
13
|
+
require 'rubygems'
|
14
|
+
else
|
15
|
+
require 'rubygems'
|
16
|
+
require 'cuca'
|
17
|
+
end
|
18
|
+
|
19
|
+
Signal.trap("INT") do
|
20
|
+
$stderr.puts "INT caught"
|
21
|
+
exit
|
22
|
+
end
|
23
|
+
|
24
|
+
|
25
|
+
start = (Time.now.to_f * 1000).to_i
|
26
|
+
application = Cuca::App.new
|
27
|
+
application.cgicall
|
28
|
+
stop = (Time.now.to_f * 1000).to_i
|
29
|
+
dur_msec = stop - start
|
30
|
+
application.logger.info("App::cgicall: #{dur_msec} msec [= #{(1000 / dur_msec).to_i} pages / second]")
|
31
|
+
|
@@ -0,0 +1,36 @@
|
|
1
|
+
#!/usr/bin/ruby
|
2
|
+
|
3
|
+
|
4
|
+
FRAMEWORK_PATH = ENV['CUCA_FRAMEWORK_PATH']
|
5
|
+
|
6
|
+
$cuca_path = File.dirname(__FILE__)+"/../"
|
7
|
+
|
8
|
+
if (FRAMEWORK_PATH) then
|
9
|
+
$: << FRAMEWORK_PATH
|
10
|
+
require 'cuca'
|
11
|
+
require 'rubygems'
|
12
|
+
else
|
13
|
+
require 'rubygems'
|
14
|
+
require 'cuca'
|
15
|
+
end
|
16
|
+
|
17
|
+
require "fcgi"
|
18
|
+
|
19
|
+
Signal.trap("INT") do
|
20
|
+
$stderr.puts "INT caught"
|
21
|
+
exit
|
22
|
+
end
|
23
|
+
|
24
|
+
$cuca_path = File.dirname(__FILE__)+"/../"
|
25
|
+
|
26
|
+
|
27
|
+
FCGI.each_cgi do |cgi|
|
28
|
+
CGI::fix_env(cgi.env_table)
|
29
|
+
start = (Time.now.to_f * 1000).to_i
|
30
|
+
application = Cuca::App.new(cgi)
|
31
|
+
application.cgicall
|
32
|
+
stop = (Time.now.to_f * 1000).to_i
|
33
|
+
dur_msec = stop - start
|
34
|
+
application.logger.info("App::cgicall (#{cgi.path_info}: #{dur_msec} msec [= #{(1000 / dur_msec).to_i} pages / second]")
|
35
|
+
end
|
36
|
+
|
Binary file
|
@@ -0,0 +1,116 @@
|
|
1
|
+
#!/usr/bin/ruby
|
2
|
+
|
3
|
+
cuca_path = File.expand_path(File.dirname(__FILE__)+"/../")
|
4
|
+
document_root = "#{cuca_path}/public/"
|
5
|
+
error_log = "#{cuca_path}/log/error.log"
|
6
|
+
access_log = "#{cuca_path}/log/access.log"
|
7
|
+
pid_file = '/tmp/lighttpd.pid'
|
8
|
+
dispatcher = "dispatch.fcgi"
|
9
|
+
server_port = 2000
|
10
|
+
server_program = "/usr/sbin/lighttpd"
|
11
|
+
|
12
|
+
config = <<-EOF
|
13
|
+
|
14
|
+
server.modules = (
|
15
|
+
"mod_access",
|
16
|
+
"mod_alias",
|
17
|
+
"mod_accesslog",
|
18
|
+
"mod_fastcgi"
|
19
|
+
)
|
20
|
+
|
21
|
+
# cgi.assign = ( "" => "/usr/bin/ruby" )
|
22
|
+
|
23
|
+
fastcgi.server = ( "/" => (( "bin-path" => "#{cuca_path}/public/#{dispatcher}",
|
24
|
+
"socket" => "/tmp/ruby.socket",
|
25
|
+
"min-procs" => 1,
|
26
|
+
"max-procs" => 1 )) )
|
27
|
+
|
28
|
+
server.document-root = "#{document_root}"
|
29
|
+
|
30
|
+
server.port = #{server_port}
|
31
|
+
|
32
|
+
server.errorlog = "#{error_log}"
|
33
|
+
|
34
|
+
server.error-handler-404 = "/#{dispatcher}"
|
35
|
+
|
36
|
+
index-file.names = ( "index.html" )
|
37
|
+
|
38
|
+
accesslog.filename = "#{access_log}"
|
39
|
+
|
40
|
+
# debug.log-request-handling = "enable"
|
41
|
+
|
42
|
+
server.pid-file = "#{pid_file}"
|
43
|
+
|
44
|
+
dir-listing.encoding = "utf-8"
|
45
|
+
server.dir-listing = "disable"
|
46
|
+
|
47
|
+
server.username = "www-data"
|
48
|
+
server.groupname = "www-data"
|
49
|
+
|
50
|
+
|
51
|
+
|
52
|
+
mimetype.assign = (
|
53
|
+
".rpm" => "application/x-rpm",
|
54
|
+
".pdf" => "application/pdf",
|
55
|
+
".sig" => "application/pgp-signature",
|
56
|
+
".spl" => "application/futuresplash",
|
57
|
+
".class" => "application/octet-stream",
|
58
|
+
".ps" => "application/postscript",
|
59
|
+
".torrent" => "application/x-bittorrent",
|
60
|
+
".dvi" => "application/x-dvi",
|
61
|
+
".gz" => "application/x-gzip",
|
62
|
+
".pac" => "application/x-ns-proxy-autoconfig",
|
63
|
+
".swf" => "application/x-shockwave-flash",
|
64
|
+
".tar.gz" => "application/x-tgz",
|
65
|
+
".tgz" => "application/x-tgz",
|
66
|
+
".tar" => "application/x-tar",
|
67
|
+
".zip" => "application/zip",
|
68
|
+
".mp3" => "audio/mpeg",
|
69
|
+
".m3u" => "audio/x-mpegurl",
|
70
|
+
".wma" => "audio/x-ms-wma",
|
71
|
+
".wax" => "audio/x-ms-wax",
|
72
|
+
".ogg" => "audio/x-wav",
|
73
|
+
".wav" => "audio/x-wav",
|
74
|
+
".gif" => "image/gif",
|
75
|
+
".jpg" => "image/jpeg",
|
76
|
+
".jpeg" => "image/jpeg",
|
77
|
+
".png" => "image/png",
|
78
|
+
".xbm" => "image/x-xbitmap",
|
79
|
+
".xpm" => "image/x-xpixmap",
|
80
|
+
".xwd" => "image/x-xwindowdump",
|
81
|
+
".css" => "text/css",
|
82
|
+
".html" => "text/html",
|
83
|
+
".htm" => "text/html",
|
84
|
+
".js" => "text/javascript",
|
85
|
+
".asc" => "text/plain",
|
86
|
+
".c" => "text/plain",
|
87
|
+
".conf" => "text/plain",
|
88
|
+
".text" => "text/plain",
|
89
|
+
".txt" => "text/plain",
|
90
|
+
".dtd" => "text/xml",
|
91
|
+
".xml" => "text/xml",
|
92
|
+
".mpeg" => "video/mpeg",
|
93
|
+
".mpg" => "video/mpeg",
|
94
|
+
".mov" => "video/quicktime",
|
95
|
+
".qt" => "video/quicktime",
|
96
|
+
".avi" => "video/x-msvideo",
|
97
|
+
".asf" => "video/x-ms-asf",
|
98
|
+
".asx" => "video/x-ms-asf",
|
99
|
+
".wmv" => "video/x-ms-wmv",
|
100
|
+
".bz2" => "application/x-bzip",
|
101
|
+
".tbz" => "application/x-bzip-compressed-tar",
|
102
|
+
".tar.bz2" => "application/x-bzip-compressed-tar"
|
103
|
+
)
|
104
|
+
|
105
|
+
|
106
|
+
EOF
|
107
|
+
|
108
|
+
|
109
|
+
fn = '/tmp/lighttpd-cuca.conf'
|
110
|
+
|
111
|
+
f = File.new(fn, 'w')
|
112
|
+
f << config
|
113
|
+
f.close
|
114
|
+
|
115
|
+
puts "Starting lighttpd on port #{server_port}"
|
116
|
+
system("#{server_program} -D -f #{fn}")
|
@@ -0,0 +1,109 @@
|
|
1
|
+
#!/usr/bin/ruby
|
2
|
+
|
3
|
+
cuca_path = File.expand_path(File.dirname(__FILE__))+"/../"
|
4
|
+
document_root = "#{cuca_path}/public/"
|
5
|
+
error_log = "#{cuca_path}/log/error.log"
|
6
|
+
access_log = "#{cuca_path}/log/access.log"
|
7
|
+
pid_file = '/tmp/lighttpd.pid'
|
8
|
+
server_program = "/usr/sbin/lighttpd"
|
9
|
+
server_port = 2000
|
10
|
+
|
11
|
+
config = <<-EOF
|
12
|
+
|
13
|
+
server.modules = (
|
14
|
+
"mod_access",
|
15
|
+
"mod_alias",
|
16
|
+
"mod_accesslog",
|
17
|
+
"mod_cgi"
|
18
|
+
)
|
19
|
+
|
20
|
+
cgi.assign = ( ".cgi" => "/usr/bin/ruby" )
|
21
|
+
|
22
|
+
server.document-root = "#{document_root}"
|
23
|
+
|
24
|
+
server.port = #{server_port}
|
25
|
+
|
26
|
+
server.errorlog = "#{error_log}"
|
27
|
+
|
28
|
+
server.error-handler-404 = "/dispatch.cgi"
|
29
|
+
# server.error-handler-404 = "/error-404.html"
|
30
|
+
|
31
|
+
index-file.names = ( "index.html" )
|
32
|
+
|
33
|
+
accesslog.filename = "#{access_log}"
|
34
|
+
|
35
|
+
server.pid-file = "#{pid_file}"
|
36
|
+
|
37
|
+
dir-listing.encoding = "utf-8"
|
38
|
+
server.dir-listing = "disable"
|
39
|
+
|
40
|
+
# server.username = "www-data"
|
41
|
+
# server.groupname = "www-data"
|
42
|
+
|
43
|
+
|
44
|
+
|
45
|
+
mimetype.assign = (
|
46
|
+
".rpm" => "application/x-rpm",
|
47
|
+
".pdf" => "application/pdf",
|
48
|
+
".sig" => "application/pgp-signature",
|
49
|
+
".spl" => "application/futuresplash",
|
50
|
+
".class" => "application/octet-stream",
|
51
|
+
".ps" => "application/postscript",
|
52
|
+
".torrent" => "application/x-bittorrent",
|
53
|
+
".dvi" => "application/x-dvi",
|
54
|
+
".gz" => "application/x-gzip",
|
55
|
+
".pac" => "application/x-ns-proxy-autoconfig",
|
56
|
+
".swf" => "application/x-shockwave-flash",
|
57
|
+
".tar.gz" => "application/x-tgz",
|
58
|
+
".tgz" => "application/x-tgz",
|
59
|
+
".tar" => "application/x-tar",
|
60
|
+
".zip" => "application/zip",
|
61
|
+
".mp3" => "audio/mpeg",
|
62
|
+
".m3u" => "audio/x-mpegurl",
|
63
|
+
".wma" => "audio/x-ms-wma",
|
64
|
+
".wax" => "audio/x-ms-wax",
|
65
|
+
".ogg" => "audio/x-wav",
|
66
|
+
".wav" => "audio/x-wav",
|
67
|
+
".gif" => "image/gif",
|
68
|
+
".jpg" => "image/jpeg",
|
69
|
+
".jpeg" => "image/jpeg",
|
70
|
+
".png" => "image/png",
|
71
|
+
".xbm" => "image/x-xbitmap",
|
72
|
+
".xpm" => "image/x-xpixmap",
|
73
|
+
".xwd" => "image/x-xwindowdump",
|
74
|
+
".css" => "text/css",
|
75
|
+
".html" => "text/html",
|
76
|
+
".htm" => "text/html",
|
77
|
+
".js" => "text/javascript",
|
78
|
+
".asc" => "text/plain",
|
79
|
+
".c" => "text/plain",
|
80
|
+
".conf" => "text/plain",
|
81
|
+
".text" => "text/plain",
|
82
|
+
".txt" => "text/plain",
|
83
|
+
".dtd" => "text/xml",
|
84
|
+
".xml" => "text/xml",
|
85
|
+
".mpeg" => "video/mpeg",
|
86
|
+
".mpg" => "video/mpeg",
|
87
|
+
".mov" => "video/quicktime",
|
88
|
+
".qt" => "video/quicktime",
|
89
|
+
".avi" => "video/x-msvideo",
|
90
|
+
".asf" => "video/x-ms-asf",
|
91
|
+
".asx" => "video/x-ms-asf",
|
92
|
+
".wmv" => "video/x-ms-wmv",
|
93
|
+
".bz2" => "application/x-bzip",
|
94
|
+
".tbz" => "application/x-bzip-compressed-tar",
|
95
|
+
".tar.bz2" => "application/x-bzip-compressed-tar"
|
96
|
+
)
|
97
|
+
|
98
|
+
|
99
|
+
EOF
|
100
|
+
|
101
|
+
|
102
|
+
fn = '/tmp/lighttpd-cuca.conf'
|
103
|
+
|
104
|
+
f = File.new(fn, 'w')
|
105
|
+
f << config
|
106
|
+
f.close
|
107
|
+
|
108
|
+
puts "Starting lighttpd on port #{server_port}"
|
109
|
+
system("#{server_program} -D -f #{fn}")
|
@@ -0,0 +1,26 @@
|
|
1
|
+
#!/usr/bin/ruby
|
2
|
+
|
3
|
+
require 'webrick'
|
4
|
+
require 'cgi'
|
5
|
+
|
6
|
+
|
7
|
+
# this is for http debugging
|
8
|
+
class CucaHandler < WEBrick::HTTPServlet::CGIHandler
|
9
|
+
alias :old_do_GET :do_GET
|
10
|
+
|
11
|
+
def do_GET(req, res)
|
12
|
+
# puts "------------ Request ----------\n #{req.to_s}"
|
13
|
+
start = (Time.now.to_f * 100).to_i
|
14
|
+
r = old_do_GET(req, res)
|
15
|
+
stop = (Time.now.to_f * 100).to_i
|
16
|
+
# $stderr.puts "WEBRICK: Time: #{stop - start} ms"
|
17
|
+
# puts "------------ RESPONSE ----------\n #{res.to_s}"
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
21
|
+
|
22
|
+
server = WEBrick::HTTPServer.new(:Port => 2000)
|
23
|
+
server.mount("/", CucaHandler, File.expand_path(File.dirname(__FILE__))+"/../public/dispatch.cgi")
|
24
|
+
|
25
|
+
trap("INT"){ server.shutdown }
|
26
|
+
server.start
|
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
|
3
|
+
$cuca_path = File.dirname(__FILE__)+"/../../"
|
4
|
+
|
5
|
+
require 'cuca'
|
6
|
+
require 'cuca/test/helpers'
|
7
|
+
|
8
|
+
class TC_TestWidget < Test::Unit::TestCase
|
9
|
+
|
10
|
+
include Cuca::Test::Helpers
|
11
|
+
|
12
|
+
def setup
|
13
|
+
init()
|
14
|
+
end
|
15
|
+
|
16
|
+
def test_linkwidget
|
17
|
+
link = widget(LinkWidget, '/link/to') { "Something" }
|
18
|
+
assert link.to_s.include?('<a') && link.to_s.include?('Something')
|
19
|
+
end
|
20
|
+
|
21
|
+
|
22
|
+
end
|
data/bin/cuca
ADDED
@@ -0,0 +1,43 @@
|
|
1
|
+
#!/usr/bin/ruby
|
2
|
+
#
|
3
|
+
# This is a simple script to install the cuca application skeleton
|
4
|
+
# provided by the cuca gems.
|
5
|
+
#
|
6
|
+
require 'ftools'
|
7
|
+
require 'fileutils'
|
8
|
+
|
9
|
+
if ARGV.size == 0 then
|
10
|
+
$stderr.puts "Usage #{__FILE__} [directory of application]"
|
11
|
+
exit
|
12
|
+
end
|
13
|
+
|
14
|
+
framework_path = File.dirname(__FILE__)+"/../application_skeleton/"
|
15
|
+
|
16
|
+
appname = ARGV[0]
|
17
|
+
|
18
|
+
puts "Createing application skeleton in #{appname}"
|
19
|
+
|
20
|
+
|
21
|
+
Dir.glob("#{framework_path}/**/*").each do |file|
|
22
|
+
fname = file[framework_path.length..-1]
|
23
|
+
dname = "#{appname}/#{fname}"
|
24
|
+
|
25
|
+
if File.exists?(dname) then
|
26
|
+
puts "(exists) #{fname}"
|
27
|
+
next
|
28
|
+
end
|
29
|
+
|
30
|
+
if File.directory?(file) then
|
31
|
+
puts "(mkdir) #{fname}"
|
32
|
+
File.makedirs(dname)
|
33
|
+
next
|
34
|
+
end
|
35
|
+
|
36
|
+
puts "(install) #{fname}"
|
37
|
+
File.install(file, dname)
|
38
|
+
|
39
|
+
if fname.include?('/scripts/server') || fname.include?('/public/dispatch') || fname.include?('/scripts/console') then
|
40
|
+
puts "(chmod) #{fname} (755)"
|
41
|
+
FileUtils.chmod(33261, dname)
|
42
|
+
end
|
43
|
+
end
|