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