actionframework 0.1.3.1 → 0.2

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,7 +1,15 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 3879210a859f1a2728b8ca0f2642b4e529fb8ea0
4
- data.tar.gz: d7fc08535d2158912c144b744ffec1b482dc5d04
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ MzkzOWM1OTQ5NzU1MTNkZjczYzk0OTYyY2E1Y2NmOGVlZTJjYTgwYg==
5
+ data.tar.gz: !binary |-
6
+ ZWIyOWE3ZjIxMjg2NGMyNDgyYTkwMDE4YmI1ZGZiNmE5MWIyOTY2Nw==
5
7
  SHA512:
6
- metadata.gz: bfce7e8519dec444747e0c701bc5cae9007ed1e0e8847ee38e8e5ac40d6d138ddea8aa82178566e1d6fed5408517fce8fc11194e4870cc25a77752511372826c
7
- data.tar.gz: 793bdcc2e91e668350e262f05cee9f9986a16a1a2ca859dc771d4043269dc754309592d4cea931e32f158acd01f12cbf9bec716463fe4279d76d9fdc50684101
8
+ metadata.gz: !binary |-
9
+ ZWE5YmRhODNkNjQ2ZjM2MGYwNDJkMWQ4Yzc3YTk5MTAzODM1ZTkxZmZhZTFj
10
+ ZDBiOGQ3YTg5M2VjYzJiMzQzM2IzNmY4N2UxMGFmNzRlOWMwNGRkN2JhMTZj
11
+ NzAwNGU0ODIzNTA1MTgyODVjYzkxZWY1NGYwOGM3OWNhZDUxZmU=
12
+ data.tar.gz: !binary |-
13
+ YTY2MmIxYjA0N2M1Y2JmYWJkMDI3MjgzNDEzYmU2Y2I4Y2ZkZWZmMWE3YTlh
14
+ NDc5NjY2Zjg2M2Y4NTU4ZWM4NDMzNzc3OTJlNzEzOWNiNWUxNDA5ODViMmIw
15
+ MzlmMGEzZWM3ZmVmZThhNTVkZWFlNWI0NmM0NmFmNGM4YTZlZTM=
data/bin/action CHANGED
@@ -4,6 +4,7 @@ require 'fileutils'
4
4
  require 'actionframework'
5
5
  require 'json'
6
6
  require 'httparty'
7
+ require 'minigit'
7
8
 
8
9
  class String
9
10
  def black; "\033[30m#{self}\033[0m" end
@@ -33,30 +34,14 @@ class ActionFrameworkCLI < Optitron::CLI
33
34
  end
34
35
  desc "Create ActionFramework project"
35
36
  def new projectname
36
- puts "Creating project directory and structure"
37
+ puts "Creating project directory"
37
38
  Dir.mkdir("#{projectname}")
38
- Dir.mkdir("#{projectname}/controllers")
39
- Dir.mkdir("#{projectname}/models")
40
- Dir.mkdir("#{projectname}/views")
41
- Dir.mkdir("#{projectname}/config")
42
- Dir.mkdir("#{projectname}/static")
43
- Dir.mkdir("#{projectname}/initializers")
44
- FileUtils.touch("#{projectname}/views/layout.html.erb")
45
- FileUtils.touch("#{projectname}/Gemfile")
46
- File.write("#{projectname}/main.rb","# Example of basic configuration\nActionFramework = ActionFramework::Server.new\n\nnActionFramework.autoimport\nActionFramework.start")
47
- File.write("#{projectname}/controllers/default_controller.rb","class DefaultController < ActionFramework::Controller
48
- \n def index\n erb \"index\" \n end\nend");
49
- File.write("#{projectname}/routes.json","{\n \"get\": [{\n \"/\": \"DefaultController#index\"\n}]\n}")
50
- File.write("#{projectname}/config/routes.rb","ActionFramework::Server.current.routes do\n\n get \"/\" => \"DefaultController#index\"\n\nend")
51
- File.write("#{projectname}/config/settings.rb","ActionFramework::Server.current.settings do |s|\n\nend")
52
- File.write("#{projectname}/Gemfile","source 'https://rubygems.org'\n\ngem 'actionframework'")
53
- File.write("#{projectname}/config.ru","require 'actionframework'\n\nrun ActionFramework::Base.new")
54
- File.write("#{projectname}/config/plugables.rb","# Feature under development")
55
- File.write("#{projectname}/views/layout.html.erb",File.read(ActionFramework::Gem.root.resources.templates("layout.html.erb").to_s))
56
- File.write("#{projectname}/views/index.html.erb",File.read(ActionFramework::Gem.root.resources.templates("index.html.erb").to_s))
39
+ puts "Copying project template"
40
+ path = ActionFramework::Gem.root.resources.project_template.to_s
41
+ FileUtils.cp_r(Dir.glob(path+"/*"),"#{projectname}")
57
42
  system("cd #{projectname} && bundle install")
