actionframework 0.2.2 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,7 @@
1
1
  ---
2
- !binary "U0hBMQ==":
3
- metadata.gz: !binary |-
4
- MWFhZWM0YWE5ZGNiNGZmOTliMjFhNWY2NjUzNWJmMGE2NzRjNzRmNA==
5
- data.tar.gz: !binary |-
6
- NDFjZDIwYTFlMWQxNGFiYjAyOWI2MzlhMjJlZDZjZGFkMzU2YWYxMQ==
2
+ SHA1:
3
+ metadata.gz: e567264bb4c4bea8b0995d3732ab73749566b048
4
+ data.tar.gz: 4f4403e202ad4a53f497813a9a69a67a5474e834
7
5
  SHA512:
8
- metadata.gz: !binary |-
9
- NjkyNTlkODJkZDI3MmIyN2IyMTAxNTg5MTlmMTk4ZmQwMDIwZmJmYzA0NjNk
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
@@ -4,7 +4,6 @@ require 'fileutils'
4
4
  require 'actionframework'
5
5
  require 'json'
6
6
  require 'httparty'
7
- require 'minigit'
8
7
 
9
8
  class String
10
9
  def black; "\033[30m#{self}\033[0m" end
@@ -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
- $runningserver.autoimport
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
- Dir.glob("models/*.rb").each do |file|
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
- res.write result
103
- res.finish
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
@@ -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
- controller = Object.const_get(classname).new(env,req,res,url)
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 < Rack::WebSocket::Application
11
-
12
- def initialize
13
- super
14
- @nosocket = true
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
- end
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 env
26
- return exit_me unless @nosocket
27
- @message.post("client_connected",{:env => env,:msg => msg})
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 on_close env
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 on_message env,msg
35
- @message.post("client_message",{:env => env,:msg => msg})
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 exit_me
39
- puts "INFO: No Unix Socket found, your application doesn't implement the realtime API"
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
- @sock = UNIXServer.new("realtime.sock")
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
- puts regex.inspect
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
@@ -0,0 +1,6 @@
1
+ # Configure realtime interface
2
+ # Please don't use the realtime interface yet because it is not functioning yet
3
+
4
+ ActionFramework::Realtime.configure do |c|
5
+ c.enabled :false
6
+ 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.2.2
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-04-30 00:00:00.000000000 Z
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: minigit
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: omniauth
140
+ name: warden
127
141
  requirement: !ruby/object:Gem::Requirement
128
142
  requirements:
129
- - - ~>
143
+ - - ">="
130
144
  - !ruby/object:Gem::Version
131
- version: '1.0'
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: '1.0'
152
+ version: '0'
139
153
  - !ruby/object:Gem::Dependency
140
- name: event_emitter
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: warden
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: actionmailer
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.2.1
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: