cramp 0.11 → 0.12

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.
Files changed (38) hide show
  1. data/lib/cramp.rb +12 -1
  2. data/lib/cramp/abstract.rb +72 -0
  3. data/lib/cramp/action.rb +12 -0
  4. data/lib/cramp/body.rb +48 -0
  5. data/lib/cramp/callbacks.rb +48 -0
  6. data/lib/cramp/keep_connection_alive.rb +19 -0
  7. data/lib/cramp/periodic_timer.rb +49 -0
  8. data/lib/cramp/rendering.rb +11 -0
  9. data/lib/cramp/test_case.rb +54 -0
  10. data/lib/cramp/websocket.rb +84 -0
  11. data/lib/cramp/{controller/websocket → websocket}/rainbows_backend.rb +1 -1
  12. data/lib/cramp/{controller/websocket → websocket}/thin_backend.rb +1 -1
  13. metadata +37 -86
  14. data/lib/cramp/controller.rb +0 -15
  15. data/lib/cramp/controller/abstract.rb +0 -71
  16. data/lib/cramp/controller/action.rb +0 -14
  17. data/lib/cramp/controller/body.rb +0 -50
  18. data/lib/cramp/controller/callbacks.rb +0 -50
  19. data/lib/cramp/controller/keep_connection_alive.rb +0 -21
  20. data/lib/cramp/controller/periodic_timer.rb +0 -51
  21. data/lib/cramp/controller/rendering.rb +0 -13
  22. data/lib/cramp/controller/test_case.rb +0 -57
  23. data/lib/cramp/controller/websocket.rb +0 -63
  24. data/lib/cramp/model.rb +0 -40
  25. data/lib/cramp/model/arel_monkey_patches.rb +0 -66
  26. data/lib/cramp/model/attribute.rb +0 -104
  27. data/lib/cramp/model/attribute_methods.rb +0 -83
  28. data/lib/cramp/model/base.rb +0 -119
  29. data/lib/cramp/model/callbacks.rb +0 -41
  30. data/lib/cramp/model/column.rb +0 -72
  31. data/lib/cramp/model/emysql_ext.rb +0 -21
  32. data/lib/cramp/model/engine.rb +0 -75
  33. data/lib/cramp/model/engine/connection.rb +0 -32
  34. data/lib/cramp/model/evented_mysql.rb +0 -298
  35. data/lib/cramp/model/finders.rb +0 -27
  36. data/lib/cramp/model/quoting.rb +0 -104
  37. data/lib/cramp/model/relation.rb +0 -62
  38. data/lib/cramp/model/status.rb +0 -18
metadata CHANGED
@@ -1,11 +1,12 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cramp
3
3
  version: !ruby/object:Gem::Version
4
- prerelease: false
4
+ hash: 19
5
+ prerelease:
5
6
  segments:
6
7
  - 0
7
- - 11
8
- version: "0.11"
8
+ - 12
9
+ version: "0.12"
9
10
  platform: ruby
10
11
  authors:
11
12
  - Pratik Naik
@@ -13,96 +14,58 @@ autorequire:
13
14
  bindir: bin
14
15
  cert_chain: []
15
16
 
16
- date: 2010-05-11 00:00:00 +01:00
17
+ date: 2011-02-13 00:00:00 +00:00
17
18
  default_executable:
18
19
  dependencies:
19
20
  - !ruby/object:Gem::Dependency
20
21
  name: activesupport
21
22
  prerelease: false
22
23
  requirement: &id001 !ruby/object:Gem::Requirement
24
+ none: false
23
25
  requirements:
24
26
  - - ~>
25
27
  - !ruby/object:Gem::Version
28
+ hash: 15
26
29
  segments:
27
30
  - 3
28
31
  - 0
29
- - 0
30
- - beta3
31
- version: 3.0.0.beta3
32
+ - 4
33
+ version: 3.0.4
32
34
  type: :runtime
33
35
  version_requirements: *id001