58
43
  puts "Done"
59
- puts "Run \"action s\" to run your app"
44
+ puts "Run \"rackup\" to run your app"
60
45
  end
61
46
 
62
47
  desc "Start ActionFramework server"
@@ -74,30 +59,29 @@ class ActionFrameworkCLI < Optitron::CLI
74
59
  end
75
60
 
76
61
  desc "Install Stock plugables and add sources list"
77
- def install_plugables
78
- puts "Creating plugables directory".blue
79
- puts "Downloading plugables sources list...".blue
62
+ def init
80
63
  Dir.mkdir(Dir.home+"/.actionframework/")
81
- Dir.mkdir(Dir.home+"/.actionframework/plugables/")
82
- Dir.mkdir(Dir.home+"/.actionframework/plugables/sources/")
83
- Dir.mkdir(Dir.home+"/.actionframework/plugables/plugs/")
84
-
85
- begin
86
- plugables = HTTParty.get("https://raw.github.com/actionframework/plubables/master/sources.json").body
87
- File.write(Dir.home+"/.actionframework/plugables/sources/list.json",plugables)
88
- puts "Downloading stock plugables...".blue
89
- plugables["stock"].each do |plugable|
90
- puts "Downloading ".plugable["name"]+"..."
91
- source = HTTParty.get("https://raw.github.com/actionframework/plugables/master/plugs/"+plugable["name"]+".rb").body
92
- File.write(Dir.home+"/.actionframework/plugables/plugs/"+plugable["name"],source)
93
- end
94
- rescue Exception => e
95
- puts "ERROR: Something went wrong".red
96
- puts "ERROR: "+e.message.red
97
- puts "LOG: "+e.backtrace.inspect
98
- end
99
- puts "Done".green
64
+ MiniGit.git(:clone ,"https://github.com/actionframework/plugables ~/.actionframework/plugables/")
100
65
  end
66
+
67
+ desc "Update plugables"
68
+ def update
69
+ git = MiniGit.new(Dir.home+"/.actionframework/plugables")
70
+ git.pull
71
+ end
72
+
73
+ desc "Generate command - see action g help"
74
+ def g command
75
+ case command;
76
+ when "help"
77
+ puts "action g authentication # Generates neccesary files for authentication"
78
+ when "authentication"
79
+ puts "Generation of neccesary files".green
80
+
81
+ else
82
+ puts "Undefined command #{command}"
83
+ end
84
+ end
101
85
  end
102
86
 
103
87
  ActionFrameworkCLI.dispatch
@@ -0,0 +1,9 @@
1
+ module ActionFramework
2
+ module Authentication
3
+ class Strategy
4
+ def self.load(strategyname)
5
+ require "./authentication/#{strategyname}"
6
+ end
7
+ end
8
+ end
9
+ end
@@ -2,11 +2,16 @@
2
2
  # Licenced under MIT ##
3
3
  ### © BramVDB.com #####
4
4
  #######################
5
+ require 'warden'
6
+
5
7
  module ActionFramework
6
8
  # Base class (in config.ru -> run ActionFramework::Base.new)
7
9
  class Base
8
10
  def initialize
9
11
  @app = Rack::Builder.new do
12
+ # Initialize ActionFramework itself
13
+ ActionFramework::Server.current
14
+
10
15
  map '/static' do
