junior 0.0.0 → 0.1.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/{README → README.md} +14 -5
- data/Rakefile +2 -2
- data/VERSION +1 -1
- data/junior.gemspec +10 -11
- data/lib/junior/application.rb +4 -25
- data/lib/junior/controller.rb +10 -3
- data/lib/junior/dispatcher.rb +10 -4
- data/lib/junior/router.rb +66 -23
- data/lib/junior.rb +1 -4
- metadata +7 -8
- data/lib/junior/request.rb +0 -12
data/{README → README.md}
RENAMED
@@ -1,12 +1,20 @@
|
|
1
|
-
|
1
|
+
Junior
|
2
|
+
======
|
2
3
|
|
3
4
|
An MVC Web Framework
|
4
5
|
|
5
|
-
|
6
|
+
Installation
|
7
|
+
------------
|
6
8
|
|
7
9
|
sudo gem install junior
|
8
10
|
|
9
|
-
|
11
|
+
Example App
|
12
|
+
-----------
|
13
|
+
|
14
|
+
http://github.com/eddanger/junior-app
|
15
|
+
|
16
|
+
Note on Patches/Pull Requests
|
17
|
+
-----------------------------
|
10
18
|
|
11
19
|
* Fork the project.
|
12
20
|
* Make your feature addition or bug fix.
|
@@ -16,6 +24,7 @@ sudo gem install junior
|
|
16
24
|
(if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)
|
17
25
|
* Send me a pull request. Bonus points for topic branches.
|
18
26
|
|
19
|
-
|
27
|
+
Copyright
|
28
|
+
---------
|
20
29
|
|
21
|
-
Copyright (c) 2010 Michael Wood. See LICENSE for details.
|
30
|
+
Copyright (c) 2010 Michael Wood. See LICENSE for details.
|
data/Rakefile
CHANGED
@@ -11,8 +11,8 @@ begin
|
|
11
11
|
gem.homepage = 'http://github.com/eddanger/junior'
|
12
12
|
gem.authors = ["Michael Wood"]
|
13
13
|
|
14
|
-
gem.add_dependency 'rack', "~> 1.0
|
15
|
-
gem.add_dependency '
|
14
|
+
gem.add_dependency 'rack', "~> 1.1.0"
|
15
|
+
gem.add_dependency 'usher', "~> 0.6.2"
|
16
16
|
gem.add_dependency 'tilt', "~> 0.4.0"
|
17
17
|
|
18
18
|
gem.add_development_dependency 'rspec', '~> 1.2.9'
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.1.0
|
data/junior.gemspec
CHANGED
@@ -5,21 +5,21 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{junior}
|
8
|
-
s.version = "0.
|
8
|
+
s.version = "0.1.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Michael Wood"]
|
12
|
-
s.date = %q{
|
12
|
+
s.date = %q{2010-01-05}
|
13
13
|
s.description = %q{A Mini MVC Web Framework for Ruby built on Rack and a lot of inspiration from Sinatra}
|
14
14
|
s.email = %q{mike@michaelwood.com}
|
15
15
|
s.extra_rdoc_files = [
|
16
16
|
"LICENSE",
|
17
|
-
"README"
|
17
|
+
"README.md"
|
18
18
|
]
|
19
19
|
s.files = [
|
20
20
|
".gitignore",
|
21
21
|
"LICENSE",
|
22
|
-
"README",
|
22
|
+
"README.md",
|
23
23
|
"Rakefile",
|
24
24
|
"VERSION",
|
25
25
|
"junior.gemspec",
|
@@ -28,7 +28,6 @@ Gem::Specification.new do |s|
|
|
28
28
|
"lib/junior/controller.rb",
|
29
29
|
"lib/junior/dispatcher.rb",
|
30
30
|
"lib/junior/helpers.rb",
|
31
|
-
"lib/junior/request.rb",
|
32
31
|
"lib/junior/router.rb",
|
33
32
|
"lib/junior/support.rb",
|
34
33
|
"spec/junior_spec.rb",
|
@@ -52,21 +51,21 @@ Gem::Specification.new do |s|
|
|
52
51
|
s.specification_version = 3
|
53
52
|
|
54
53
|
if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
|
55
|
-
s.add_runtime_dependency(%q<rack>, ["~> 1.0
|
56
|
-
s.add_runtime_dependency(%q<
|
54
|
+
s.add_runtime_dependency(%q<rack>, ["~> 1.1.0"])
|
55
|
+
s.add_runtime_dependency(%q<usher>, ["~> 0.6.2"])
|
57
56
|
s.add_runtime_dependency(%q<tilt>, ["~> 0.4.0"])
|
58
57
|
s.add_development_dependency(%q<rspec>, ["~> 1.2.9"])
|
59
58
|
s.add_development_dependency(%q<yard>, ["~> 0.5.2"])
|
60
59
|
else
|
61
|
-
s.add_dependency(%q<rack>, ["~> 1.0
|
62
|
-
s.add_dependency(%q<
|
60
|
+
s.add_dependency(%q<rack>, ["~> 1.1.0"])
|
61
|
+
s.add_dependency(%q<usher>, ["~> 0.6.2"])
|
63
62
|
s.add_dependency(%q<tilt>, ["~> 0.4.0"])
|
64
63
|
s.add_dependency(%q<rspec>, ["~> 1.2.9"])
|
65
64
|
s.add_dependency(%q<yard>, ["~> 0.5.2"])
|
66
65
|
end
|
67
66
|
else
|
68
|
-
s.add_dependency(%q<rack>, ["~> 1.0
|
69
|
-
s.add_dependency(%q<
|
67
|
+
s.add_dependency(%q<rack>, ["~> 1.1.0"])
|
68
|
+
s.add_dependency(%q<usher>, ["~> 0.6.2"])
|
70
69
|
s.add_dependency(%q<tilt>, ["~> 0.4.0"])
|
71
70
|
s.add_dependency(%q<rspec>, ["~> 1.2.9"])
|
72
71
|
s.add_dependency(%q<yard>, ["~> 0.5.2"])
|
data/lib/junior/application.rb
CHANGED
@@ -14,10 +14,11 @@ module Junior
|
|
14
14
|
|
15
15
|
def call!(env)
|
16
16
|
@env = env
|
17
|
-
|
18
|
-
@request = Junior::Request.new(env)
|
17
|
+
@request = Rack::Request.new(env)
|
19
18
|
@response = Rack::Response.new
|
20
19
|
|
20
|
+
#puts env.inspect
|
21
|
+
|
21
22
|
Dispatcher.dispatch!(self)
|
22
23
|
|
23
24
|
status, header, body = @response.finish
|
@@ -29,20 +30,14 @@ module Junior
|
|
29
30
|
|
30
31
|
def reset!
|
31
32
|
@middleware = []
|
32
|
-
@resources = []
|
33
|
-
@routes = []
|
34
33
|
@prototype = nil
|
35
34
|
end
|
36
35
|
|
37
|
-
def router
|
38
|
-
Router.router(self)
|
39
|
-
end
|
40
|
-
|
41
36
|
def prototype
|
42
37
|
@prototype ||= new
|
43
38
|
end
|
44
39
|
|
45
|
-
def new(*args, &
|
40
|
+
def new(*args, &block)
|
46
41
|
builder = Rack::Builder.new
|
47
42
|
|
48
43
|
middleware.each { |middleware, args, block| builder.use(middleware, *args, &block) }
|
@@ -67,26 +62,10 @@ module Junior
|
|
67
62
|
end
|
68
63
|
end
|
69
64
|
|
70
|
-
def resources
|
71
|
-
@resources || []
|
72
|
-
end
|
73
|
-
|
74
|
-
def routes
|
75
|
-
@routes || []
|
76
|
-
end
|
77
|
-
|
78
65
|
def use(middleware, *args, &block)
|
79
66
|
@middleware << [ middleware, args, block ]
|
80
67
|
end
|
81
68
|
|
82
|
-
def resource(resource)
|
83
|
-
@resources << resource
|
84
|
-
end
|
85
|
-
|
86
|
-
def route(path, to = {}, method = 'GET')
|
87
|
-
@routes << { :path => path, :to => to, :method => method }
|
88
|
-
end
|
89
|
-
|
90
69
|
def set(option, value=self)
|
91
70
|
if value.kind_of?(Proc)
|
92
71
|
metadef(option, &value)
|
data/lib/junior/controller.rb
CHANGED
@@ -15,14 +15,17 @@ module Junior
|
|
15
15
|
@resource_id = id
|
16
16
|
end
|
17
17
|
|
18
|
-
def render(path)
|
18
|
+
def render(path, *args)
|
19
|
+
|
20
|
+
layout_path = ( args.first && ( args.first[ :layout_path ] || args.first[ :layout_path ].nil? ) ) ? args.first[ :layout_path ] : self.class.layout_path
|
21
|
+
|
19
22
|
begin
|
20
23
|
template = Tilt.new(path)
|
21
24
|
|
22
25
|
output = template.render(self)
|
23
26
|
|
24
|
-
if
|
25
|
-
layout_template = Tilt.new(
|
27
|
+
if layout_path
|
28
|
+
layout_template = Tilt.new(layout_path)
|
26
29
|
output = layout_template.render(self) { output }
|
27
30
|
end
|
28
31
|
|
@@ -35,6 +38,10 @@ module Junior
|
|
35
38
|
output
|
36
39
|
end
|
37
40
|
|
41
|
+
def partial(path, *args)
|
42
|
+
render path, :layout_path => nil
|
43
|
+
end
|
44
|
+
|
38
45
|
class << self
|
39
46
|
|
40
47
|
attr_reader :layout_path
|
data/lib/junior/dispatcher.rb
CHANGED
@@ -14,16 +14,22 @@ module Junior
|
|
14
14
|
|
15
15
|
#puts app.env['rack.input'].read
|
16
16
|
|
17
|
-
controller = app.env[ '
|
18
|
-
|
19
|
-
|
17
|
+
controller = app.env[ 'usher.response' ].last.destination[ :controller ].to_s
|
18
|
+
|
19
|
+
if controller[ '/' ] # a nested route
|
20
|
+
controller = controller[(controller.rindex( '/' ) + 1)..controller.length]
|
21
|
+
puts controller
|
22
|
+
end
|
23
|
+
|
24
|
+
action = app.env[ 'usher.response' ].last.destination[ :action ].to_s
|
25
|
+
id = app.env[ 'usher.params' ][ :id ].to_s
|
20
26
|
|
21
27
|
controller_instance = controller.camelize.to_class.new(app, id)
|
22
28
|
|
23
29
|
if controller_instance.respond_to?(action)
|
24
30
|
controller_instance.send(action)
|
25
31
|
else
|
26
|
-
not_found('Not found')
|
32
|
+
controller_instance.not_found('Not found')
|
27
33
|
end
|
28
34
|
end
|
29
35
|
end
|
data/lib/junior/router.rb
CHANGED
@@ -2,33 +2,76 @@ module Junior
|
|
2
2
|
|
3
3
|
class Router
|
4
4
|
|
5
|
+
attr_reader :app, :router
|
6
|
+
|
7
|
+
def initialize(app, router)
|
8
|
+
@app, @router = app, router
|
9
|
+
end
|
10
|
+
|
11
|
+
def call(env)
|
12
|
+
@router.call(env)
|
13
|
+
@app.call(env)
|
14
|
+
end
|
15
|
+
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
|
20
|
+
module Junior
|
21
|
+
|
22
|
+
class Usher
|
23
|
+
|
24
|
+
attr_reader :router
|
25
|
+
|
26
|
+
def initialize
|
27
|
+
@router = ::Usher::Interface.for(:rack, nil, :use_destinations => false)
|
28
|
+
end
|
29
|
+
|
5
30
|
class << self
|
6
31
|
|
7
|
-
def
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
set.add_route app, { :path_info => %r{^/#{resource}/(?:<id>[^/]+)/edit(\.(?:<format>[a-z]+))?$}, :request_method => 'GET' }, { :controller => resource, :action => 'edit' }
|
14
|
-
set.add_route app, { :path_info => %r{^/#{resource}/(?:<id>[^/]+)/delete(\.(?:<format>[a-z]+))?$}, :request_method => 'GET' }, { :controller => resource, :action => 'delete' }
|
15
|
-
set.add_route app, { :path_info => %r{^/#{resource}/(?:<id>[^/]+)(\.(?:<format>[a-z]+))?$}, :request_method => 'GET' }, { :controller => resource, :action => 'show' }
|
16
|
-
set.add_route app, { :path_info => %r{^/#{resource}/(?:<id>[^/]+)(\.(?:<format>[a-z]+))?$}, :request_method => 'PUT' }, { :controller => resource, :action => 'update' }
|
17
|
-
set.add_route app, { :path_info => %r{^/#{resource}/(?:<id>[^/]+)(\.(?:<format>[a-z]+))?$}, :request_method => 'DELETE' }, { :controller => resource, :action => 'destroy' }
|
18
|
-
end
|
19
|
-
|
20
|
-
app.routes.each do |route|
|
21
|
-
set.add_route app, { :path_info => %r{^#{route[ :path ]}$}, :request_method => route[ :method ] }, route[ :to ]
|
22
|
-
end
|
23
|
-
|
24
|
-
# default
|
25
|
-
#set.add_route app, { :path_info => %r{^/$} }, { :controller => app.default_controller, :action => app.default_action }
|
26
|
-
#set.add_route app, { :path_info => %r{^/(?:<controller>[a-z0-9]+)(/(?:<action>[a-z0-9]+)(/(?:<id>[a-z0-9]+)(\.(?:<format>[a-z]+))?)?)?$} }, { :controller => app.default_controller, :action => app.default_action }
|
27
|
-
end
|
28
|
-
|
29
|
-
router
|
32
|
+
def routes( &block )
|
33
|
+
usher = self.new
|
34
|
+
|
35
|
+
usher.instance_eval( &block )
|
36
|
+
|
37
|
+
usher.router
|
30
38
|
end
|
39
|
+
end
|
40
|
+
|
41
|
+
def resources( resource, &block )
|
42
|
+
resource = "#{@parent_resource}/:#{@parent_resource}_id/#{resource}" if @parent_resource
|
31
43
|
|
44
|
+
self.router.get( "/#{resource}(.:format)" ).to( :controller => resource, :action => 'index' ).name( :"#{resource}_index" )
|
45
|
+
self.router.post( "/#{resource}(.:format)" ).to( :controller => resource, :action => 'create' ).name( :"#{resource}_create" )
|
46
|
+
self.router.get( "/#{resource}/new(.:format)" ).to( :controller => resource, :action => 'new' ).name( :"#{resource}_new" )
|
47
|
+
self.router.get( "/#{resource}/:id/edit(.:format)" ).to( :controller => resource, :action => 'edit' ).name( :"#{resource}_edit" )
|
48
|
+
self.router.get( "/#{resource}/:id/delete(.:format)" ).to( :controller => resource, :action => 'delete' ).name( :"#{resource}_delete" )
|
49
|
+
self.router.get( "/#{resource}/:id(.:format)" ).to( :controller => resource, :action => 'show' ).name( :"#{resource}_show" )
|
50
|
+
self.router.put( "/#{resource}/:id(.:format)" ).to( :controller => resource, :action => 'update' ).name( :"#{resource}_update" )
|
51
|
+
self.router.delete( "/#{resource}/:id(.:format)" ).to( :controller => resource, :action => 'destroy' ).name( :"#{resource}_destroy" )
|
52
|
+
|
53
|
+
if block_given?
|
54
|
+
@parent_resource = resource
|
55
|
+
block.call
|
56
|
+
end
|
57
|
+
|
58
|
+
@parent_resource = nil
|
59
|
+
end
|
60
|
+
|
61
|
+
def get( path, route )
|
62
|
+
self.router.get( path ).to( route )
|
63
|
+
end
|
64
|
+
|
65
|
+
def put( path, route )
|
66
|
+
self.router.put( path ).to( route )
|
67
|
+
end
|
68
|
+
|
69
|
+
def post( path, route )
|
70
|
+
self.router.post( path ).to( route )
|
71
|
+
end
|
72
|
+
|
73
|
+
def delete( path, route )
|
74
|
+
self.router.delete( path ).to( route )
|
32
75
|
end
|
33
76
|
|
34
77
|
end
|
data/lib/junior.rb
CHANGED
@@ -1,14 +1,11 @@
|
|
1
1
|
module Junior
|
2
|
-
VERSION = '0.0.0'
|
3
|
-
|
4
2
|
require 'rack'
|
5
3
|
require 'rack/builder'
|
6
|
-
require '
|
4
|
+
require 'usher'
|
7
5
|
require 'tilt'
|
8
6
|
|
9
7
|
require 'junior/helpers'
|
10
8
|
require 'junior/router'
|
11
|
-
require 'junior/request'
|
12
9
|
require 'junior/dispatcher'
|
13
10
|
require 'junior/controller'
|
14
11
|
require 'junior/application'
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: junior
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Michael Wood
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date:
|
12
|
+
date: 2010-01-05 00:00:00 -08:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -20,17 +20,17 @@ dependencies:
|
|
20
20
|
requirements:
|
21
21
|
- - ~>
|
22
22
|
- !ruby/object:Gem::Version
|
23
|
-
version: 1.0
|
23
|
+
version: 1.1.0
|
24
24
|
version:
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
|
-
name:
|
26
|
+
name: usher
|
27
27
|
type: :runtime
|
28
28
|
version_requirement:
|
29
29
|
version_requirements: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - ~>
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: 0.
|
33
|
+
version: 0.6.2
|
34
34
|
version:
|
35
35
|
- !ruby/object:Gem::Dependency
|
36
36
|
name: tilt
|
@@ -70,11 +70,11 @@ extensions: []
|
|
70
70
|
|
71
71
|
extra_rdoc_files:
|
72
72
|
- LICENSE
|
73
|
-
- README
|
73
|
+
- README.md
|
74
74
|
files:
|
75
75
|
- .gitignore
|
76
76
|
- LICENSE
|
77
|
-
- README
|
77
|
+
- README.md
|
78
78
|
- Rakefile
|
79
79
|
- VERSION
|
80
80
|
- junior.gemspec
|
@@ -83,7 +83,6 @@ files:
|
|
83
83
|
- lib/junior/controller.rb
|
84
84
|
- lib/junior/dispatcher.rb
|
85
85
|
- lib/junior/helpers.rb
|
86
|
-
- lib/junior/request.rb
|
87
86
|
- lib/junior/router.rb
|
88
87
|
- lib/junior/support.rb
|
89
88
|
- spec/junior_spec.rb
|