keight 0.2.0 → 0.3.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.
Files changed (39) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGES.md +237 -0
  3. data/README.md +285 -81
  4. data/Rakefile +27 -1
  5. data/bench/benchmarker.rb +2 -2
  6. data/bin/k8rb +112 -305
  7. data/keight.gemspec +4 -6
  8. data/lib/keight.rb +860 -822
  9. data/test/keight_test.rb +1007 -933
  10. data/test/oktest.rb +2 -2
  11. metadata +4 -68
  12. data/CHANGES.txt +0 -64
  13. data/lib/keight/skeleton/.gitignore +0 -10
  14. data/lib/keight/skeleton/README.txt +0 -13
  15. data/lib/keight/skeleton/app/action.rb +0 -106
  16. data/lib/keight/skeleton/app/api/hello.rb +0 -39
  17. data/lib/keight/skeleton/app/form/.keep +0 -0
  18. data/lib/keight/skeleton/app/helper/.keep +0 -0
  19. data/lib/keight/skeleton/app/model.rb +0 -144
  20. data/lib/keight/skeleton/app/model/.keep +0 -0
  21. data/lib/keight/skeleton/app/page/welcome.rb +0 -17
  22. data/lib/keight/skeleton/app/template/_layout.html.eruby +0 -56
  23. data/lib/keight/skeleton/app/template/welcome.html.eruby +0 -6
  24. data/lib/keight/skeleton/app/usecase/.keep +0 -0
  25. data/lib/keight/skeleton/config.rb +0 -46
  26. data/lib/keight/skeleton/config.ru +0 -6
  27. data/lib/keight/skeleton/config/app.rb +0 -29
  28. data/lib/keight/skeleton/config/app_dev.rb +0 -8
  29. data/lib/keight/skeleton/config/app_prod.rb +0 -7
  30. data/lib/keight/skeleton/config/app_stg.rb +0 -5
  31. data/lib/keight/skeleton/config/app_test.rb +0 -8
  32. data/lib/keight/skeleton/config/server_puma.rb +0 -22
  33. data/lib/keight/skeleton/config/server_unicorn.rb +0 -21
  34. data/lib/keight/skeleton/config/urlpath_mapping.rb +0 -16
  35. data/lib/keight/skeleton/index.txt +0 -39
  36. data/lib/keight/skeleton/main.rb +0 -22
  37. data/lib/keight/skeleton/static/lib/.keep +0 -0
  38. data/lib/keight/skeleton/test/api/hello_test.rb +0 -27
  39. data/lib/keight/skeleton/test/test_helper.rb +0 -9
@@ -1,5 +1,5 @@
1
1
  ###
2
- ### $Release: 0.2.0 $
2
+ ### $Release: 0.3.0 $
3
3
  ### $Copyright: copyright(c) 2014-2016 kuwata-lab.com all rights reserved $
4
4
  ### $License: MIT License $
5
5
  ###
@@ -16,7 +16,7 @@ end
16
16
  module Oktest
17
17
 
18
18
 
19
- VERSION = '$Release: 0.2.0 $'.split(/ /)[1]
19
+ VERSION = '$Release: 0.3.0 $'.split(/ /)[1]
20
20
 
21
21
 
22
22
  class SkipException < Exception
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: keight
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - makoto kuwata
@@ -9,42 +9,8 @@ autorequire:
9
9
  bindir:
10
10
  - bin
11
11
  cert_chain: []
12
- date: 2016-01-05 00:00:00.000000000 Z
12
+ date: 2016-10-13 00:00:00.000000000 Z
13
13
  dependencies:
14
- - !ruby/object:Gem::Dependency
15
- name: rack
16
- requirement: !ruby/object:Gem::Requirement
17
- requirements:
18
- - - "~>"
19
- - !ruby/object:Gem::Version
20
- version: '1.6'
21
- type: :runtime
22
- prerelease: false
23
- version_requirements: !ruby/object:Gem::Requirement
24
- requirements:
25
- - - "~>"
26
- - !ruby/object:Gem::Version
27
- version: '1.6'
28
- - !ruby/object:Gem::Dependency
29
- name: baby_erubis
30
- requirement: !ruby/object:Gem::Requirement
31
- requirements:
32
- - - "~>"
33
- - !ruby/object:Gem::Version
34
- version: '2.1'
35
- - - ">="
36
- - !ruby/object:Gem::Version
37
- version: 2.1.1
38
- type: :runtime
39
- prerelease: false
40
- version_requirements: !ruby/object:Gem::Requirement
41
- requirements:
42
- - - "~>"
43
- - !ruby/object:Gem::Version
44
- version: '2.1'
45
- - - ">="
46
- - !ruby/object:Gem::Version
47
- version: 2.1.1
48
14
  - !ruby/object:Gem::Dependency