11
16
  run Rack::File.new("static")
12
17
  end
@@ -15,6 +20,16 @@ module ActionFramework
15
20
  run ActionFramework::Realtime.new
16
21
  end
17
22
 
23
+ use Rack::Session::Cookie, :secret => ActionFramework::Server.current.get_settings.cookie_secret
24
+
25
+ use Warden::Manager do |manager|
26
+ config = File.read('./config/auth.rb')
27
+ manager.failure_app = ActionFramework::Server.current
28
+
29
+ eval config
30
+ end
31
+
32
+ # Run ActionFramework
18
33
  run ActionFramework::Server.current
19
34
  end
20
35
  end
@@ -5,10 +5,15 @@
5
5
 
6
6
  module ActionFramework
7
7
  class Controller
8
- def initialize req,res,url
8
+ def initialize env,req,res,url
9
9
  @req = req
10
10
  @res = res
11
11
  @url = url
12
+ @env = env
13
+ end
14
+
15
+ def env
16
+ @env
12
17
  end
13
18
 
14
19
  def request
@@ -47,7 +52,6 @@ module ActionFramework
47
52
  else
48
53
  root = ActionFramework::Gem.root
49
54
  libdir = root.resources.to_s
50
- puts ActionFramework::Gem.root.inspect
51
55
  renderer = Tilt::ERBTemplate.new(libdir+"/views/errors/layout.html.erb")
52
56
  output = renderer.render(self){ Tilt::ERBTemplate.new(libdir+"/views/errors/#{code}.html.erb").render(self) }
53
57
  end
@@ -56,5 +60,10 @@ module ActionFramework
56
60
  def session
57
61
  @req.session
58
62
  end
63
+
64
+ def redirect path
65
+ response.redirect path
66
+ ""
67
+ end
59
68
  end
60
69
  end
@@ -0,0 +1,20 @@
1
+ #######################
2
+ # Licenced under MIT ##
3
+ ### © BramVDB.com #####
4
+ #######################
5
+
6
+ module ActionFramework
7
+ class Model
8
+ include EventEmitter
9
+
10
+ def update_attributes data
11
+ super
12
+ self.emit :updated_attributes,data
13
+ end
14
+
15
+ def self.create data
16
+ super
17
+ self.emit :created,data
18
+ end
19
+ end
20
+ end
@@ -1,23 +1,41 @@
1
1
  module ActionFramework
2
2
  class ModelHelper
3
- def self.post model,res
4
- response = model.create(JSON.parse(req.body.string)).to_json
5
- res.write response
3
+ def self.post model,req,res
4
+ if(model.create?)
5
+ response = model.create(JSON.parse(req.body.read)).to_json
6
+ res.body = [response]
7
+ else
8
+ error_403 res
9
+ end
6
10
  res.finish
7
11
  end
8
12
 
9
13
  def self.get model,res
10
- response = model.all.to_json
11
- res.write response
14
+ if(model.fetch?)
15
+ response = model.all.to_json
16
+ res.body = [response]
17
+ else
18
+ error_403 res
19
+ end
20
+ puts res.inspect
12
21
  res.finish
13
22
  end
14
23
 
15
24
  def self.update model,res
16
- doc = JSON.parse(req.body.string)
17
- modelfind = model.where(doc[:where])
18
- response = modelfind.update_attributes(doc[:attributes]).to_json
19
- res.write response
25
+ if(model.update?)
26
+ doc = JSON.parse(req.body.string)
27
+ modelfind = model.where(doc[:where])
28
+ response = modelfind.update_attributes(doc[:attributes]).to_json
29
+ res.body = [response]
30
+ else
31
+ error_403 res
32
+ end
20
33
  res.finish
21
34
  end
35
+
36
+ def self.error_403 res
37
+ res.status = 404
38
+ res.write({:error => "403 Forbidden"}.to_json)
39
+ end
22
40
  end
23
41
  end
@@ -3,12 +3,40 @@
3
3
  ### © BramVDB.com #####
4
4
  #######################
5
5
  require 'rack/websocket'
6
+ require 'socket'
7
+ require 'json'
6
8
 
7
9
  module ActionFramework
