kenji 0.3.1 → 0.4

Sign up to get free protection for your applications and to get access to all the features.
data/bin/kenji-init CHANGED
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- path = '.' << '/' << (ARGV.first || '.')
3
+ path = File.expand_path('.' << '/' << (ARGV.first || '.'))
4
4
  app_name = File.basename(path)
5
5
 
6
6
  Dir.mkdir(path) unless File.directory?(path)
data/inited/.gitignore CHANGED
@@ -1,2 +1 @@
1
1
  tmp
2
- Gemfile.lock
@@ -76,24 +76,35 @@ module Kenji
76
76
  segments = segments.drop(1) if segments.first == '' # discard leading /'s empty segment
77
77
  node = self.class.routes[method]
78
78
  variables = []
79
+ searching = true
79
80
  segments.each do |segment| # traverse tree to find
80
- if node[segment.to_sym]
81
+ if searching && node[segment.to_sym]
81
82
  node = node[segment.to_sym] # attempt to move down to the plain text segment
82
- else
83
+ elsif searching && node[:':']
83
84
  node = node[:':'] # attempt to find a variable segment
84
85
  variables << segment # either we've found a variable, or the `unless` below will trigger
86
+ else
87
+ variables << segment # dump the remaining segments if we cannot drill down further
88
+ searching = false
85
89
  end
86
- break unless node # break if as an instance method nil, fallback below
87
90
  end
88
91
  if node && action = node[:@action] # the block is stored in the @action leaf
89
- return action.bind(self).call(*variables)
92
+ begin
93
+ return action.bind(self).call(*variables)
94
+ rescue ArgumentError # assuming argument error means route not defined
95
+ return attempt_fallback(path) # TODO: might want to check arity instead
96
+ end
90
97
  else # or, fallback if necessary store the block for each method
91
- if respond_to? :fallback
92
- if self.class.instance_method(:fallback).arity == 1
93
- return fallback(path)
94
- else
95
- return fallback
96
- end
98
+ return attempt_fallback(path)
99
+ end
100
+ end
101
+
102
+ def attempt_fallback(path)
103
+ if respond_to? :fallback
104
+ if self.class.instance_method(:fallback).arity == 1
105
+ return fallback(path)
106
+ else
107
+ return fallback
97
108
  end
98
109
  end
99
110
  end
data/lib/kenji/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
 
2
2
  module Kenji
3
- VERSION = '0.3.1'
3
+ VERSION = '0.4'
4
4
  end
5
5
 
data/lib/kenji.rb CHANGED
@@ -37,6 +37,9 @@ module Kenji
37
37
  out = controller.call(@env['REQUEST_METHOD'].downcase.to_sym, '/'+segments.join('/')).to_json
38
38
  rescue KenjiRespondControlFlowInterrupt => e
39
39
  out = e.response
40
+ rescue Exception => e
41
+ p e, e.backtrace # log exceptions
42
+ raise e
40
43
  end
41
44
  break
42
45
  end
metadata CHANGED
@@ -1,46 +1,57 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: kenji
3
- version: !ruby/object:Gem::Version
4
- version: 0.3.1
5
- prerelease:
3
+ version: !ruby/object:Gem::Version
4
+ prerelease: false
5
+ segments:
6
+ - 0
7
+ - 4
8
+ version: "0.4"
6
9
  platform: ruby
7
- authors:
10
+ authors:
8
11
  - Kenneth Ballenegger
9
12
  autorequire:
10
13
  bindir: bin
11
14
  cert_chain: []
12
- date: 2012-04-05 00:00:00.000000000Z
13
- dependencies:
14
- - !ruby/object:Gem::Dependency
15
+
16
+ date: 2012-04-05 00:00:00 -07:00
17
+ default_executable:
18
+ dependencies:
19
+ - !ruby/object:Gem::Dependency
15
20
  name: json
16
- requirement: &70245025914120 !ruby/object:Gem::Requirement
21
+ prerelease: false
22
+ requirement: &id001 !ruby/object:Gem::Requirement
17
23
  none: false
18
- requirements:
19
- - - ! '>='
20
- - !ruby/object:Gem::Version
21
- version: '0'
24
+ requirements:
25
+ - - ">="
26
+ - !ruby/object:Gem::Version
27
+ segments:
28
+ - 0
29
+ version: "0"
22
30
  type: :runtime
23
- prerelease: false
24
- version_requirements: *70245025914120
25
- - !ruby/object:Gem::Dependency
31
+ version_requirements: *id001
32
+ - !ruby/object:Gem::Dependency
26
33
  name: rack
27
- requirement: &70245025913560 !ruby/object:Gem::Requirement
34
+ prerelease: false
35
+ requirement: &id002 !ruby/object:Gem::Requirement
28
36
  none: false
29
- requirements:
30
- - - ! '>='
31
- - !ruby/object:Gem::Version
32
- version: '0'
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ segments:
41
+ - 0
42
+ version: "0"
33
43
  type: :runtime
34
- prerelease: false
35
- version_requirements: *70245025913560
44
+ version_requirements: *id002
36
45
  description: A lightweight Ruby web framework.
37
- email:
46
+ email:
38
47
  - kenneth@ballenegger.com
39
- executables:
48
+ executables:
40
49
  - kenji-init
41
50
  extensions: []
51
+
42
52
  extra_rdoc_files: []
43
- files:
53
+
54
+ files:
44
55
  - .gitignore
45
56
  - Gemfile
46
57
  - LICENSE
@@ -66,29 +77,37 @@ files:
66
77
  - lib/kenji/controller.rb
67
78
  - lib/kenji/string_extensions.rb
68
79
  - lib/kenji/version.rb
80
+ has_rdoc: true
69
81
  homepage: https://github.com/kballenegger/kenji
70
82
  licenses: []
83
+
71
84
  post_install_message:
72
85
  rdoc_options: []
73
- require_paths:
86
+
87
+ require_paths:
74
88
  - lib
75
- required_ruby_version: !ruby/object:Gem::Requirement
89
+ required_ruby_version: !ruby/object:Gem::Requirement
76
90
  none: false
77
- requirements:
78
- - - ! '>='
79
- - !ruby/object:Gem::Version
80
- version: '0'
81
- required_rubygems_version: !ruby/object:Gem::Requirement
91
+ requirements:
92
+ - - ">="
93
+ - !ruby/object:Gem::Version
94
+ segments:
95
+ - 0
96
+ version: "0"
97
+ required_rubygems_version: !ruby/object:Gem::Requirement
82
98
  none: false
83
- requirements:
84
- - - ! '>='
85
- - !ruby/object:Gem::Version
86
- version: '0'
99
+ requirements:
100
+ - - ">="
101
+ - !ruby/object:Gem::Version
102
+ segments:
103
+ - 0
104
+ version: "0"
87
105
  requirements: []
106
+
88
107
  rubyforge_project:
89
- rubygems_version: 1.8.10
108
+ rubygems_version: 1.3.7
90
109
  signing_key:
91
110
  specification_version: 3
92
111
  summary: Kenji
93
112
  test_files: []
94
- has_rdoc:
113
+