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
File without changes
@@ -1,17 +0,0 @@
1
- # -*- coding: utf-8 -*-
2
-
3
- require 'keight'
4
-
5
- require_relative '../action'
6
-
7
-
8
- class WelcomePage < My::Action
9
-
10
- mapping '' , :GET=>:do_index
11
-
12
- def do_index
13
- #"<h1>Welcome!</h1>"
14
- render_html :welcome
15
- end
16
-
17
- end
@@ -1,56 +0,0 @@
1
- <% # -*- coding: utf-8 -*-
2
-
3
- @page_title ||= "Example"
4
-
5
- #cdn_baseurl = 'https://ajax.googleapis.com/ajax/libs' # Google
6
- cdn_baseurl = 'https://cdnjs.cloudflare.com/ajax/libs' # CDNJS
7
-
8
- ga_code = $config.google_analytics_code
9
-
10
- if $config.app_env == 'dev'
11
- cdn_baseurl = '/static/lib'
12
- ga_code = nil
13
- end
14
-
15
- %>
16
- <!doctype html>
17
- <html class="no-js" lang="">
18
- <head>
19
- <meta charset="utf-8" />
20
- <meta http-equiv="x-ua-compatible" content="ie=edge" />
21
- <title><%= @page_title %></title>
22
- <meta name="description" content="" />
23
- <meta name="viewport" content="width=device-width, initial-scale=1" />
24
- <!--link rel="stylesheet" href="/static/css/normalize.css" /-->
25
- <!--link rel="stylesheet" href="/static/css/main.css" /-->
26
- <script src="<%= cdn_baseurl %>/modernizr/2.8.3/modernizr.min.js"></script>
27
- </head>
28
- <body>
29
-
30
- <header>
31
- </header>
32
- <div id="main" class="main">
33
- <%== @_content %>
34
- </div>
35
- <footer>
36
- </footer>
37
-
38
- <script src="<%= cdn_baseurl %>/jquery/1.11.3/jquery.min.js"></script>
39
- <script>window.jQuery || document.write('<script src="/static/lib/jquery/1.11.3/jquery.min.js"><\/script>')</script>
40
-
41
- <% ### load site-specific files ### %>
42
- <!--script src="/static/js/site.js"></script-->
43
-
44
- <% ### Google Analytics ### %>
45
- <% if ga_code %>
46
- <script>
47
- (function(b,o,i,l,e,r){b.GoogleAnalyticsObject=l;b[l]||(b[l]=
48
- function(){(b[l].q=b[l].q||[]).push(arguments)});b[l].l=+new Date;
49
- e=o.createElement(i);r=o.getElementsByTagName(i)[0];
50
- e.src='https://www.google-analytics.com/analytics.js';
51
- r.parentNode.insertBefore(e,r)}(window,document,'script','ga'));
52
- ga('create','<%= ga_code %>','auto');ga('send','pageview');
53
- </script>
54
- <% end %>
55
- </body>
56
- </html>
@@ -1,6 +0,0 @@
1
- <% # -*- coding: utf-8 -*-
2
- %>
3
- <section>
4
- <h1>Welcome!</h1>
5
- <p>This is an example content.</p>
6
- </section>
File without changes
@@ -1,46 +0,0 @@
1
- # -*- coding: utf-8 -*-
2
-
3
- app_env = ENV['APP_ENV'] # 'dev', 'prod', 'stg', 'test'
4
- if app_env.nil? || app_env.empty?
5
- $stderr.write '
6
- **
7
- ** ERROR: Set $APP_ENV environment variable at first.
8
- **
9
- ** Example (MacOSX, UNIX):
10
- ** $ export APP_ENV=dev # development mode
11
- ** $ export APP_ENV=prod # production mode
12
- ** $ export APP_ENV=stg # staging mode
13
- **
14
- '
15
- exit 1
16
- end
17
-
18
- if defined?(Config) # Ruby < 2.2 has obsoleted 'Config' object
19
- Object.class_eval do
20
- remove_const :Config
21
- end
22
- end
23
-
24
- ## define Config class
25
- require 'keight'
26
- class Config < K8::BaseConfig
27
- end
28
-
29
- ## load 'app.rb', 'app_xxx.rb' and 'app_xxx.private'
30
- require_relative "config/app"
31
- require_relative "config/app_#{app_env}"
32
- fpath = File.join(File.dirname(__FILE__), "config", "app_#{app_env}.private")
33
- load fpath if File.file?(fpath)
34
-
35
- ## if SECRET value is left, report error and exit.
36
- errmsg = Config.validate_values()
37
- if errmsg
38
- $stderr.write(errmsg)
39
- exit 1
40
- end
41
-
42
- ## create $config object
43
- $config = Config.new()
44
-
45
- ## temporary directory to put uploaded files
46
- ENV['K8_UPLOAD_DIR'] = $config.k8_upload_dir if $config.k8_upload_dir
@@ -1,6 +0,0 @@
1
- # -*- coding: utf-8 -*-
2
-
3
- require_relative './main'
4
-
5
- # start application
6
- run $main_app
@@ -1,29 +0,0 @@
1
- # -*- coding: utf-8 -*-
2
-
3
- class Config
4
-
5
- add :app_env , ENV['APP_ENV'] , "environment name"
6
-
7
- ## database
8
- add :db_host , 'localhost' , "DB host name"
9
- add :db_port , 5432 , "DB port number"
10
- add :db_name , 'xxxx' , "DB database"
11
- add :db_user , 'xxxx' , "DB user name"
12
- add :db_pass , SECRET , "DB password"
13
-
14
- ## Rack::Session::Cookie
15
- add :session_key , 'rack.session' , "cookie name"
16
- add :session_domain , nil , "cookie domain"
17
- add :session_path , '/' , "cookie path"
18
- add :session_expire_after , 24 * 60 * 60 , "cookie expires"
19
- add :session_secret , SECRET , "secret key"
20
- add :session_old_secret , SECRET , "old secret key"
21
-
22
- ## Keight
23
- add :k8_upload_dir , './tmp/upload' , "for uploaded files"
24
- add :k8_rackapp_urlpath_cache_size , 0 , "0: cache disabled"
25
-
26
- ## add your own configs here
27
- add :google_analytics_code , nil , "ex: 'UA-XXXXX-X'"
28
-
29
- end
@@ -1,8 +0,0 @@
1
- # -*- coding: utf-8 -*-
2
-
3
- class Config
4
-
5
- set :db_user , ENV['USER']
6
- set :db_pass , ''
7
-
8
- end
@@ -1,7 +0,0 @@
1
- # -*- coding: utf-8 -*-
2
-
3
- class Config
4
-
5
- #set :google_analytics_code , 'UA-XXXXX-X'
6
-
7
- end
@@ -1,5 +0,0 @@
1
- # -*- coding: utf-8 -*-
2
-
3
- class Config
4
-
5
- end
@@ -1,8 +0,0 @@
1
- # -*- coding: utf-8 -*-
2
-
3
- class Config
4
-
5
- set :db_user , ENV['USER']
6
- set :db_pass , ''
7
-
8
- end
@@ -1,22 +0,0 @@
1
- # -*- coding: utf-8 -*-
2
-
3
- ## usage: puma -C config/server_puma.rb
4
- ## ref: https://github.com/puma/puma
5
-
6
- environment 'production'
7
- port 9292
8
- daemonize false
9
- threads 8,32
10
- workers 3
11
- preload_app!
12
-
13
- on_worker_boot do
14
- ##
15
- ## configuration here
16
- ##
17
-
18
- #ActiveSupport.on_load(:active_record) do
19
- # ActiveRecord::Base.establish_connection
20
- #end
21
-
22
- end
@@ -1,21 +0,0 @@
1
- # -*- coding: utf-8 -*-
2
-
3
- ## usage: unicorn -p 9292 -E production -c ./config/server_unicorn.rb
4
- ## ref: https://devcenter.heroku.com/articles/rails-unicorn
5
-
6
- worker_processes Integer(ENV["WEB_CONCURRENCY"] || 4)
7
- timeout 10
8
- preload_app true
9
-
10
- before_fork do |server, worker|
11
- Signal.trap 'TERM' do
12
- puts 'Unicorn master intercepting TERM and sending myself QUIT instead'
13
- Process.kill 'QUIT', Process.pid
14
- end
15
- end
16
-
17
- after_fork do |server, worker|
18
- Signal.trap 'TERM' do
19
- puts 'Unicorn worker intercepting TERM and doing nothing. Wait for master to send QUIT'
20
- end
21
- end
@@ -1,16 +0,0 @@
1
- # -*- coding: utf-8 -*-
2
-
3
- $urlpath_mapping = [
4
- ['/' , "./app/page/welcome:WelcomePage"],
5
- ['/api', [
6
- ['/hello' , "./app/api/hello:HelloAPI"],
7
- #['/books' , "./app/api/books:BooksAPI"],
8
- #['/books/{book_id}/comments' , "./app/api/books:BookCommentsAPI"],
9
- #['/orders' , "./app/api/orders:OrdersAPI"],
10
- ]],
11
- ['/admin', [
12
- #['/books' , "./app/admin/books:AdminBooksPage"],
13
- #['/orders' , "./app/admin/orders:AdminOrdersPage"],
14
- ]],
15
- ['/static' , "./app/action:My::StaticPage"],
16
- ]
@@ -1,39 +0,0 @@
1
- # -*- coding: utf-8 -*-
2
- config.ru for 'rackup' command
3
- config.rb define $config object
4
- config/ configurations
5
- config/app.rb common config
6
- config/app_dev.rb for development
7
- config/app_dev.private (private configs)
8
- config/app_prod.rb for production
9
- config/app_stg.rb for staging
10
- config/app_test.rb for test
11
- config/app_test.private (private configs)
12
- config/server_unicorn.rb for unicorn server
13
- config/server_puma.rb for puma server
14
- config/urlpath_mapping.rb urlpath mapping
15
- app/ application code
16
- app/action.rb base action class
17
- app/api/ for API
18
- app/api/hello.rb example API
19
- app/page/ for HTML
20
- app/page/welcome.rb example HTML page
21
- app/model.rb base classes of models
22
- app/model/ model classes
23
- app/usecase/ usecase classes
24
- app/form/ HTML form
25
- app/helper/ helper modules
26
- app/template/ template files
27
- app/template/_layout.html.eruby default layout template
28
- app/template/welcome.html.eruby welcome page template
29
- static/ static files
30
- static/lib/ libraries such as jquery
31
- test/ test scripts
32
- test/api/
33
- test/api/hello_test.rb
34
- test/test_helper.rb
35
- tmp/ temporary directory
36
- tmp/upload/ for uploaded files
37
- .gitignore for Git
38
- Gemfile gems list
39
- main.rb create Rack app
@@ -1,22 +0,0 @@
1
- # -*- coding: utf-8 -*-
2
-
3
- require 'keight'
4
-
5
- ## create $config object
6
- require_relative 'config'
7
-
8
- ## get $urlpath_mapping
9
- require_relative 'config/urlpath_mapping'
10
-
11
- ## create application object
12
- opts = $config.get_all(:k8_rackapp_) # ex: {urlpath_cache_size: 1000}
13
- app = K8::RackApplication.new($urlpath_mapping, opts)
14
- $urlpath_mapping = nil
15
- $k8_app = app
16
-
17
- ## cookie store session
18
- require 'rack/session/cookie'
19
- app = Rack::Session::Cookie.new(app, $config.get_all(:session_))
20
-
21
- ## export as $main_app
22
- $main_app = app
File without changes
@@ -1,27 +0,0 @@
1
- # -*- coding: utf-8 -*-
2
-
3
- require_relative '../test_helper'
4
-
5
-
6
- http = Rack::TestApp.wrap($main_app)
7
-
8
-
9
- describe HelloAPI do
10
-
11
-
12
- describe 'GET /api/hello' do
13
-
14
- it "returns JSON data." do
15
- r = http.GET('/api/hello')
16
- result = http.GET('/api/hello')
17
- r = result
18
- ok {r.status} == 200
19
- ok {r.content_type} == "application/json"
20
- #ok {r.body_json} == {"message"=>"Hello"}
21
- ok {r.body_json} == {"action"=>"index", "query"=>{}}
22
- end
23
-
24
- end
25
-
26
-
27
- end
@@ -1,9 +0,0 @@
1
- # -*- coding: utf-8 -*-
2
-
3
- require 'minitest/spec'
4
- require 'minitest/autorun'
5
- require 'minitest/ok'
6
- require 'rack'
7
- require 'rack/test_app'
8
-
9
- require_relative '../main'