kenji 0.3.1 → 0.4

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/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
+