8
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
21
+
22
+ end
23
+ end
24
+
9
25
  def on_open env
26
+ return exit_me unless @nosocket
27
+ @message.post("client_connected",{:env => env,:msg => msg})
28
+ end
29
+
30
+ def on_close env
10
31
 
11
- puts "Client connected"
32
+ end
33
+
34
+ def on_message env,msg
35
+ @message.post("client_message",{:env => env,:msg => msg})
36
+ end
37
+
38
+ def exit_me
39
+ puts "INFO: No Unix Socket found, your application doesn't implement the realtime API"
12
40
  end
13
41
  end
14
42
  end
@@ -0,0 +1,13 @@
1
+ require 'json'
2
+
3
+ module ActionFramework
4
+ class RealtimeMessage
5
+ def initialize(socket)
6
+ @sock = socket
7
+ end
8
+
9
+ def post identifier,payload
10
+ @sock.puts({:identifier => identifier,:payload => payload}.to_json)
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,20 @@
1
+ require 'socket'
2
+ require 'securerandom'
3
+
4
+ module ActionFramework
5
+ class RealtimeSocket
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
18
+ end
19
+ end
20
+ end
@@ -2,14 +2,18 @@
2
2
  # Licenced under MIT ##
3
3
  ### © BramVDB.com #####
4
4
  #######################
5
+ require 'ostruct'
5
6
 
6
7
  module ActionFramework
7
8
  class Routes
8
9
  attr_accessor :routes
9
10
  attr_accessor :models
11
+ attr_accessor :redirects
10
12
 
11
13
  def initialize
12
14
  @routes = {:get => {}, :post => {}, :update => {}, :delete => {}, :patch => {}}
15
+ @models = []
16
+ @redirects = []
13
17
  end
14
18
 
15
19
  def build_regex string
@@ -41,20 +45,41 @@ module ActionFramework
41
45
  @routes[:patch][build_regex(hash.keys.first.to_s)] = hash[hash.keys.first.to_s]
42
46
  end
43
47
 
44
- def model hash
48
+ def model name
45
49
  # @models[name of the class of the model] = name of class of the access policy of the model
46
- @models[hash.keys.first_to.s] = hash[hash.keys.first.to_s]
50
+ @models << name
47
51
  end
48
52
 
49
53
  def route(path,method)
50
54
  @routes[method.downcase.to_sym].each do |regex,controller|
51
- puts regex
52
- p regex
55
+ puts regex.inspect
56
+
53
57
  if(matched = path.match(regex))
54
58
  return [controller,matched]
55
59
  end
56
60
  end
57
61
  return nil
58
62
  end
63
+
64
+ def redirect(hash)
65
+ hash[:from] = build_regex(hash[:from])
66
+ @redirects << hash
67
+ end
68
+
69
+ def redirect? (req)
70
+ @redirects.each do |redirect|
71
+ if(matched = req.path.match(redirect[:from]))
72
+ begin
73
+ matched.names.each do |key|
74
+ redirect[:to] = redirect[:to].gsub("{{#{key}}}",matched[key])
75
+ end
76
+ rescue Exception => e
77
+ end
78
+ return OpenStruct.new(redirect)
79
+ end
80
+ end
81
+ nil
82
+ end
83
+
59
84
  end
60
85
  end
@@ -3,6 +3,7 @@ module ActionFramework
3
3
  attr_accessor :server
4
4
  attr_accessor :port
5
5
  attr_accessor :errorhandler
6
+ attr_accessor :cookie_secret
6
7
 
7
8
  def initialize
8
9
  @port = 3000
@@ -13,6 +13,8 @@ require 'actionframework/error_handler'
13
13
  require 'actionframework/modelhelper'
14
14
  require 'actionframework/realtime'
15
15
  require 'actionframework/base'
16
+ require 'actionframework/authentication'
17
+ require 'event_emitter'
16
18
 
17
19
  $runningserver = nil
18
20
 
@@ -41,11 +43,11 @@ module ActionFramework
41
43
  end
42
44
 
43
45
  def autoimport
44
- Dir.glob("controllers/*").each do |file|
46
+ Dir.glob("controllers/*.rb").each do |file|
45
47
  require './'+file