49
15
  name: rack-test_app
50
16
  requirement: !ruby/object:Gem::Requirement
@@ -76,7 +42,7 @@ executables:
76
42
  extensions: []
77
43
  extra_rdoc_files: []
78
44
  files:
79
- - CHANGES.txt
45
+ - CHANGES.md
80
46
  - MIT-LICENSE
81
47
  - README.md
82
48
  - Rakefile
@@ -85,36 +51,6 @@ files:
85
51
  - bin/k8rb
86
52
  - keight.gemspec
87
53
  - lib/keight.rb
88
- - lib/keight/skeleton/.gitignore
89
- - lib/keight/skeleton/README.txt
90
- - lib/keight/skeleton/app/action.rb
91
- - lib/keight/skeleton/app/api/hello.rb
92
- - lib/keight/skeleton/app/form/.keep
93
- - lib/keight/skeleton/app/helper/.keep
94
- - lib/keight/skeleton/app/model.rb
95
- - lib/keight/skeleton/app/model/.keep
96
- - lib/keight/skeleton/app/page/welcome.rb
97
- - lib/keight/skeleton/app/template/_layout.html.eruby
98
- - lib/keight/skeleton/app/template/welcome.html.eruby
99
- - lib/keight/skeleton/app/usecase/.keep
100
- - lib/keight/skeleton/config.rb
101
- - lib/keight/skeleton/config.ru
102
- - lib/keight/skeleton/config/app.rb
103
- - lib/keight/skeleton/config/app_dev.private
104
- - lib/keight/skeleton/config/app_dev.rb
105
- - lib/keight/skeleton/config/app_prod.rb
106
- - lib/keight/skeleton/config/app_stg.rb
107
- - lib/keight/skeleton/config/app_test.private
108
- - lib/keight/skeleton/config/app_test.rb
109
- - lib/keight/skeleton/config/server_puma.rb
110
- - lib/keight/skeleton/config/server_unicorn.rb
111
- - lib/keight/skeleton/config/urlpath_mapping.rb
112
- - lib/keight/skeleton/index.txt
113
- - lib/keight/skeleton/main.rb
114
- - lib/keight/skeleton/static/lib/.keep
115
- - lib/keight/skeleton/test/api/hello_test.rb
116
- - lib/keight/skeleton/test/test_helper.rb
117
- - lib/keight/skeleton/tmp/upload/.keep
118
54
  - test/data/example1.jpg
119
55
  - test/data/example1.png
120
56
  - test/data/multipart.form
@@ -124,7 +60,7 @@ files:
124
60
  - test/oktest.rb
125
61
  homepage: https://github.com/kwatch/keight/tree/ruby
126
62
  licenses:
127
- - MIT Lisense
63
+ - MIT
128
64
  metadata: {}
129
65
  post_install_message:
130
66
  rdoc_options: []