34
- - !ruby/object:Gem::Dependency
35
- name: activemodel
36
- prerelease: false
37
- requirement: &id002 !ruby/object:Gem::Requirement
38
- requirements:
39
- - - ~>
40
- - !ruby/object:Gem::Version
41
- segments:
42
- - 3
43
- - 0
44
- - 0
45
- - beta3
46
- version: 3.0.0.beta3
47
- type: :runtime
48
- version_requirements: *id002
49
- - !ruby/object:Gem::Dependency
50
- name: arel
51
- prerelease: false
52
- requirement: &id003 !ruby/object:Gem::Requirement
53
- requirements:
54
- - - "="
55
- - !ruby/object:Gem::Version
56
- segments:
57
- - 0
58
- - 3
59
- - 3
60
- version: 0.3.3
61
- type: :runtime
62
- version_requirements: *id003
63
36
  - !ruby/object:Gem::Dependency
64
37
  name: rack
65
38
  prerelease: false
66
- requirement: &id004 !ruby/object:Gem::Requirement
67
- requirements:
68
- - - ~>
69
- - !ruby/object:Gem::Version
70
- segments:
71
- - 1
72
- - 1
73
- - 0
74
- version: 1.1.0
75
- type: :runtime
76
- version_requirements: *id004
77
- - !ruby/object:Gem::Dependency
78
- name: mysqlplus
79
- prerelease: false
80
- requirement: &id005 !ruby/object:Gem::Requirement
39
+ requirement: &id002 !ruby/object:Gem::Requirement
40
+ none: false
81
41
  requirements:
82
42
  - - ~>
83
43
  - !ruby/object:Gem::Version
44
+ hash: 29
84
45
  segments:
85
- - 0
86
46
  - 1
47
+ - 2
87
48
  - 1
88
- version: 0.1.1
49
+ version: 1.2.1
89
50
  type: :runtime
90
- version_requirements: *id005
51
+ version_requirements: *id002
91
52
  - !ruby/object:Gem::Dependency
92
53
  name: eventmachine
93
54
  prerelease: false
94
- requirement: &id006 !ruby/object:Gem::Requirement
55
+ requirement: &id003 !ruby/object:Gem::Requirement
56
+ none: false
95
57
  requirements:
96
58
  - - ~>
97
59
  - !ruby/object:Gem::Version
60
+ hash: 59
98
61
  segments:
99
62
  - 0
100
63
  - 12
101
64
  - 10
102
65
  version: 0.12.10
103
66
  type: :runtime
104
- version_requirements: *id006
105
- description: " Cramp provides ORM and controller layers for developing asynchronous web applications.\n"
67
+ version_requirements: *id003
68
+ description: Cramp is a framework for developing asynchronous web applications.
106
69
  email: pratiknaik@gmail.com
107
70
  executables: []
108
71
 
@@ -112,33 +75,17 @@ extra_rdoc_files: []
112
75
 
113
76
  files:
114
77
  - MIT-LICENSE
115
- - lib/cramp/controller/abstract.rb
116
- - lib/cramp/controller/action.rb
117
- - lib/cramp/controller/body.rb
118
- - lib/cramp/controller/callbacks.rb
119
- - lib/cramp/controller/keep_connection_alive.rb
120
- - lib/cramp/controller/periodic_timer.rb
121
- - lib/cramp/controller/rendering.rb
122
- - lib/cramp/controller/test_case.rb
123
- - lib/cramp/controller/websocket/rainbows_backend.rb
124
- - lib/cramp/controller/websocket/thin_backend.rb
125
- - lib/cramp/controller/websocket.rb
126
- - lib/cramp/controller.rb
127
- - lib/cramp/model/arel_monkey_patches.rb
128
- - lib/cramp/model/attribute.rb
129
- - lib/cramp/model/attribute_methods.rb
130
- - lib/cramp/model/base.rb
131
- - lib/cramp/model/callbacks.rb
132
- - lib/cramp/model/column.rb
133
- - lib/cramp/model/emysql_ext.rb
134
- - lib/cramp/model/engine/connection.rb
135
- - lib/cramp/model/engine.rb
136
- - lib/cramp/model/evented_mysql.rb
137
- - lib/cramp/model/finders.rb
138
- - lib/cramp/model/quoting.rb
139
- - lib/cramp/model/relation.rb
140
- - lib/cramp/model/status.rb
141
- - lib/cramp/model.rb
78
+ - lib/cramp/abstract.rb
79
+ - lib/cramp/action.rb
80
+ - lib/cramp/body.rb
81
+ - lib/cramp/callbacks.rb
82
+ - lib/cramp/keep_connection_alive.rb
83
+ - lib/cramp/periodic_timer.rb
84
+ - lib/cramp/rendering.rb
85
+ - lib/cramp/test_case.rb
86
+ - lib/cramp/websocket/rainbows_backend.rb
87
+ - lib/cramp/websocket/thin_backend.rb
88
+ - lib/cramp/websocket.rb
142
89
  - lib/cramp.rb
