cuba-contrib 3.1.0.rc2 → 3.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/README.markdown +26 -14
- data/cuba-contrib.gemspec +3 -3
- data/lib/cuba/mote.rb +1 -1
- data/test/mote.rb +24 -0
- metadata +14 -14
data/README.markdown
CHANGED
@@ -3,7 +3,7 @@
|
|
3
3
|
[Cuba][cuba] is probably one of the tiniest rack-based micro
|
4
4
|
frameworks around. Weighing in at only __138 LOC__, it has proven
|
5
5
|
itself to be a very resilient tool in various web application domains.
|
6
|
-
Check [the list of sites][
|
6
|
+
Check [the list of sites][cuba] built using Cuba in order to
|
7
7
|
grasp the endless possibilities.
|
8
8
|
|
9
9
|
## STEP 1: Cuba::Prelude
|
@@ -61,6 +61,7 @@ We prefer to use our home-grown templating engine called
|
|
61
61
|
``` ruby
|
62
62
|
require "cuba"
|
63
63
|
require "cuba/contrib"
|
64
|
+
require "mote"
|
64
65
|
|
65
66
|
Cuba.plugin Cuba::Mote
|
66
67
|
|
@@ -72,20 +73,29 @@ Cuba.define do
|
|
72
73
|
on "about" do
|
73
74
|
res.write partial("about")
|
74
75
|
end
|
76
|
+
|
77
|
+
# Or you can use `render` as a shortcut to `res.write view(...)`.
|
78
|
+
on "contact" do
|
79
|
+
render("contact")
|
80
|
+
end
|
75
81
|
end
|
76
82
|
```
|
77
83
|
|
78
84
|
This assumes that you have a `views` folder, containing a `home.mote`
|
79
|
-
and an `about.mote`.
|
85
|
+
and an `about.mote`. Your layout defaults to `layout.mote`.
|
80
86
|
|
81
87
|
### Classic templating needs
|
82
88
|
|
89
|
+
**Note**: as of Cuba 3.0, the plugin architecture of `cuba-contrib` has
|
90
|
+
been merged into the core codebase. The following example should work with
|
91
|
+
Cuba 3.0 without even requiring `cuba-contrib`.
|
92
|
+
|
83
93
|
``` ruby
|
84
94
|
require "cuba"
|
85
|
-
require "cuba/
|
95
|
+
require "cuba/render"
|
86
96
|
|
87
|
-
Cuba.plugin Cuba::
|
88
|
-
Cuba.
|
97
|
+
Cuba.plugin Cuba::Render
|
98
|
+
Cuba.settings[:render][:template_engine] = "haml"
|
89
99
|
|
90
100
|
Cuba.define do
|
91
101
|
on "home" do
|
@@ -103,9 +113,11 @@ end
|
|
103
113
|
Authoring your own plugins is pretty straightforward.
|
104
114
|
|
105
115
|
``` ruby
|
116
|
+
require "bluecloth"
|
117
|
+
|
106
118
|
module MyOwnHelper
|
107
119
|
def markdown(str)
|
108
|
-
|
120
|
+
Markdown.new(str).to_html
|
109
121
|
end
|
110
122
|
end
|
111
123
|
|
@@ -120,22 +132,22 @@ A more complicated plugin for example, will make use of
|
|
120
132
|
`Cuba.settings` to provide default values:
|
121
133
|
|
122
134
|
``` ruby
|
123
|
-
module
|
135
|
+
module MarkdownView
|
124
136
|
def self.setup(app)
|
125
|
-
app.settings[:
|
137
|
+
app.settings[:markdown_view] ||= {}
|
138
|
+
app.settings[:markdown_view][:views] = "markdown"
|
126
139
|
end
|
127
140
|
|
128
|
-
def
|
129
|
-
|
141
|
+
def markdown_view(template)
|
142
|
+
data = File.read("#{settings[:markdown_view][:views]}/#{template}.markdown")
|
143
|
+
|
144
|
+
res.write Markdown.new(data).to_html
|
130
145
|
end
|
131
146
|
end
|
132
147
|
|
133
|
-
Cuba.plugin
|
148
|
+
Cuba.plugin MarkdownView
|
134
149
|
```
|
135
150
|
|
136
|
-
This sample plugin actually resembles how `Cuba::Rendering` works.
|
137
|
-
|
138
151
|
[cuba]: http://cuba.is
|
139
|
-
[sites]: http://cuba.is/sites
|
140
152
|
[mote]: http://github.com/soveran/mote
|
141
153
|
[unix]: http://en.wikipedia.org/wiki/Unix_philosophy
|
data/cuba-contrib.gemspec
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
s.name = "cuba-contrib"
|
3
|
-
s.version = "3.1.0
|
3
|
+
s.version = "3.1.0"
|
4
4
|
s.summary = "Cuba plugins and utilities."
|
5
5
|
s.description = "Includes various helper tools for Cuba."
|
6
6
|
s.authors = ["Cyril David"]
|
@@ -16,7 +16,7 @@ Gem::Specification.new do |s|
|
|
16
16
|
"test/*.*"
|
17
17
|
]
|
18
18
|
|
19
|
-
s.add_dependency "cuba", "3.1
|
19
|
+
s.add_dependency "cuba", "~> 3.1"
|
20
20
|
s.add_development_dependency "cutest"
|
21
|
-
s.add_development_dependency "
|
21
|
+
s.add_development_dependency "mote", "~> 1.0"
|
22
22
|
end
|
data/lib/cuba/mote.rb
CHANGED
@@ -11,7 +11,7 @@ class Cuba
|
|
11
11
|
end
|
12
12
|
|
13
13
|
def partial(template, locals = {})
|
14
|
-
mote(mote_path(template), locals.merge(this: self))
|
14
|
+
mote(mote_path(template), locals.merge(this: self), TOPLEVEL_BINDING)
|
15
15
|
end
|
16
16
|
|
17
17
|
def view(template, locals = {}, layout = settings[:mote][:layout])
|
data/test/mote.rb
CHANGED
@@ -36,6 +36,20 @@ Cuba.define do
|
|
36
36
|
on "abs_path" do
|
37
37
|
res.write view("./test/views/custom/abs_path.mote", title: "Absolute")
|
38
38
|
end
|
39
|
+
|
40
|
+
def foo
|
41
|
+
req.path
|
42
|
+
end
|
43
|
+
|
44
|
+
on "foo" do
|
45
|
+
on "right" do
|
46
|
+
res.write partial("foo-right")
|
47
|
+
end
|
48
|
+
|
49
|
+
on "wrong" do
|
50
|
+
res.write partial("foo-wrong")
|
51
|
+
end
|
52
|
+
end
|
39
53
|
end
|
40
54
|
|
41
55
|
test "view" do
|
@@ -79,3 +93,13 @@ test "use of absolute mote path for the layout" do
|
|
79
93
|
|
80
94
|
assert_response body, ["<title>Custom Layout: Hola</title>\n<h1>Home</h1>\n\n"]
|
81
95
|
end
|
96
|
+
|
97
|
+
test "attempting to use defined variables in cuba context is a problem" do
|
98
|
+
assert_raise NameError do
|
99
|
+
Cuba.call({ "PATH_INFO" => "/foo/wrong", "SCRIPT_NAME" => "" })
|
100
|
+
end
|
101
|
+
|
102
|
+
_, _, body = Cuba.call({ "PATH_INFO" => "/foo/right", "SCRIPT_NAME" => "" })
|
103
|
+
|
104
|
+
assert_response body, ["/foo/right\n"]
|
105
|
+
end
|
metadata
CHANGED
@@ -1,32 +1,32 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cuba-contrib
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.1.0
|
5
|
-
prerelease:
|
4
|
+
version: 3.1.0
|
5
|
+
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Cyril David
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-07-
|
12
|
+
date: 2012-07-24 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: cuba
|
16
16
|
requirement: !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
|
-
- -
|
19
|
+
- - ~>
|
20
20
|
- !ruby/object:Gem::Version
|
21
|
-
version: 3.1
|
21
|
+
version: '3.1'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
24
|
version_requirements: !ruby/object:Gem::Requirement
|
25
25
|
none: false
|
26
26
|
requirements:
|
27
|
-
- -
|
27
|
+
- - ~>
|
28
28
|
- !ruby/object:Gem::Version
|
29
|
-
version: 3.1
|
29
|
+
version: '3.1'
|
30
30
|
- !ruby/object:Gem::Dependency
|
31
31
|
name: cutest
|
32
32
|
requirement: !ruby/object:Gem::Requirement
|
@@ -44,21 +44,21 @@ dependencies:
|
|
44
44
|
- !ruby/object:Gem::Version
|
45
45
|
version: '0'
|
46
46
|
- !ruby/object:Gem::Dependency
|
47
|
-
name:
|
47
|
+
name: mote
|
48
48
|
requirement: !ruby/object:Gem::Requirement
|
49
49
|
none: false
|
50
50
|
requirements:
|
51
|
-
- -
|
51
|
+
- - ~>
|
52
52
|
- !ruby/object:Gem::Version
|
53
|
-
version: '0'
|
53
|
+
version: '1.0'
|
54
54
|
type: :development
|
55
55
|
prerelease: false
|
56
56
|
version_requirements: !ruby/object:Gem::Requirement
|
57
57
|
none: false
|
58
58
|
requirements:
|
59
|
-
- -
|
59
|
+
- - ~>
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: '0'
|
61
|
+
version: '1.0'
|
62
62
|
description: Includes various helper tools for Cuba.
|
63
63
|
email:
|
64
64
|
- me@cyrildavid.com
|
@@ -94,9 +94,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
94
94
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
95
95
|
none: false
|
96
96
|
requirements:
|
97
|
-
- - ! '
|
97
|
+
- - ! '>='
|
98
98
|
- !ruby/object:Gem::Version
|
99
|
-
version:
|
99
|
+
version: '0'
|
100
100
|
requirements: []
|
101
101
|
rubyforge_project:
|
102
102
|
rubygems_version: 1.8.23
|