46
48
  end
47
49
 
48
- Dir.glob("models/*").each do |file|
50
+ Dir.glob("models/*.rb").each do |file|
49
51
  require './'+file
50
52
  end
51
53
 
@@ -53,7 +55,7 @@ module ActionFramework
53
55
  require './config/settings'
54
56
  require './config/plugables'
55
57
 
56
- Dir.glob("initializers/*").each do |file|
58
+ Dir.glob("initializers/*.rb").each do |file|
57
59
  require './'+file
58
60
  end
59
61
 
@@ -63,12 +65,23 @@ module ActionFramework
63
65
  req = Rack::Request.new(env)
64
66
  res = Rack::Response.new
65
67
 
68
+ # redirection
69
+ redirect = @routesklass.redirect? req
70
+ if(!redirect.nil?)
71
+ res.redirect(redirect.to)
72
+ return res.finish
73
+ end
74
+
75
+
66
76
  # auto-api feature (only at path /api/*)
67
- getModelResponse req,res
77
+ reso = getModelResponse(req,res)
78
+ if(!reso.nil?)
79
+ return reso
80
+ end
68
81
 
69
82
  controllerinfo = @routesklass.route(req.path,req.request_method)
70
83
  if(controllerinfo == nil)
71
- res.body = [ActionFramework::ErrorHandler.new(req,res,{}).send("error_404")]
84
+ res.body = [ActionFramework::ErrorHandler.new(env,req,res,{}).send("error_404")]
72
85
  res.status = 404
73
86
  return res.finish
74
87
  end
@@ -77,8 +90,8 @@ module ActionFramework
77
90
  matcheddata = controllerinfo[1]
78
91
 
79
92
  control = controller.split("#")
80
- result = Object.const_get(control[0]).new(req,res,matcheddata).send(control[1])
81
- res.body = [result]
93
+ result = Object.const_get(control[0]).new(env,req,res,matcheddata).send(control[1])
94
+ res.write result
82
95
  res.finish
83
96
  end
84
97
  def routes &block
@@ -89,35 +102,36 @@ module ActionFramework
89
102
  yield @settings
90
103
  end
91
104
 
105
+ def get_settings
106
+ @settings
107
+ end
108
+
92
109
  def start
93
110
  Rack::Server.new({:app => self,:server => @settings.server, :Port => @settings.port}).start
94
111
  end
95
112
 
96
113
  def getModelResponse req,res
97
- # auto-api start
98
- # [todo] add api security with policies
99
- if(matcheddate = req.path.match(Regexp.new("^/api/(?<modelname>(.*))$")))
100
- policy = @routesklass.models[matcheddata[:modelname]]
101
- if(policy != nil)
102
- res.headers = {"Content-type" => "application/json"}
103
- model = Object.const_get(matcheddata[:modelname])
114
+ if(matcheddata = req.path.match(Regexp.new("/api/(?<modelname>(.*))")))
115
+ return nil unless @routesklass.models.include?(matcheddata[:modelname])
116
+
117
+ res["Content-type"] = "application/json"
118
+ model = Object.const_get(matcheddata[:modelname].capitalize)
119
+ model.instance_variable_set("@req",req)
120
+
104
121
  case req.request_method
105
122
  when "POST"
106
- ActionFramework::ModelHelper.post model,res
123
+ return ActionFramework::ModelHelper.post model,req,res
107
124
  when "GET"
108
- ActionFramework::ModelHelper.get model,res
125
+ return ActionFramework::ModelHelper.get model,res
109
126
  when "UPDATE"
110
- ActionFramework::ModelHelper.update model,res
127
+ return ActionFramework::ModelHelper.update model,res
111
128
  when "DELETE"
112
129
 
113
130
  else
114
131
 
115
132
  end
116
-
117
- end
118
133
  end
119
- # end auto-api
134
+ nil
120
135
  end
121
-
122
136
  end
123
137
  end