@@ -1,64 +0,0 @@
1
- Changes
2
- =======
3
-
4
-
5
- Release 0.2.0 (2016-01-06)
6
- --------------------------
7
-
8
- * [change] `K8::RackApplication#mount()` is removed.
9
- Use `K8::RackApplication.new([...])` instead.
10
-
11
- * [change] `k8rb init` is renamed to `k8rb project`.
12
-
13
- $ k8rb project myapp1
14
- $ cd myapp1
15
-
16
- * [enhance] Auto redirection support.
17
- For example, `GET /books` is defined and `GET /books/` is requested,
18
- then it will be redirected to `GET /books`.
19
-
20
- * [enhance] Performance improved for variable urlpath.
21
-
22
- * [enhance] Implement urlpath helpers.
23
-
24
- p BookAPI[:do_update].method #=> :PUT
25
- p BookAPI[:do_update].urlpath(123) #=> '/api/books/123'
26
- p BookAPI[:do_update].form_action_attr(123) #=> '/api/books/123?_method=PUT'
27
-
28
- * [change] `k8rb mapping` now prints output in text format, not YAML format.
29
-
30
- * [enhance] `k8rb mapping` supports `--format=FORMAT` option.
31
-
32
- $ k8rb mapping --format=text # or yaml/json/javascript/jquery/angular
33
-
34
- * [enhance] `k8rb` command supports `cdnjs` action which download JavaScript
35
- libraries from cdnjs.com.
36
-
37
- $ k8rb cdnjs # list library
38
- $ k8rb cdnjs 'jquery*' # search library
39
- $ k8rb cdnjs jquery # list versions
40
- $ k8rb cdnjs jquery 2.1.4 # download library
41
-
42
- * [change] `k8rb init` command downloads jquery and modernizr from cdnjs.com.
43
-
44
- * [change] `K8::Mock` and `K8::TestApp` are removed.
45
- Use rack-test_app gem instead.
46
-
47
- * [bugfix] Document fixed.
48
-
49
- * [internal] Remove `K8::ActionClassMapping`, 'K8::ActionRouter' and
50
- 'K8::ActionFinder' classes.
51
-
52
- * [internal] Define new class `K8::ActionMapping` instead of remove classes.
53
-
54
-
55
- Release 0.1.0 (2015-10-27)
56
- --------------------------
57
-
58
- * Public release
59
-
60
-
61
- Release 0.0.1 (2015-10-26)
62
- --------------------------
63
-
64
- * Test release
@@ -1,10 +0,0 @@
1
- config/*.private
2
- *.cache
3
- *.gem
4
- *.rbc
5
- tmp/
6
- .bundle
7
- .rvmrc
8
- .repl_history
9
- .yardoc
10
- _yardoc
@@ -1,13 +0,0 @@
1
- # README
2
-
3
- See https://github.com/kwatch/keight/tree/ruby for details.
4
-
5
-
6
- ## Setup
7
-
8
- $ rake setup:install
9
-
10
-
11
- ## Test
12
-
13
- $ rake # or: rake test
@@ -1,106 +0,0 @@
1
- # -*- coding: utf-8 -*-
2
-
3
- require 'keight'
4
- require 'baby_erubis'
5
- require 'baby_erubis/renderer'
6
-
7
-
8
- class StrippedHtmlTemplate < BabyErubis::Html
9
- def parse(input, *args)
10
- ## strip spaces of indentation
11
- stripped = input.gsub(/^[ \t]+</, '<')
12
- return super(stripped, *args)
13
- end
14
- end
15
-
16
-
17
- module My
18
- end
19
-
20
-
21
- class My::Action < K8::Action
22
-
23
-
24
- ##
25
- ## template
26
- ##
27
-
28
- ERUBY_PATH = ['app/template']
29
- ERUBY_LAYOUT = :_layout
30
- #ERUBY_HTML = BabyErubis::Html
31
- ERUBY_HTML = StrippedHtmlTemplate
32
- ERUBY_HTML_EXT = '.html.eruby'
33
- ERUBY_TEXT = BabyErubis::Text
34
- ERUBY_TEXT_EXT = '.eruby'
35
- ERUBY_CACHE = {}
36
-
37
- include BabyErubis::HtmlEscaper # define escape()
38
- include BabyErubis::Renderer # define eruby_render_{html,text}()
39
-
40
- protected
41
-
42
- alias render_html eruby_render_html
43
- alias render_text eruby_render_text
44
-
45
-
46
- ##
47
- ## event handler (= exception handler)
48
- ##
49
-
50
- protected
51
-
52
- ##
53
- ## Define event handlers here.
54
- ##
55
- ## ex:
56
- ## class Event < Exception; end
57
- ## class NotExist < Event; end
58
- ## class NotPermitted < Event; end
59
- ##
60
- ## def on_NotExist(ev) # or: define_method "on_Foo::Bar" do |ev|
61
- ## @resp.status_code = 404 # 404 Not Found
62
- ## {"error"=>"Not exist"}
63
- ## end
64
- ## def on_NotPermitted(ev)
65
- ## @resp.status_code = 403 # 403 Forbidden
66
- ## {"error"=>"Not permitted"}
67
- ## end
68
- ##
69
- ## def do_show(id)
70
- ## item = Item.find(id) or raise NotExist
71
- ## return {"item"=>{"id"=>id, "name"=>item.name}}
72
- ## end
73
- ##
74
-
75
-
76
- end
77
-
78
-
79
- class My::AdminAction < My::Action
80
-
81
- ## override template configs
82
- ERUBY_PATH = ['admin/template']
83
- ERUBY_LAYOUT = :_admin_layout
84
-
85
- end
86
-
87
-
88
- class My::StaticPage < My::Action
89
-
90
- mapping '/{urlpath:.+}', :GET=>:do_send_file
91
- STATIC_DIR = "static"
92
-
93
- def do_send_file(urlpath)
94
- filepath = "#{STATIC_DIR}/#{urlpath}"
95
- File.file?(filepath) or raise K8::HttpException.new(404)
96
- #env = @req.env
97
- #header_name = env['sendfile.type'] || env['HTTP_X_SENDFILE_TYPE']
98
- #if header_name && ! header_name.empty?
99
- # @resp.headers[header_name] = filepath
100
- # return nil
101
- #else
102
- return send_file(filepath)
103
- #end
104
- end
105
-
106
- end
@@ -1,39 +0,0 @@
1
- # -*- coding: utf-8 -*-
2
-
3
- require 'keight'
4
-
5
- #require_relative '../action'
6
-
7
-
8
- class HelloAPI < K8::Action # or My::Action
9
-
10
- mapping '' , :GET=>:do_index, :POST=>:do_create
11
- mapping '/{id}' , :GET=>:do_show, :PUT=>:do_update, :DELETE=>:do_delete
12
- ## or if you want support '/hello.json' and '/hello/123.json':
13
- #mapping '{ext}' , :GET=>:do_index, :POST=>:do_create
14
- #mapping '/{id}{ext}' , :GET=>:do_show, :PUT=>:do_update, :DELETE=>:do_delete
15
-
16
- def do_index()
17
- query = @req.params_query # QUERY_STRING
18
- {"action"=>"index", "query"=>query}
19
- end
20
-
21
- def do_create()
22
- form = @req.params_form # or @req.params_json
23
- {"action"=>"create", "form"=>form}
24
- end
25
-
26
- def do_show(id)
27
- {"action"=>"show", "id"=>id}
28
- end
29
-
30
- def do_update(id)
31
- form = @req.params_form # or @req.params_json
32
- {"action"=>"update", "id"=>id, "form"=>form}
33
- end
34
-
35
- def do_delete(id)
36
- {"action"=>"delete", "id"=>id}
37
- end
38
-
39
- end
File without changes
File without changes
@@ -1,144 +0,0 @@
1
- # -*- coding: utf-8 -*-
2
-
3
- ##
4
- ## Define base classes of models here.
5
- ##
6
-
7
- ## ***********************************************
8
- ## The followings are just examples.
9
- ## Remove them and define your own classes.
10
- ## ***********************************************
11
-
12
- class Entity
13
- end
14
-
15
- ## ex: Customer, Department, Company, Product, ...
16
- class ResourceEntity < Entity # or NounEntity
17
- end
18
-
19
- ## ex: SalesOrder, Shipping, Requisition, Approval, ...
20
- class EventEntity < Entity # or VerbEntity
21
- end
22
-
23
- ## ex: Client, Supplier, Position, ...
24
- class RoleEntity < Entity
25
- end
26
-
27
- ## ex: Belonging, Writing, BOM, ...
28
- class MappingEntity < Entity
29
- end
30
-
31
-
32
- ## Define event class as exception in order to be
33
- ## caught in My::Action class.
34
- class Event < Exception
35
- end
36
-
37
- class NotExist < Event
38
- end
39
-
40
- class NotPermitted < Event
41
- end
42
-
43
- class NotCorrect < Event
44
- end
45
-
46
-
47
- ## Form class
48
- class Form
49
-
50
- def initialize(params={})
51
- @params = params
52
- end
53
-
54
- attr_reader :params, :errors
55
-
56
- def self.new_from(model)
57
- params = {
58
- #'val' => model.val,
59
- }
60
- self.new(params)
61
- end
62
-
63
- def validate
64
- @errors = errors = {}
65
- #
66
- #k = 'val'
67
- #v = @params[k].to_s.strip
68
- #if v.empty?
69
- # errors[k] = "Required"
70
- #elsif v !~ /\A\d+\z/
71
- # errors[k] = "Integer expected"
72
- #end
73
- #@params[k] = v
74
- #
75
- return errors
76
- end
77
-
78
- def error(name)
79
- @errors[name]
80
- end
81
-
82
- def populate_into(model)
83
- #model.val = @params['val'].to_i
84
- return model
85
- end
86
-
87
- end
88
-
89
-
90
- ## Operation class (aka Service class)
91
- class Operation
92
-
93
- def initialize(db, login_user=nil)
94
- @db = db
95
- @login_user = login_user
96
- end
97
-
98
- end
99
-
100
-
101
- ## Usecase class in order to separate business logics from framework.
102
- class UseCase
103
-
104
- def initialize(db, login_user=nil)
105
- @db = db
106
- @login_user = login_user
107
- end
108
-
109
- def run(params, *urlpath_params)
110
- errors = validate(params)
111
- return nil, errors if errors
112
- args = accommodate(params, *urlpath_params)
113
- model, error = execute(*args)
114
- return nil, error if error
115
- content = represent(model)
116
- return content, nil
117
- end
118
-
119
- private
120
-
121
- ## validate params and return errors as Hash object.
122
- def validate(params)
123
- errors = {}
124
- return errors
125
- end
126
-
127
- ## convert params and urlpath params into args of execute()
128
- def accommodate(params, *urlpath_params)
129
- args = urlpath_params + [params]
130
- return args
131
- end
132
-
133
- ## execute business logic
134
- def execute(*args)
135
- model = nil
136
- return model
137
- end
138
-
139
- ## convert model object into JSON or HTML
140
- def represent(model)
141
- return {}
142
- end
143
-
144
- end