143
90
  has_rdoc: true
144
91
  homepage: http://m.onkey.org
@@ -150,25 +97,29 @@ rdoc_options: []
150
97
  require_paths:
151
98
  - lib
152
99
  required_ruby_version: !ruby/object:Gem::Requirement
100
+ none: false
153
101
  requirements:
154
102
  - - ">="
155
103
  - !ruby/object:Gem::Version
104
+ hash: 3
156
105
  segments:
157
106
  - 0
158
107
  version: "0"
159
108
  required_rubygems_version: !ruby/object:Gem::Requirement
109
+ none: false
160
110
  requirements:
161
111
  - - ">="
162
112
  - !ruby/object:Gem::Version
113
+ hash: 3
163
114
  segments:
164
115
  - 0
165
116
  version: "0"
166
117
  requirements: []
167
118
 
168
119
  rubyforge_project:
169
- rubygems_version: 1.3.6
120
+ rubygems_version: 1.5.2
170
121
  signing_key:
171
122
  specification_version: 3
172
- summary: Async ORM and controller layer.
123
+ summary: Asynchronous web framework.
173
124
  test_files: []
174
125
 
@@ -1,15 +0,0 @@
1
- require 'cramp'
2
- require 'rack'
3
-
4
- module Cramp
5
- module Controller
6
- autoload :Action, "cramp/controller/action"
7
- autoload :Websocket, "cramp/controller/websocket"
8
- autoload :Body, "cramp/controller/body"
9
- autoload :PeriodicTimer, "cramp/controller/periodic_timer"
10
- autoload :KeepConnectionAlive, "cramp/controller/keep_connection_alive"
11
- autoload :Abstract, "cramp/controller/abstract"
12
- autoload :Callbacks, "cramp/controller/callbacks"
13
- autoload :TestCase, "cramp/controller/test_case"
14
- end
15
- end
@@ -1,71 +0,0 @@
1
- require 'active_support/core_ext/hash/keys'
2
-
3
- module Cramp
4
- module Controller
5
- class Abstract
6
-
7
- include Callbacks
8
-
9
- ASYNC_RESPONSE = [-1, {}, []].freeze
10
-
11
- class << self
12
- def call(env)
13
- controller = new(env).process
14
- end
15
- end
16
-
17
- def initialize(env)
18
- @env = env
19
- end
20
-
21
- def process
22
- EM.next_tick { before_start }
23
- ASYNC_RESPONSE
24
- end
25
-
26
- def continue
27
- init_async_body
28
-
29
- status, headers = respond_with
30
- send_initial_response(status, headers, @body)
31
-
32
- EM.next_tick { start } if respond_to?(:start)
33
- EM.next_tick { on_start }
34
- end
35
-
36
- def respond_with
37
- [200, {'Content-Type' => 'text/html'}]
38
- end
39
-
40
- def init_async_body
41
- @body = Body.new
42
-
43
- if self.class.on_finish_callbacks.any?
44
- @body.callback { on_finish }
45
- @body.errback { on_finish }
46
- end
47
- end
48
-
49
- def finish
50
- @body.succeed
51
- end
52
-
53
- def send_initial_response(response_status, response_headers, response_body)
54
- EM.next_tick { @env['async.callback'].call [response_status, response_headers, response_body] }
55
- end
56
-
57
- def halt(status, headers = {}, halt_body = '')
58
- send_initial_response(status, headers, halt_body)
59
- end
60
-
61
- def request
62
- @request ||= Rack::Request.new(@env)
63
- end
64
-
65
- def params
66
- @params ||= request.params.update(@env['usher.params']).symbolize_keys
67
- end
68
-
69
- end
70
- end
71
- end
@@ -1,14 +0,0 @@
1
- module Cramp
2
- module Controller
3
- class Action < Abstract
4
-
5
- include PeriodicTimer
6
- include KeepConnectionAlive
7
-
8
- def render(body)
9
- @body.call(body)
10
- end
11
-
12
- end
13
- end
14
- end
@@ -1,50 +0,0 @@
1
- # Copyright 2008 James Tucker <raggi@rubyforge.org>.
2
-
3
- module Cramp
4
- module Controller
5
- class Body
6
- include EventMachine::Deferrable
7
-
8
- def initialize
9
- @queue = []
10
-
11
- # Make sure to flush out the queue before closing the connection
12
- callback { flush }
13
- end
14
-
15
- def call(body)
16
- @queue << body
17
- schedule_dequeue
18
- end
19
-
20
- def each &blk
21
- @body_callback = blk
22
- schedule_dequeue
23
- end
24
-
25
- def closed?
26
- @deferred_status != :unknown
27
- end
28
-
29
- def flush
30
- return unless @body_callback
31
-
32
- until @queue.empty?
33
- Array(@queue.shift).each {|chunk| @body_callback.call(chunk) }
34
- end
35
- end
36
-
37
- def schedule_dequeue
38
- return unless @body_callback
39
-
40
- EventMachine.next_tick do
41
- next unless body = @queue.shift
42
-
43
- Array(body).each {|chunk| @body_callback.call(chunk) }
44
- schedule_dequeue unless @queue.empty?
45
- end
46
- end
47
-
48
- end
49
- end
50
- end
@@ -1,50 +0,0 @@
1
- module Cramp
2
- module Controller
3
- module Callbacks
4
-
5
- extend ActiveSupport::Concern
6
-
7
- included do
8
- class_inheritable_accessor :before_start_callbacks, :on_finish_callbacks, :on_start_callback, :instance_reader => false
9
- self.before_start_callbacks = []
10
- self.on_finish_callbacks = []
11
- self.on_start_callback = []
12
- end
13
-
14
- module ClassMethods
15
- def before_start(*methods)
16
- self.before_start_callbacks += methods
17
- end
18
-
19
- def on_finish(*methods)
20
- self.on_finish_callbacks += methods
21
- end
22
-
23
- def on_start(*methods)
24
- self.on_start_callback += methods
25
- end
26
- end
27
-
28
- def before_start(n = 0)
29
- if callback = self.class.before_start_callbacks[n]
30
- EM.next_tick { send(callback) { before_start(n+1) } }
31
- else
32
- continue
33
- end
34
- end
35
-
36
- def on_start
37
- self.class.on_start_callback.each do |callback|
38
- EM.next_tick { send(callback) }
39
- end
40
- end
41
-
42
- def on_finish
43
- self.class.on_finish_callbacks.each do |callback|
44
- EM.next_tick { send(callback) }
45
- end
46
- end
47
-
48
- end
49
- end
50
- end
@@ -1,21 +0,0 @@
1
- module Cramp
2
- module Controller
3
- module KeepConnectionAlive
4
-
5
- extend ActiveSupport::Concern
6
- include PeriodicTimer
7
-
8
- module ClassMethods
9
- def keep_connection_alive(options = {})
10
- options = { :every => 15 }.merge(options)
11
- periodic_timer :keep_connection_alive, options
12
- end
13
- end
14
-
15
- def keep_connection_alive
16
- render " "
17
- end
18
-
19
- end
20
- end
21
- end
@@ -1,51 +0,0 @@
1
- module Cramp
2
- module Controller
3
- module PeriodicTimer
4
-
5
- extend ActiveSupport::Concern
6
-
7
- included do
8
- class_inheritable_accessor :periodic_timers, :instance_reader => false
9
- self.periodic_timers ||= []
10
- end
11
-
12
- module ClassMethods
13
- def periodic_timer(method, options = {})
14
- self.periodic_timers << [method, options]
15
- end
16
- end
17
-
18
- def initialize(*)
19
- super
20
- @timers = []
21
- end
22
-
23
- def continue
24
- super
25
- EM.next_tick { start_periodic_timers }
26
- end
27
-
28
- def init_async_body
29
- super
30
-
31
- if self.class.periodic_timers.any?
32
- @body.callback { stop_periodic_timers }
33
- @body.errback { stop_periodic_timers }
34
- end
35
- end
36
-
37
- private
38
-
39
- def start_periodic_timers
40
- self.class.periodic_timers.each do |method, options|
41
- @timers << EventMachine::PeriodicTimer.new(options[:every] || 1) { send(method) }
42
- end
43
- end
44
-
45
- def stop_periodic_timers
46
- @timers.each {|t| t.cancel }
47
- end
48
-
49
- end
50
- end
51
- end