@@ -0,0 +1 @@
1
+ # Paste your Omniauth providers here (more information: https://github.com/intridea/omniauth/wiki)
@@ -0,0 +1,3 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gem 'actionframework', :git => "https://www.github.com/actionframework/actionframework"
@@ -0,0 +1,9 @@
1
+ Authentication
2
+ ===================
3
+
4
+ The files in this directory can be Warden strategies, Warden is the built-in authentication framework.
5
+
6
+ The strategies can be loaded with the following code from an initializer.
7
+
8
+ ActionFramework::Authentication::Strategy.load("yourstrategy")
9
+
@@ -0,0 +1,15 @@
1
+ # Add your Warden configuration here
2
+ # Example:
3
+ # manager.default_strategies :password
4
+
5
+ # To load your strategies from #{PROJECT_ROOT}/authentication/yourstrategy.rb use:
6
+ # ActionFramework::Authentication::Strategy.load("yourstrategy")
7
+
8
+ # You also need to setup your session serialisation:
9
+ # Warden::Manager.serialize_into_session do |user|
10
+ # user.id
11
+ # end
12
+ #
13
+ # Warden::Manager.serialize_from_session do |id|
14
+ # User.get(id)
15
+ # end
@@ -0,0 +1 @@
1
+ # Feature under development
@@ -0,0 +1,5 @@
1
+ ActionFramework::Server.current.routes do
2
+
3
+ get "/" => "DefaultController#index"
4
+
5
+ end
@@ -0,0 +1,3 @@
1
+ ActionFramework::Server.current.settings do |s|
2
+ s.cookie_secret = "CHANGE_ME"
3
+ end
@@ -0,0 +1,3 @@
1
+ require 'actionframework'
2
+
3
+ run ActionFramework::Base.new
@@ -0,0 +1,6 @@
1
+ class DefaultController < ActionFramework::Controller
2
+
3
+ def index
4
+ erb "index"
5
+ end
6
+ end
@@ -0,0 +1,6 @@
1
+ Initializers
2
+ ================
3
+
4
+ All ruby files in this directory are loaded by ActionFramework at runtime after your settings and routes were loaded.
5
+
6
+ You can put database connection initializers in here for example.
File without changes
File without changes
@@ -0,0 +1,12 @@
1
+ <img src="http://actionframework.io/rocket.png" style="height: 200px;"/>
2
+ <h1>WELCOME TO ACTIONFRAMEWORK</h1>
3
+ <p>This is the default welcome page, add a new route by:</p>
4
+ <pre>
5
+ <code>
6
+ # In config/routes.rb
7
+ ActionFramework::Server.current.routes do
8
+ get "/" => "DefaultController#index" # This route
9
+ get "/mynewroute" = "MyNewController#index" # Your new route!
10
+ end
11
+ </code>
12
+ </pre>
@@ -0,0 +1,24 @@
1
+ <html>
2
+ <head>
3
+ <link rel="stylesheet" href="http://yandex.st/highlightjs/7.5/styles/default.min.css">
4
+ <script src="http://yandex.st/highlightjs/7.5/highlight.min.js"></script>
5
+ <script>hljs.initHighlightingOnLoad();</script>
6
+ <title>Welcome to ActionFramework</title>
7
+ <link href="http://fonts.googleapis.com/css?family=Oswald:400,700" rel="stylesheet" type="text/css">
8
+ <style>
9
+ body{
10
+ background-color: black;
11
+ color: white;
12
+ font-family: 'Oswald', sans-serif;
13
+ }
14
+ p{
15
+ font-size: 20px;
16
+ }
17
+ </style>
18
+ </head>
19
+ <body>
20
+ <center>
21
+ <%= yield %>
22
+ </center>
23
+ </body>
24
+ </html>
@@ -1,7 +1,7 @@
1
1
  <img src="http://actionframework.io/rocket.png" style="height: 200px;"/>
2
2
  <h1>WELCOME TO ACTIONFRAMEWORK</h1>
3
3
  <p>This is the default welcome page, add a new route by:</p>
4
- <pre>
4
+ <pre style="text-align: left;margin: auto;width: 60%;">
5
5
  <code>
6
6
  # In config/routes.rb
7
7
  ActionFramework::Server.current.routes do
metadata CHANGED
@@ -1,111 +1,167 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: actionframework
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3.1
4
+ version: '0.2'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bram Vandenbogaerde
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-11-20 00:00:00.000000000 Z
11
+ date: 2014-03-01 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
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: minigit
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ! '>='
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :runtime
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ! '>='
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: omniauth
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ~>
130
+ - !ruby/object:Gem::Version
131
+ version: '1.0'
132
+ type: :runtime
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ~>
137
+ - !ruby/object:Gem::Version
138
+ version: '1.0'
139
+ - !ruby/object:Gem::Dependency
140
+ name: event_emitter
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - ! '>='
144
+ - !ruby/object:Gem::Version
145
+ version: '0'
146
+ type: :runtime
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - ! '>='
151
+ - !ruby/object:Gem::Version
152
+ version: '0'
153
+ - !ruby/object:Gem::Dependency
154
+ name: warden
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - ! '>='
158
+ - !ruby/object:Gem::Version
159
+ version: '0'
160
+ type: :runtime
161
+ prerelease: false
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - ! '>='
109
165
  - !ruby/object:Gem::Version
110
166
  version: '0'
111
167
  description: A web framework built on top of Rack, it has the simplicity of sinatra
@@ -116,25 +172,43 @@ executables:
116
172
  extensions: []
117
173
  extra_rdoc_files: []
118
174
  files:
175
+ - bin/action
176
+ - lib/actionframework.rb
177
+ - lib/actionframework/authentication.rb
119
178
  - lib/actionframework/base.rb
120
179
  - lib/actionframework/controller.rb
121
180
  - lib/actionframework/error_handler.rb
122
181
  - lib/actionframework/gem.rb
123
182
  - lib/actionframework/gemextra.rb
183
+ - lib/actionframework/model.rb
124
184
  - lib/actionframework/modelhelper.rb
125
185
  - lib/actionframework/plugables.rb
126
186
  - lib/actionframework/plugmod.rb
127
187
  - lib/actionframework/rackup.rb
128
188
  - lib/actionframework/realtime.rb
189
+ - lib/actionframework/realtime_message.rb
190
+ - lib/actionframework/realtime_socket.rb
129
191
  - lib/actionframework/routes.rb
130
192
  - lib/actionframework/settings.rb
131
193
  - lib/actionframework/string.rb
132
- - lib/actionframework.rb
194
+ - resources/config/auth.rb
195
+ - resources/project_template/Gemfile
196
+ - resources/project_template/authentication/README.md
197
+ - resources/project_template/config.ru
198
+ - resources/project_template/config/auth.rb
199
+ - resources/project_template/config/plugables.rb
200
+ - resources/project_template/config/routes.rb
201
+ - resources/project_template/config/settings.rb
202
+ - resources/project_template/controllers/default_controller.rb
203
+ - resources/project_template/initializers/README.md
204
+ - resources/project_template/models/README.md
205
+ - resources/project_template/static/README.md
206
+ - resources/project_template/views/index.html.erb
207
+ - resources/project_template/views/layout.html.erb
133
208
  - resources/templates/index.html.erb
134
209
  - resources/templates/layout.html.erb
135
210
  - resources/views/errors/404.html.erb
136
211
  - resources/views/errors/layout.html.erb
137
- - bin/action
138
212
  homepage: http://actionframework.io
139
213
  licenses:
140
214
  - MIT
@@ -145,17 +219,17 @@ require_paths:
145
219
  - lib
146
220
  required_ruby_version: !ruby/object:Gem::Requirement
147
221
  requirements:
148
- - - '>='
222
+ - - ! '>='
149
223
  - !ruby/object:Gem::Version
150
224
  version: '0'
151
225
  required_rubygems_version: !ruby/object:Gem::Requirement
152
226
  requirements:
153
- - - '>='
227
+ - - ! '>='
154
228
  - !ruby/object:Gem::Version
155
229
  version: '0'
156
230
  requirements: []
157
231
  rubyforge_project:
158
- rubygems_version: 2.0.3
232
+ rubygems_version: 2.2.1
159
233
  signing_key:
160
234
  specification_version: 4
161
235
  summary: A web framework built on top of Rack