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 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: