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.
- checksums.yaml +4 -4
- data/CHANGES.md +237 -0
- data/README.md +285 -81
- data/Rakefile +27 -1
- data/bench/benchmarker.rb +2 -2
- data/bin/k8rb +112 -305
- data/keight.gemspec +4 -6
- data/lib/keight.rb +860 -822
- data/test/keight_test.rb +1007 -933
- data/test/oktest.rb +2 -2
- metadata +4 -68
- data/CHANGES.txt +0 -64
- data/lib/keight/skeleton/.gitignore +0 -10
- data/lib/keight/skeleton/README.txt +0 -13
- data/lib/keight/skeleton/app/action.rb +0 -106
- data/lib/keight/skeleton/app/api/hello.rb +0 -39
- data/lib/keight/skeleton/app/form/.keep +0 -0
- data/lib/keight/skeleton/app/helper/.keep +0 -0
- data/lib/keight/skeleton/app/model.rb +0 -144
- data/lib/keight/skeleton/app/model/.keep +0 -0
- data/lib/keight/skeleton/app/page/welcome.rb +0 -17
- data/lib/keight/skeleton/app/template/_layout.html.eruby +0 -56
- data/lib/keight/skeleton/app/template/welcome.html.eruby +0 -6
- data/lib/keight/skeleton/app/usecase/.keep +0 -0
- data/lib/keight/skeleton/config.rb +0 -46
- data/lib/keight/skeleton/config.ru +0 -6
- data/lib/keight/skeleton/config/app.rb +0 -29
- data/lib/keight/skeleton/config/app_dev.rb +0 -8
- data/lib/keight/skeleton/config/app_prod.rb +0 -7
- data/lib/keight/skeleton/config/app_stg.rb +0 -5
- data/lib/keight/skeleton/config/app_test.rb +0 -8
- data/lib/keight/skeleton/config/server_puma.rb +0 -22
- data/lib/keight/skeleton/config/server_unicorn.rb +0 -21
- data/lib/keight/skeleton/config/urlpath_mapping.rb +0 -16
- data/lib/keight/skeleton/index.txt +0 -39
- data/lib/keight/skeleton/main.rb +0 -22
- data/lib/keight/skeleton/static/lib/.keep +0 -0
- data/lib/keight/skeleton/test/api/hello_test.rb +0 -27
- data/lib/keight/skeleton/test/test_helper.rb +0 -9
File without changes
|
@@ -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>
|
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,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,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
|
data/lib/keight/skeleton/main.rb
DELETED
@@ -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
|