actionframework 0.2.2 → 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 +5 -13
- data/bin/action +0 -1
- data/lib/actionframework.rb +14 -22
- data/lib/actionframework/base.rb +2 -2
- data/lib/actionframework/controller.rb +16 -1
- data/lib/actionframework/controller_supervisor.rb +14 -1
- data/lib/actionframework/nextcontroller.rb +71 -0
- data/lib/actionframework/project.rb +28 -0
- data/lib/actionframework/realtime.rb +48 -22
- data/lib/actionframework/realtime_controller.rb +36 -0
- data/lib/actionframework/realtime_socket.rb +2 -12
- data/lib/actionframework/routes.rb +18 -12
- data/lib/actionframework/template_manager.rb +12 -0
- data/resources/config/realtime.rb +6 -0
- data/resources/templates/index.html.erb +3 -3
- metadata +69 -37
checksums.yaml
CHANGED
@@ -1,15 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
|
5
|
-
data.tar.gz: !binary |-
|
6
|
-
NDFjZDIwYTFlMWQxNGFiYjAyOWI2MzlhMjJlZDZjZGFkMzU2YWYxMQ==
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: e567264bb4c4bea8b0995d3732ab73749566b048
|
4
|
+
data.tar.gz: 4f4403e202ad4a53f497813a9a69a67a5474e834
|
7
5
|
SHA512:
|
8
|
-
metadata.gz:
|
9
|
-
|
10
|
-
MWMzYTZhNDc3NzlmMjE1MjljNzkwZWU1ZDQxNDQyNTJhYmE4OGM4Nzk5MjYy
|
11
|
-
ZDFhNjc5NDdkMGIwMzNlYzE4MzkzMjJkY2E1MDMyYWYzNTIxODg=
|
12
|
-
data.tar.gz: !binary |-
|
13
|
-
YTM3NmFlODM2ZTA0MmU3MGFhMzVmNWVjMTFjNmNhYzA0ZDQ2MTNkNWM0YjY5
|
14
|
-
MGUxMjMwNWFhYjg3ZmRhMDg4OTUzY2M2NDhmZWZjOGJkZmU0NThkMzlmOTY1
|
15
|
-
NDdiMjJlNDcyNDY2NTE0ODg0ZmM4ZmIxYzUwNWRiZTY2M2JlMzk=
|
6
|
+
metadata.gz: 749bb05d5c73a860a8c7f033206a9b26d0892d2178d9df1ee125e325fd76ff410d0af6b5b18c518ff9af46ea62ddccb4081eda910dbf0d5f1be25bce786d85f7
|
7
|
+
data.tar.gz: 53d628a78ff2bb2895712ec6973499f97245583c692ed52d8a007bae519a8894e860f461a18ee0f78d76cd6e4964a6744c8542d38263b9102364ce13b720d4d6
|
data/bin/action
CHANGED
data/lib/actionframework.rb
CHANGED
@@ -17,13 +17,18 @@ require 'actionframework/realtime'
|
|
17
17
|
require 'actionframework/base'
|
18
18
|
require 'actionframework/authentication'
|
19
19
|
require 'actionframework/mailer'
|
20
|
+
require 'actionframework/project'
|
21
|
+
require 'actionframework/nextcontroller'
|
20
22
|
require 'event_emitter'
|
21
23
|
|
22
24
|
|
25
|
+
|
23
26
|
$runningserver = nil
|
24
27
|
|
25
28
|
module ActionFramework
|
26
29
|
class Server
|
30
|
+
attr_accessor :routesklass
|
31
|
+
|
27
32
|
def initialize
|
28
33
|
require 'bundler'
|
29
34
|
Bundler.require(:default)
|
@@ -35,7 +40,7 @@ module ActionFramework
|
|
35
40
|
def self.current
|
36
41
|
if($runningserver.nil?)
|
37
42
|
$runningserver = ActionFramework::Server.new
|
38
|
-
|
43
|
+
ActionFramework::Project.autoimport
|
39
44
|
$runningserver
|
40
45
|
else
|
41
46
|
$runningserver
|
@@ -46,27 +51,10 @@ module ActionFramework
|
|
46
51
|
$runningserver = runningserver
|
47
52
|
end
|
48
53
|
|
54
|
+
# DEPRECATED This method will soon be removed in favor of ActionFramework::Project.autoimport
|
49
55
|
def autoimport
|
50
|
-
Dir.glob("controllers/*.rb").each do |file|
|
51
|
-
require './'+file
|
52
|
-
end
|
53
|
-
|
54
|
-
Dir.glob("controller/mailers/*.rb") do |file|
|
55
|
-
require './'+file
|
56
|
-
end
|
57
56
|
|
58
|
-
|
59
|
-
require './'+file
|
60
|
-
end
|
61
|
-
|
62
|
-
require './config/routes'
|
63
|
-
require './config/settings'
|
64
|
-
require './config/plugables'
|
65
|
-
require './config/mailer'
|
66
|
-
|
67
|
-
Dir.glob("initializers/*.rb").each do |file|
|
68
|
-
require './'+file
|
69
|
-
end
|
57
|
+
ActionFramework::Project.autoimport
|
70
58
|
|
71
59
|
end
|
72
60
|
|
@@ -99,8 +87,12 @@ module ActionFramework
|
|
99
87
|
matcheddata = controllerinfo[1]
|
100
88
|
|
101
89
|
result = ActionFramework::ControllerSupervisor.new.run(controller,env,req,res,matcheddata)
|
102
|
-
|
103
|
-
|
90
|
+
if(result.class.to_s == "ActionFramework::ThisObject")
|
91
|
+
result.response.finish
|
92
|
+
else
|
93
|
+
res.write result
|
94
|
+
res.finish
|
95
|
+
end
|
104
96
|
end
|
105
97
|
def routes &block
|
106
98
|
@routesklass.instance_eval &block
|
data/lib/actionframework/base.rb
CHANGED
@@ -21,7 +21,7 @@ module ActionFramework
|
|
21
21
|
end
|
22
22
|
|
23
23
|
use Rack::Session::Cookie, :secret => ActionFramework::Server.current.get_settings.cookie_secret
|
24
|
-
|
24
|
+
|
25
25
|
use Warden::Manager do |manager|
|
26
26
|
config = File.read('./config/auth.rb')
|
27
27
|
manager.failure_app = ActionFramework::Server.current
|
@@ -38,4 +38,4 @@ module ActionFramework
|
|
38
38
|
@app.call(env)
|
39
39
|
end
|
40
40
|
end
|
41
|
-
end
|
41
|
+
end
|
@@ -83,11 +83,26 @@ module ActionFramework
|
|
83
83
|
output = returns
|
84
84
|
break
|
85
85
|
end
|
86
|
-
|
86
|
+
|
87
87
|
end
|
88
88
|
|
89
89
|
return output
|
90
90
|
end
|
91
91
|
|
92
|
+
def _static filename
|
93
|
+
File.read("./views/_/#{filename}.html")
|
94
|
+
end
|
95
|
+
|
96
|
+
def _erb templatename,context=self
|
97
|
+
renderer = Tilt::ERBTemplate.new("./views/#{templatename}")
|
98
|
+
renderer.render(context)
|
99
|
+
end
|
100
|
+
|
101
|
+
|
102
|
+
# Legacy support for partials
|
103
|
+
def _render filename
|
104
|
+
File.read("./views/_/#{filename}.html")
|
105
|
+
end
|
106
|
+
|
92
107
|
end
|
93
108
|
end
|
@@ -1,12 +1,25 @@
|
|
1
1
|
module ActionFramework
|
2
2
|
class ControllerSupervisor
|
3
3
|
def run(execute_cmd,env,req,res,url)
|
4
|
+
if(execute_cmd.class == Array)
|
5
|
+
classname,methodname = execute_cmd[0].split("#")[0], execute_cmd[0].split("#")[1]
|
6
|
+
controller = Object.const_get(classname).new
|
7
|
+
controller.setup(req,res,url,execute_cmd);
|
8
|
+
controller.setNext(1);
|
9
|
+
controller.send(methodname)
|
10
|
+
|
11
|
+
return controller.this
|
12
|
+
else
|
13
|
+
|
4
14
|
classname, methodname = execute_cmd.split("#")[0], execute_cmd.split("#")[1]
|
5
15
|
|
6
|
-
|
16
|
+
controllerobject = Object.const_get(classname)
|
17
|
+
|
18
|
+
controller = controllerobject.new(env,req,res,url)
|
7
19
|
object_from_run_before = controller.execute_run_before
|
8
20
|
return object_from_run_before unless object_from_run_before.nil?
|
9
21
|
return controller.send(methodname);
|
22
|
+
end
|
10
23
|
end
|
11
24
|
end
|
12
25
|
end
|
@@ -0,0 +1,71 @@
|
|
1
|
+
require 'rack'
|
2
|
+
require 'actionframework/controller'
|
3
|
+
require 'actionframework/template_manager'
|
4
|
+
|
5
|
+
module ActionFramework
|
6
|
+
class ThisObject
|
7
|
+
def method_missing(meth,*args,&block)
|
8
|
+
if(meth.to_s.include?("="))
|
9
|
+
instance_variable_set("@"+meth.to_s.gsub("=",""),args[0])
|
10
|
+
|
11
|
+
create_method(meth.to_s.gsub("=","")) do
|
12
|
+
instance_variable_get("@"+meth.to_s.gsub("=",""))
|
13
|
+
end
|
14
|
+
else
|
15
|
+
super
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
def create_method( name, &block )
|
20
|
+
self.class.send( :define_method, name, &block )
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
class NextControllerError < StandardError
|
25
|
+
|
26
|
+
end
|
27
|
+
|
28
|
+
module NextController
|
29
|
+
attr_accessor :klass
|
30
|
+
attr_accessor :method
|
31
|
+
attr_accessor :nexts
|
32
|
+
attr_accessor :nextElementPlace
|
33
|
+
attr_accessor :neep
|
34
|
+
attr_writer :this
|
35
|
+
|
36
|
+
|
37
|
+
def setup(req,res,url,nexts)
|
38
|
+
this.request = req
|
39
|
+
this.response = res
|
40
|
+
this.url = url
|
41
|
+
@nexts = nexts
|
42
|
+
end
|
43
|
+
|
44
|
+
def goNext(ctx)
|
45
|
+
raise ActionFramework::NextControllerError,"No \"next\" found, check your routes.rb" if(ctx.nexts.length < ctx.neep+1)
|
46
|
+
|
47
|
+
klass,method = ctx.nexts[ctx.neep].split("#")[0],ctx.nexts[ctx.neep].split("#")[1]
|
48
|
+
klass_inst = Object.const_get(klass).new
|
49
|
+
klass_inst.this = ctx.this
|
50
|
+
klass_inst.nexts = ctx.nexts
|
51
|
+
klass_inst.setNext(ctx.neep+1)
|
52
|
+
klass_inst.send(method)
|
53
|
+
|
54
|
+
end
|
55
|
+
|
56
|
+
def setNext(nextElementPlace)
|
57
|
+
@neep = nextElementPlace
|
58
|
+
end
|
59
|
+
|
60
|
+
def this
|
61
|
+
if(@this.nil?)
|
62
|
+
@this = ActionFramework::ThisObject.new
|
63
|
+
end
|
64
|
+
@this
|
65
|
+
end
|
66
|
+
|
67
|
+
def erb(templatename)
|
68
|
+
ActionFramework::TemplateManager::Erb.render(templatename,self)
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
module ActionFramework
|
2
|
+
class Project
|
3
|
+
def self.autoimport
|
4
|
+
Dir.glob("controllers/*.rb").each do |file|
|
5
|
+
require './'+file
|
6
|
+
end
|
7
|
+
|
8
|
+
Dir.glob("controller/mailers/*.rb") do |file|
|
9
|
+
require './'+file
|
10
|
+
end
|
11
|
+
|
12
|
+
Dir.glob("models/*.rb").each do |file|
|
13
|
+
require './'+file
|
14
|
+
end
|
15
|
+
|
16
|
+
require './config/routes'
|
17
|
+
require './config/settings'
|
18
|
+
require './config/plugables'
|
19
|
+
require './config/mailer'
|
20
|
+
|
21
|
+
require './config/realtime' unless !File.exist?("./config/realtime.rb")
|
22
|
+
|
23
|
+
Dir.glob("initializers/*.rb").each do |file|
|
24
|
+
require './'+file
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -2,41 +2,67 @@
|
|
2
2
|
# Licenced under MIT ##
|
3
3
|
### © BramVDB.com #####
|
4
4
|
#######################
|
5
|
+
|
5
6
|
require 'rack/websocket'
|
6
7
|
require 'socket'
|
7
8
|
require 'json'
|
9
|
+
require 'redis'
|
10
|
+
require 'tubesock'
|
8
11
|
|
12
|
+
$redis = Redis.new
|
9
13
|
module ActionFramework
|
10
|
-
class Realtime
|
11
|
-
|
12
|
-
def
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
begin
|
17
|
-
socket = UNIXSocket.new("./realtime.socket")
|
18
|
-
@nosocket = false
|
19
|
-
@message = ActionFramework::RealtimeMessage.new(socket)
|
20
|
-
rescue
|
14
|
+
class Realtime
|
15
|
+
|
16
|
+
def call(env)
|
17
|
+
tubesock = Tubesock.hijack(env)
|
18
|
+
tubesock.listen
|
21
19
|
|
22
|
-
|
20
|
+
@sock = tubesock
|
21
|
+
|
22
|
+
tubesock.onmessage do |message|
|
23
|
+
on_message(env,message);
|
24
|
+
end
|
25
|
+
|
26
|
+
tubesock.onopen do
|
27
|
+
on_open(env)
|
28
|
+
end
|
29
|
+
|
30
|
+
tubesock.onclose do
|
31
|
+
on_close(env)
|
32
|
+
end
|
33
|
+
[ -1, {}, [] ]
|
23
34
|
end
|
24
35
|
|
25
|
-
def on_open
|
26
|
-
|
27
|
-
|
36
|
+
def on_open(env)
|
37
|
+
request = Rack::Request.new(env)
|
38
|
+
perform_action(env,request,request.path,"on_open",nil)
|
28
39
|
end
|
29
40
|
|
30
|
-
def
|
31
|
-
|
41
|
+
def on_message(env,message)
|
42
|
+
request = Rack::Request.new(env)
|
43
|
+
perform_action(env,request,request.path,"on_message",message)
|
32
44
|
end
|
33
45
|
|
34
|
-
def
|
35
|
-
|
46
|
+
def on_close(env)
|
47
|
+
request = Rack::Request.new(env)
|
48
|
+
perform_action(env,request,request.path,"on_close",nil)
|
36
49
|
end
|
37
50
|
|
38
|
-
def
|
39
|
-
|
51
|
+
def self.configure
|
52
|
+
$realtime_config = RealtimeConfigure.new
|
53
|
+
yield($realtime_config)
|
40
54
|
end
|
55
|
+
|
56
|
+
|
57
|
+
def perform_action(env,req,path,method,payload)
|
58
|
+
matchedroute = ActionFramework::Server.current.routesklass.route(path,"realtime")
|
59
|
+
controller,url = matchedroute[0],matchedroute[1]
|
60
|
+
|
61
|
+
Object.const_get(controller).new(url,req,env,payload,@sock).send(method,payload)
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
class RealtimeConfigure
|
66
|
+
attr_accessor :enabled
|
41
67
|
end
|
42
|
-
end
|
68
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
module ActionFramework
|
2
|
+
class RealtimeController
|
3
|
+
attr_accessor :url
|
4
|
+
attr_accessor :req
|
5
|
+
attr_accessor :env
|
6
|
+
attr_accessor :payload
|
7
|
+
|
8
|
+
def initialize(url,req,env,payload,socket)
|
9
|
+
@url = url
|
10
|
+
@req = req
|
11
|
+
@env = env
|
12
|
+
@payload = payload
|
13
|
+
@socket = socket
|
14
|
+
end
|
15
|
+
|
16
|
+
def request
|
17
|
+
@req
|
18
|
+
end
|
19
|
+
|
20
|
+
def socket
|
21
|
+
@socket
|
22
|
+
end
|
23
|
+
|
24
|
+
def on_open
|
25
|
+
|
26
|
+
end
|
27
|
+
|
28
|
+
def on_close
|
29
|
+
|
30
|
+
end
|
31
|
+
|
32
|
+
def on_message
|
33
|
+
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
@@ -4,17 +4,7 @@ require 'securerandom'
|
|
4
4
|
module ActionFramework
|
5
5
|
class RealtimeSocket
|
6
6
|
def initialize
|
7
|
-
|
8
|
-
end
|
9
|
-
|
10
|
-
def listen
|
11
|
-
$pid = Procces.fork do
|
12
|
-
while(client = @sock.accept)
|
13
|
-
while(line = client.gets)
|
14
|
-
yield
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
7
|
+
puts "RealtimeSocket will soon be removed because of the choice of Redis for transport"
|
18
8
|
end
|
19
9
|
end
|
20
|
-
end
|
10
|
+
end
|
@@ -11,14 +11,14 @@ module ActionFramework
|
|
11
11
|
attr_accessor :redirects
|
12
12
|
|
13
13
|
def initialize
|
14
|
-
@routes = {:get => {}, :post => {}, :update => {}, :delete => {}, :patch => {}}
|
14
|
+
@routes = {:get => {}, :post => {}, :update => {}, :delete => {}, :patch => {},:realtime => {}}
|
15
15
|
@models = []
|
16
16
|
@redirects = []
|
17
17
|
end
|
18
18
|
|
19
19
|
def build_regex string
|
20
20
|
string = string.gsub("{{","(?<")
|
21
|
-
string = string.gsub("}}",">(.*))")
|
21
|
+
string = string.gsub("}}",">(.*))")
|
22
22
|
string.insert(0,"^")
|
23
23
|
string = string+"$"
|
24
24
|
regex = Regexp.new (string)
|
@@ -26,34 +26,37 @@ module ActionFramework
|
|
26
26
|
end
|
27
27
|
|
28
28
|
def get hash
|
29
|
-
@routes[:get][build_regex(hash.keys.first.to_s)] = hash[hash.keys.first.to_s]
|
29
|
+
@routes[:get][build_regex(hash.keys.first.to_s)] = hash[hash.keys.first.to_s]
|
30
30
|
end
|
31
31
|
|
32
32
|
def post hash
|
33
|
-
@routes[:post][build_regex(hash.keys.first.to_s)] = hash[hash.keys.first.to_s]
|
33
|
+
@routes[:post][build_regex(hash.keys.first.to_s)] = hash[hash.keys.first.to_s]
|
34
34
|
end
|
35
35
|
|
36
36
|
def update hash
|
37
|
-
@routes[:update][build_regex(hash.keys.first.to_s)] = hash[hash.keys.first.to_s]
|
37
|
+
@routes[:update][build_regex(hash.keys.first.to_s)] = hash[hash.keys.first.to_s]
|
38
38
|
end
|
39
39
|
|
40
40
|
def delete hash
|
41
|
-
@routes[:delete][build_regex(hash.keys.first.to_s)] = hash[hash.keys.first.to_s]
|
41
|
+
@routes[:delete][build_regex(hash.keys.first.to_s)] = hash[hash.keys.first.to_s]
|
42
42
|
end
|
43
43
|
|
44
44
|
def patch hash
|
45
|
-
@routes[:patch][build_regex(hash.keys.first.to_s)] = hash[hash.keys.first.to_s]
|
45
|
+
@routes[:patch][build_regex(hash.keys.first.to_s)] = hash[hash.keys.first.to_s]
|
46
46
|
end
|
47
47
|
|
48
48
|
def model name
|
49
49
|
# @models[name of the class of the model] = name of class of the access policy of the model
|
50
|
-
@models << name
|
50
|
+
@models << name
|
51
|
+
end
|
52
|
+
|
53
|
+
def realtime hash
|
54
|
+
@routes[:realtime][build_regex(hash.keys.first.to_s)] = hash[hash.keys.first.to_s]
|
51
55
|
end
|
52
56
|
|
53
57
|
def route(path,method)
|
54
58
|
@routes[method.downcase.to_sym].each do |regex,controller|
|
55
|
-
|
56
|
-
|
59
|
+
|
57
60
|
if(matched = path.match(regex))
|
58
61
|
return [controller,matched]
|
59
62
|
end
|
@@ -77,9 +80,12 @@ module ActionFramework
|
|
77
80
|
end
|
78
81
|
return OpenStruct.new(redirect)
|
79
82
|
end
|
80
|
-
end
|
83
|
+
end
|
81
84
|
nil
|
82
85
|
end
|
83
86
|
|
87
|
+
def add_next(method,path,index,action)
|
88
|
+
@routes[method][build_regex(path)].insert(index,action);
|
89
|
+
end
|
84
90
|
end
|
85
|
-
end
|
91
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
module ActionFramework
|
2
|
+
module TemplateManager
|
3
|
+
|
4
|
+
class Erb
|
5
|
+
def self.render(template,ctx)
|
6
|
+
renderer = Tilt::ERBTemplate.new("views/layout.html.erb");
|
7
|
+
output = renderer.render(ctx){ Tilt::ERBTemplate.new("views/"+template.to_s+".html.erb").render(ctx) }
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
end
|
12
|
+
end
|
@@ -4,9 +4,9 @@
|
|
4
4
|
<pre style="text-align: left;margin: auto;width: 60%;">
|
5
5
|
<code>
|
6
6
|
# In config/routes.rb
|
7
|
-
ActionFramework::Server.current.routes do
|
7
|
+
ActionFramework::Server.current.routes do
|
8
8
|
get "/" => "DefaultController#index" # This route
|
9
9
|
get "/mynewroute" = "MyNewController#index" # Your new route!
|
10
|
-
end
|
10
|
+
end
|
11
11
|
</code>
|
12
|
-
</pre>
|
12
|
+
</pre>
|
metadata
CHANGED
@@ -1,181 +1,209 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: actionframework
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Bram Vandenbogaerde
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-12-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: tilt
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '0'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- -
|
24
|
+
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: json
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- -
|
31
|
+
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '0'
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- -
|
38
|
+
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: rack
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- -
|
45
|
+
- - ">="
|
46
46
|
- !ruby/object:Gem::Version
|
47
47
|
version: '0'
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- -
|
52
|
+
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: optitron
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- -
|
59
|
+
- - ">="
|
60
60
|
- !ruby/object:Gem::Version
|
61
61
|
version: '0'
|
62
62
|
type: :runtime
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- -
|
66
|
+
- - ">="
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '0'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: websocket-rack
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
|
-
- -
|
73
|
+
- - ">="
|
74
74
|
- !ruby/object:Gem::Version
|
75
75
|
version: '0'
|
76
76
|
type: :runtime
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
|
-
- -
|
80
|
+
- - ">="
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: '0'
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
84
|
name: httparty
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
|
-
- -
|
87
|
+
- - ">="
|
88
88
|
- !ruby/object:Gem::Version
|
89
89
|
version: '0'
|
90
90
|
type: :runtime
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
|
-
- -
|
94
|
+
- - ">="
|
95
95
|
- !ruby/object:Gem::Version
|
96
96
|
version: '0'
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
98
|
name: jewel
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
100
100
|
requirements:
|
101
|
-
- -
|
101
|
+
- - ">="
|
102
102
|
- !ruby/object:Gem::Version
|
103
103
|
version: '0'
|
104
104
|
type: :runtime
|
105
105
|
prerelease: false
|
106
106
|
version_requirements: !ruby/object:Gem::Requirement
|
107
107
|
requirements:
|
108
|
-
- -
|
108
|
+
- - ">="
|
109
109
|
- !ruby/object:Gem::Version
|
110
110
|
version: '0'
|
111
111
|
- !ruby/object:Gem::Dependency
|
112
|
-
name:
|
112
|
+
name: omniauth
|
113
113
|
requirement: !ruby/object:Gem::Requirement
|
114
114
|
requirements:
|
115
|
-
- -
|
115
|
+
- - "~>"
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '1.0'
|
118
|
+
type: :runtime
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - "~>"
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '1.0'
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: event_emitter
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - ">="
|
116
130
|
- !ruby/object:Gem::Version
|
117
131
|
version: '0'
|
118
132
|
type: :runtime
|
119
133
|
prerelease: false
|
120
134
|
version_requirements: !ruby/object:Gem::Requirement
|
121
135
|
requirements:
|
122
|
-
- -
|
136
|
+
- - ">="
|
123
137
|
- !ruby/object:Gem::Version
|
124
138
|
version: '0'
|
125
139
|
- !ruby/object:Gem::Dependency
|
126
|
-
name:
|
140
|
+
name: warden
|
127
141
|
requirement: !ruby/object:Gem::Requirement
|
128
142
|
requirements:
|
129
|
-
- -
|
143
|
+
- - ">="
|
130
144
|
- !ruby/object:Gem::Version
|
131
|
-
version: '
|
145
|
+
version: '0'
|
132
146
|
type: :runtime
|
133
147
|
prerelease: false
|
134
148
|
version_requirements: !ruby/object:Gem::Requirement
|
135
149
|
requirements:
|
136
|
-
- -
|
150
|
+
- - ">="
|
137
151
|
- !ruby/object:Gem::Version
|
138
|
-
version: '
|
152
|
+
version: '0'
|
139
153
|
- !ruby/object:Gem::Dependency
|
140
|
-
name:
|
154
|
+
name: actionmailer
|
141
155
|
requirement: !ruby/object:Gem::Requirement
|
142
156
|
requirements:
|
143
|
-
- -
|
157
|
+
- - ">="
|
144
158
|
- !ruby/object:Gem::Version
|
145
159
|
version: '0'
|
146
160
|
type: :runtime
|
147
161
|
prerelease: false
|
148
162
|
version_requirements: !ruby/object:Gem::Requirement
|
149
163
|
requirements:
|
150
|
-
- -
|
164
|
+
- - ">="
|
151
165
|
- !ruby/object:Gem::Version
|
152
166
|
version: '0'
|
153
167
|
- !ruby/object:Gem::Dependency
|
154
|
-
name:
|
168
|
+
name: redis
|
155
169
|
requirement: !ruby/object:Gem::Requirement
|
156
170
|
requirements:
|
157
|
-
- -
|
171
|
+
- - ">="
|
158
172
|
- !ruby/object:Gem::Version
|
159
173
|
version: '0'
|
160
174
|
type: :runtime
|
161
175
|
prerelease: false
|
162
176
|
version_requirements: !ruby/object:Gem::Requirement
|
163
177
|
requirements:
|
164
|
-
- -
|
178
|
+
- - ">="
|
165
179
|
- !ruby/object:Gem::Version
|
166
180
|
version: '0'
|
167
181
|
- !ruby/object:Gem::Dependency
|
168
|
-
name:
|
182
|
+
name: tubesock
|
183
|
+
requirement: !ruby/object:Gem::Requirement
|
184
|
+
requirements:
|
185
|
+
- - ">="
|
186
|
+
- !ruby/object:Gem::Version
|
187
|
+
version: '0'
|
188
|
+
type: :runtime
|
189
|
+
prerelease: false
|
190
|
+
version_requirements: !ruby/object:Gem::Requirement
|
191
|
+
requirements:
|
192
|
+
- - ">="
|
193
|
+
- !ruby/object:Gem::Version
|
194
|
+
version: '0'
|
195
|
+
- !ruby/object:Gem::Dependency
|
196
|
+
name: websocket
|
169
197
|
requirement: !ruby/object:Gem::Requirement
|
170
198
|
requirements:
|
171
|
-
- -
|
199
|
+
- - ">="
|
172
200
|
- !ruby/object:Gem::Version
|
173
201
|
version: '0'
|
174
202
|
type: :runtime
|
175
203
|
prerelease: false
|
176
204
|
version_requirements: !ruby/object:Gem::Requirement
|
177
205
|
requirements:
|
178
|
-
- -
|
206
|
+
- - ">="
|
179
207
|
- !ruby/object:Gem::Version
|
180
208
|
version: '0'
|
181
209
|
description: A web framework built on top of Rack, it has the simplicity of sinatra
|
@@ -198,17 +226,22 @@ files:
|
|
198
226
|
- lib/actionframework/mailer.rb
|
199
227
|
- lib/actionframework/model.rb
|
200
228
|
- lib/actionframework/modelhelper.rb
|
229
|
+
- lib/actionframework/nextcontroller.rb
|
201
230
|
- lib/actionframework/plugables.rb
|
202
231
|
- lib/actionframework/plugmod.rb
|
232
|
+
- lib/actionframework/project.rb
|
203
233
|
- lib/actionframework/rackup.rb
|
204
234
|
- lib/actionframework/realtime.rb
|
235
|
+
- lib/actionframework/realtime_controller.rb
|
205
236
|
- lib/actionframework/realtime_message.rb
|
206
237
|
- lib/actionframework/realtime_socket.rb
|
207
238
|
- lib/actionframework/routes.rb
|
208
239
|
- lib/actionframework/settings.rb
|
209
240
|
- lib/actionframework/string.rb
|
241
|
+
- lib/actionframework/template_manager.rb
|
210
242
|
- lib/actionframework/untitled
|
211
243
|
- resources/config/auth.rb
|
244
|
+
- resources/config/realtime.rb
|
212
245
|
- resources/project_template/Gemfile
|
213
246
|
- resources/project_template/authentication/README.md
|
214
247
|
- resources/project_template/config.ru
|
@@ -239,19 +272,18 @@ require_paths:
|
|
239
272
|
- lib
|
240
273
|
required_ruby_version: !ruby/object:Gem::Requirement
|
241
274
|
requirements:
|
242
|
-
- -
|
275
|
+
- - ">="
|
243
276
|
- !ruby/object:Gem::Version
|
244
277
|
version: '0'
|
245
278
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
246
279
|
requirements:
|
247
|
-
- -
|
280
|
+
- - ">="
|
248
281
|
- !ruby/object:Gem::Version
|
249
282
|
version: '0'
|
250
283
|
requirements: []
|
251
284
|
rubyforge_project:
|
252
|
-
rubygems_version: 2.
|
285
|
+
rubygems_version: 2.3.0
|
253
286
|
signing_key:
|
254
287
|
specification_version: 4
|
255
288
|
summary: A web framework built on top of Rack
|
256
289
|
test_files: []
|
257
|
-
has_rdoc:
|