keight 0.2.0 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
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'