happy 0.1.0.pre22 → 0.1.0.pre23
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/example/config.ru +10 -10
- data/lib/happy/controller/routing.rb +3 -3
- data/lib/happy/extras/resources.rb +8 -8
- data/lib/happy/version.rb +1 -1
- data/spec/controller/actions_spec.rb +12 -12
- data/spec/controller/cascadable_spec.rb +2 -2
- data/spec/controller/routing_spec.rb +15 -13
- data/spec/controller_spec.rb +12 -12
- data/spec/spec_helper.rb +0 -4
- metadata +20 -20
data/example/config.ru
CHANGED
@@ -17,7 +17,7 @@ class TestApp < Happy::Controller
|
|
17
17
|
#
|
18
18
|
# This method can be as simple or complex as you like. In this example
|
19
19
|
# application, it wraps around a couple of annotated Happy examples.
|
20
|
-
# Usually, you'd use the #path
|
20
|
+
# Usually, you'd use the #path method to specify code to be executed if
|
21
21
|
# a certain path was requested; in this app, we're using a custom #example
|
22
22
|
# method, that does the same thing but also records the example in a hash
|
23
23
|
# so we can generated a "table of contents" in index.erb.
|
@@ -38,8 +38,8 @@ class TestApp < Happy::Controller
|
|
38
38
|
end
|
39
39
|
|
40
40
|
example 'Path parameters' do
|
41
|
-
|
42
|
-
|
41
|
+
on 'hello' do
|
42
|
+
on :name do
|
43
43
|
"Hello, #{params['name']}!"
|
44
44
|
end
|
45
45
|
end
|
@@ -48,7 +48,7 @@ class TestApp < Happy::Controller
|
|
48
48
|
end
|
49
49
|
|
50
50
|
example 'Inline path parameters' do
|
51
|
-
|
51
|
+
on 'hello-:name' do
|
52
52
|
"Hello, #{params['name']}!"
|
53
53
|
end
|
54
54
|
|
@@ -59,7 +59,7 @@ class TestApp < Happy::Controller
|
|
59
59
|
# set up permissions ;-)
|
60
60
|
can.dance!
|
61
61
|
|
62
|
-
|
62
|
+
on 'dance' do
|
63
63
|
if can.dance?
|
64
64
|
"You can dance."
|
65
65
|
else
|
@@ -71,18 +71,18 @@ class TestApp < Happy::Controller
|
|
71
71
|
end
|
72
72
|
|
73
73
|
example 'Layouts' do
|
74
|
-
|
74
|
+
on 'with-layout' do
|
75
75
|
layout 'layout.erb'
|
76
76
|
|
77
|
-
|
77
|
+
on 'changed-my-mind' do
|
78
78
|
layout false
|
79
79
|
"This should render without a layout."
|
80
80
|
end
|
81
81
|
|
82
|
-
"This should render with a layout."
|
82
|
+
"This should render with a layout. But #{link_to 'this', current_url('changed-my-mind')} shouldn't!"
|
83
83
|
end
|
84
84
|
|
85
|
-
"This should render without a layout."
|
85
|
+
"This should render without a layout. But #{link_to 'this', current_url('with-layout')} should."
|
86
86
|
end
|
87
87
|
|
88
88
|
example 'Invoking other controllers' do
|
@@ -120,7 +120,7 @@ class TestApp < Happy::Controller
|
|
120
120
|
examples[name] = path_name
|
121
121
|
|
122
122
|
# Create a path containing the example's code block
|
123
|
-
|
123
|
+
on path_name, &blk
|
124
124
|
end
|
125
125
|
end
|
126
126
|
|
@@ -7,7 +7,7 @@ module Happy
|
|
7
7
|
Regexp.compile('^'+path.gsub(/\)/, ')?').gsub(/\//, '\/').gsub(/\./, '\.').gsub(/:(\w+)/, '(.+)')+'$')
|
8
8
|
end
|
9
9
|
|
10
|
-
def
|
10
|
+
def on(*args, &blk)
|
11
11
|
options = (args.pop if args.last.is_a?(Hash)) || {}
|
12
12
|
args = [nil] if args.empty?
|
13
13
|
|
@@ -40,9 +40,9 @@ module Happy
|
|
40
40
|
end
|
41
41
|
|
42
42
|
[:get, :post, :put, :delete].each do |method|
|
43
|
-
define_method("
|
43
|
+
define_method("on_%s" % method) do |*args, &blk|
|
44
44
|
args.last.is_a?(Hash) ? args.last.merge(:method => method) : args.push(:method => method)
|
45
|
-
|
45
|
+
on(*args, &blk)
|
46
46
|
end
|
47
47
|
end
|
48
48
|
end
|
@@ -95,17 +95,17 @@ module Happy
|
|
95
95
|
options[:singular_name] ||= options[:class].to_s.tableize.singularize
|
96
96
|
options[:plural_name] ||= options[:class].to_s.tableize.pluralize
|
97
97
|
|
98
|
-
path
|
99
|
-
get
|
98
|
+
path options[:plural_name] do
|
99
|
+
get('new') { do_new }
|
100
100
|
|
101
|
-
path
|
102
|
-
get
|
103
|
-
post
|
104
|
-
get
|
101
|
+
path :id do
|
102
|
+
get { do_show }
|
103
|
+
post { do_update }
|
104
|
+
get('edit') { do_edit }
|
105
105
|
end
|
106
106
|
|
107
|
-
post
|
108
|
-
get
|
107
|
+
post { do_create }
|
108
|
+
get { do_index }
|
109
109
|
end
|
110
110
|
end
|
111
111
|
end
|
data/lib/happy/version.rb
CHANGED
@@ -6,11 +6,11 @@ module Happy
|
|
6
6
|
|
7
7
|
describe '#serve!' do
|
8
8
|
def app
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
9
|
+
Happy.route do
|
10
|
+
on('simple') { serve! "Simple response" }
|
11
|
+
on('with_headers') { serve! "body { color: red }", :content_type => 'text/css' }
|
12
|
+
on('with_status') { serve! "Not Allowed", :status => 401 }
|
13
|
+
on('with_layout') { serve! "content", :layout => 'layout.erb' }
|
14
14
|
end
|
15
15
|
end
|
16
16
|
|
@@ -45,7 +45,7 @@ module Happy
|
|
45
45
|
def app
|
46
46
|
Happy.route do
|
47
47
|
serve! "This should not render"
|
48
|
-
|
48
|
+
on 'test' do
|
49
49
|
serve! "But this should render"
|
50
50
|
end
|
51
51
|
end
|
@@ -58,7 +58,7 @@ module Happy
|
|
58
58
|
describe '#redirect!' do
|
59
59
|
it "triggers a redirection to the specified URL" do
|
60
60
|
def app
|
61
|
-
|
61
|
+
Happy.route { redirect! 'http://www.test.com' }
|
62
62
|
end
|
63
63
|
|
64
64
|
get '/'
|
@@ -68,7 +68,7 @@ module Happy
|
|
68
68
|
|
69
69
|
it "sets the provided status code" do
|
70
70
|
def app
|
71
|
-
|
71
|
+
Happy.route { redirect! 'http://www.test.com', 301 }
|
72
72
|
end
|
73
73
|
|
74
74
|
get '/'
|
@@ -80,7 +80,7 @@ module Happy
|
|
80
80
|
Happy.route do
|
81
81
|
redirect! "http://mans.de"
|
82
82
|
|
83
|
-
|
83
|
+
on 'test' do
|
84
84
|
redirect! "http://schnitzelpress.org"
|
85
85
|
end
|
86
86
|
end
|
@@ -101,7 +101,7 @@ module Happy
|
|
101
101
|
end
|
102
102
|
|
103
103
|
def app
|
104
|
-
|
104
|
+
Happy.route { run InnerController }
|
105
105
|
end
|
106
106
|
|
107
107
|
response_for { get '/' }.body.should == 'awesome!'
|
@@ -115,7 +115,7 @@ module Happy
|
|
115
115
|
end
|
116
116
|
|
117
117
|
def app
|
118
|
-
|
118
|
+
Happy.route { run SomeRackApp }
|
119
119
|
end
|
120
120
|
|
121
121
|
response_for { get '/' }.body.should == 'racksome!'
|
@@ -129,7 +129,7 @@ module Happy
|
|
129
129
|
end
|
130
130
|
|
131
131
|
def app
|
132
|
-
|
132
|
+
Happy.route { run SomeClass }
|
133
133
|
end
|
134
134
|
|
135
135
|
response_for { get '/' }.body.should == 'stringsome!'
|
@@ -5,17 +5,17 @@ module Happy
|
|
5
5
|
describe '#path' do
|
6
6
|
subject do
|
7
7
|
Happy.route do
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
8
|
+
on('foo') { serve! 'bar' }
|
9
|
+
on('one', 'two') { serve! 'onetwo' }
|
10
|
+
on('hello') do
|
11
|
+
on(:name) { serve! "Hello #{params['name']}" }
|
12
12
|
serve! "Please provide a name."
|
13
13
|
end
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
14
|
+
on('number-:num') { serve! "num = #{params['num']}" }
|
15
|
+
on('return-value') { 'moo?' }
|
16
|
+
on('resource') do
|
17
|
+
on_get { 'GET resource' }
|
18
|
+
on_post { 'POST resource' }
|
19
19
|
end
|
20
20
|
serve! "root"
|
21
21
|
end
|
@@ -62,12 +62,14 @@ module Happy
|
|
62
62
|
end
|
63
63
|
|
64
64
|
%w(get post put delete).each do |what|
|
65
|
-
|
65
|
+
method_name = "on_%s" % what
|
66
|
+
|
67
|
+
describe "#%s" % method_name do
|
66
68
|
subject { Controller.new }
|
67
69
|
|
68
|
-
it "merely invokes #path
|
69
|
-
subject.should_receive(:
|
70
|
-
subject.send(
|
70
|
+
it "merely invokes #path with the :method => :#{what} option" do
|
71
|
+
subject.should_receive(:on).with('path', :method => what.to_sym)
|
72
|
+
subject.send(method_name, 'path')
|
71
73
|
end
|
72
74
|
end
|
73
75
|
end
|
data/spec/controller_spec.rb
CHANGED
@@ -21,9 +21,9 @@ module Happy
|
|
21
21
|
describe '#current_url' do
|
22
22
|
it "returns the current URL" do
|
23
23
|
def app
|
24
|
-
|
25
|
-
|
26
|
-
|
24
|
+
Happy.route do
|
25
|
+
on 'foo' do
|
26
|
+
on 'bar' do
|
27
27
|
"My URL is #{current_url}"
|
28
28
|
end
|
29
29
|
|
@@ -41,8 +41,8 @@ module Happy
|
|
41
41
|
|
42
42
|
it "appends extra paths to the URL if provided" do
|
43
43
|
def app
|
44
|
-
|
45
|
-
|
44
|
+
Happy.route do
|
45
|
+
on 'foo' do
|
46
46
|
current_url('bar', 'moo')
|
47
47
|
end
|
48
48
|
end
|
@@ -55,16 +55,16 @@ module Happy
|
|
55
55
|
describe '#root_url' do
|
56
56
|
it "returns the controller's root URL" do
|
57
57
|
def app
|
58
|
-
root_url_printer =
|
59
|
-
|
58
|
+
root_url_printer = Happy.route do
|
59
|
+
on 'bar' do
|
60
60
|
"My root URL is still #{root_url}"
|
61
61
|
end
|
62
62
|
|
63
63
|
"My root URL is #{root_url}"
|
64
64
|
end
|
65
65
|
|
66
|
-
|
67
|
-
|
66
|
+
Happy.route do
|
67
|
+
on 'foo' do
|
68
68
|
run root_url_printer
|
69
69
|
end
|
70
70
|
|
@@ -79,12 +79,12 @@ module Happy
|
|
79
79
|
|
80
80
|
it "appends extra paths to the root URL if provided" do
|
81
81
|
def app
|
82
|
-
some_controller =
|
82
|
+
some_controller = Happy.route do
|
83
83
|
root_url('bar')
|
84
84
|
end
|
85
85
|
|
86
|
-
|
87
|
-
|
86
|
+
Happy.route do
|
87
|
+
on 'foo' do
|
88
88
|
run some_controller
|
89
89
|
end
|
90
90
|
end
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: happy
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.0.
|
4
|
+
version: 0.1.0.pre23
|
5
5
|
prerelease: 6
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-06-
|
12
|
+
date: 2012-06-15 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: activesupport
|
16
|
-
requirement: &
|
16
|
+
requirement: &70202609576440 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '3.1'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70202609576440
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: rack
|
27
|
-
requirement: &
|
27
|
+
requirement: &70202609575940 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ~>
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '1.4'
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70202609575940
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: happy-helpers
|
38
|
-
requirement: &
|
38
|
+
requirement: &70202609575480 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ~>
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: 0.1.0.pre11
|
44
44
|
type: :runtime
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *70202609575480
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: allowance
|
49
|
-
requirement: &
|
49
|
+
requirement: &70202609575020 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ! '>='
|
@@ -54,10 +54,10 @@ dependencies:
|
|
54
54
|
version: 0.1.1
|
55
55
|
type: :runtime
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *70202609575020
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: rake
|
60
|
-
requirement: &
|
60
|
+
requirement: &70202609574640 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ! '>='
|
@@ -65,10 +65,10 @@ dependencies:
|
|
65
65
|
version: '0'
|
66
66
|
type: :development
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *70202609574640
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: rspec
|
71
|
-
requirement: &
|
71
|
+
requirement: &70202475775160 !ruby/object:Gem::Requirement
|
72
72
|
none: false
|
73
73
|
requirements:
|
74
74
|
- - ~>
|
@@ -76,10 +76,10 @@ dependencies:
|
|
76
76
|
version: '2.8'
|
77
77
|
type: :development
|
78
78
|
prerelease: false
|
79
|
-
version_requirements: *
|
79
|
+
version_requirements: *70202475775160
|
80
80
|
- !ruby/object:Gem::Dependency
|
81
81
|
name: rspec-html-matchers
|
82
|
-
requirement: &
|
82
|
+
requirement: &70202475774740 !ruby/object:Gem::Requirement
|
83
83
|
none: false
|
84
84
|
requirements:
|
85
85
|
- - ! '>='
|
@@ -87,10 +87,10 @@ dependencies:
|
|
87
87
|
version: '0'
|
88
88
|
type: :development
|
89
89
|
prerelease: false
|
90
|
-
version_requirements: *
|
90
|
+
version_requirements: *70202475774740
|
91
91
|
- !ruby/object:Gem::Dependency
|
92
92
|
name: rack-test
|
93
|
-
requirement: &
|
93
|
+
requirement: &70202475774280 !ruby/object:Gem::Requirement
|
94
94
|
none: false
|
95
95
|
requirements:
|
96
96
|
- - ! '>='
|
@@ -98,10 +98,10 @@ dependencies:
|
|
98
98
|
version: '0'
|
99
99
|
type: :development
|
100
100
|
prerelease: false
|
101
|
-
version_requirements: *
|
101
|
+
version_requirements: *70202475774280
|
102
102
|
- !ruby/object:Gem::Dependency
|
103
103
|
name: watchr
|
104
|
-
requirement: &
|
104
|
+
requirement: &70202475773860 !ruby/object:Gem::Requirement
|
105
105
|
none: false
|
106
106
|
requirements:
|
107
107
|
- - ! '>='
|
@@ -109,7 +109,7 @@ dependencies:
|
|
109
109
|
version: '0'
|
110
110
|
type: :development
|
111
111
|
prerelease: false
|
112
|
-
version_requirements: *
|
112
|
+
version_requirements: *70202475773860
|
113
113
|
description: A happy little toolkit for writing web applications.
|
114
114
|
email:
|
115
115
|
- hendrik@mans.de
|