seamless 1.0.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.
Files changed (57) hide show
  1. data/bin/seamless +36 -0
  2. data/lib/seamless.rb +70 -0
  3. data/lib/seamless/active_record_extension.rb +11 -0
  4. data/lib/seamless/dispatcher.rb +45 -0
  5. data/lib/seamless/message_broker.rb +12 -0
  6. data/lib/seamless/message_broker_controller.rb +11 -0
  7. data/lib/seamless/messagebroker/inmemory_message_broker.rb +45 -0
  8. data/lib/seamless/migration.rb +8 -0
  9. data/lib/seamless/model.rb +94 -0
  10. data/lib/seamless/service.rb +186 -0
  11. data/seamless/seamless_generator.rb +181 -0
  12. data/seamless/templates/README +24 -0
  13. data/seamless/templates/admin.html +166 -0
  14. data/seamless/templates/application.rb +7 -0
  15. data/seamless/templates/css/global.css +333 -0
  16. data/seamless/templates/css/seamless-admin.css +281 -0
  17. data/seamless/templates/css/seamless.css +632 -0
  18. data/seamless/templates/environment.rb +65 -0
  19. data/seamless/templates/generate +25 -0
  20. data/seamless/templates/images/arch.png +0 -0
  21. data/seamless/templates/images/arrow_undo.png +0 -0
  22. data/seamless/templates/images/cell_phone.png +0 -0
  23. data/seamless/templates/images/confirm.png +0 -0
  24. data/seamless/templates/images/deny.png +0 -0
  25. data/seamless/templates/images/dialog_close.gif +0 -0
  26. data/seamless/templates/images/dialog_close_hover.gif +0 -0
  27. data/seamless/templates/images/email.png +0 -0
  28. data/seamless/templates/images/exclamation.png +0 -0
  29. data/seamless/templates/images/indicator.gif +0 -0
  30. data/seamless/templates/images/indicator2.gif +0 -0
  31. data/seamless/templates/images/seamless.gif +0 -0
  32. data/seamless/templates/images/shadow.gif +0 -0
  33. data/seamless/templates/images/shadowAlpha.png +0 -0
  34. data/seamless/templates/images/small_star.png +0 -0
  35. data/seamless/templates/images/table_add.png +0 -0
  36. data/seamless/templates/images/table_delete.png +0 -0
  37. data/seamless/templates/images/table_edit.png +0 -0
  38. data/seamless/templates/images/table_go.png +0 -0
  39. data/seamless/templates/images/table_refresh.png +0 -0
  40. data/seamless/templates/images/tag.png +0 -0
  41. data/seamless/templates/images/warning.png +0 -0
  42. data/seamless/templates/images/wizard.gif +0 -0
  43. data/seamless/templates/images/work_phone.png +0 -0
  44. data/seamless/templates/index.html +171 -0
  45. data/seamless/templates/js/seamless-admin.js +255 -0
  46. data/seamless/templates/js/seamless.js +2755 -0
  47. data/seamless/templates/message_broker.rb +6 -0
  48. data/seamless/templates/message_broker_helper.rb +2 -0
  49. data/seamless/templates/robots.txt +2 -0
  50. data/seamless/templates/routes.rb +18 -0
  51. data/seamless/templates/seamless.xml +5 -0
  52. data/seamless/templates/server +4 -0
  53. data/seamless/templates/test_service.rb +13 -0
  54. data/service/USAGE +21 -0
  55. data/service/service_generator.rb +59 -0
  56. data/service/templates/service.rb +14 -0
  57. metadata +122 -0
@@ -0,0 +1,6 @@
1
+ require 'rubygems'
2
+ gem 'seamless'
3
+ require 'seamless'
4
+
5
+ class MessageBrokerController < Seamless::MessageBrokerController
6
+ end
@@ -0,0 +1,2 @@
1
+ module MessageBrokerHelper
2
+ end
@@ -0,0 +1,2 @@
1
+ User-agent: *
2
+ Allow: /
@@ -0,0 +1,18 @@
1
+ ActionController::Routing::Routes.draw do |map|
2
+ # The priority is based upon order of creation: first created -> highest priority.
3
+
4
+ # Sample of regular route:
5
+ # map.connect 'products/:id', :controller => 'catalog', :action => 'view'
6
+ # Keep in mind you can assign values other than :controller and :action
7
+
8
+ # Sample of named route:
9
+ # map.purchase 'products/:id/purchase', :controller => 'catalog', :action => 'purchase'
10
+ # This route can be invoked with purchase_url(:id => product.id)
11
+
12
+ # You can have the root of your site routed by hooking up ''
13
+ # -- just remember to delete public/index.html.
14
+ # map.connect '', :controller => "welcome"
15
+
16
+ # Install the seamless messagebroker
17
+ map.connect 'messagebroker', :controller => 'message_broker'
18
+ end
@@ -0,0 +1,5 @@
1
+ <?xml version="1.0"?>
2
+
3
+ <seamless version="1.0" xmlns="http://www.hakano.org/seamless/config">
4
+ <messagebroker poll="true">@{rootPath}messagebroker</messagebroker>
5
+ </seamless>
@@ -0,0 +1,4 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require File.dirname(__FILE__) + '/../config/boot'
4
+ require 'commands/server'
@@ -0,0 +1,13 @@
1
+
2
+ class TestService < Seamless::Service
3
+
4
+ handles_message 'seamless.test.message.request', :testMessage, 'seamless.test.message'
5
+
6
+ def testMessage(request,message)
7
+ p "received message: #{message.inspect}"
8
+ msg = message["message"]
9
+ {"message"=>"I received from you: #{msg}","success"=>true}
10
+ end
11
+
12
+ end
13
+
data/service/USAGE ADDED
@@ -0,0 +1,21 @@
1
+ Description:
2
+ The generator creates stubs for a new Seam(less) Service.
3
+
4
+ The generator takes a class name, message type and method name as arguments.
5
+ The messagehandler name may be given in CamelCase or under_score and should
6
+ not be suffixed with 'Service'.
7
+
8
+ The generator creates a service class in app/services.
9
+
10
+ ./script/generate service <ServiceClassName> <ServiceMessageRequest> <ServiceMethod> [ServiceMessageResponse]
11
+
12
+ The following are the arguments:
13
+
14
+ ServiceClassName - name of the service class
15
+ ServiceMessageRequest - message request type
16
+ ServiceMethod - method name to call
17
+
18
+ Example:
19
+ ./script/generate service CreditCard service.creditcard.charge.request charge [service.creditcard.charge.response]
20
+
21
+
@@ -0,0 +1,59 @@
1
+ require 'action_controller'
2
+ require 'active_record'
3
+
4
+ class ServiceGenerator < Rails::Generator::NamedBase
5
+
6
+ def initialize(runtime_args, runtime_options = {})
7
+ super
8
+ usage if args.empty?
9
+
10
+ @messagename = args.shift rescue usage
11
+ @messagetype = args.shift rescue usage
12
+ @messagefunc = args.shift rescue usage
13
+ @responsemsg = args.shift rescue nil
14
+
15
+ usage if @messagename==nil
16
+ usage if @messagetype==nil
17
+ usage if @messagefunc==nil
18
+
19
+ # trim off : if they use it
20
+ if @messagefunc[0] == 58
21
+ @messagefunc = @messagefunc.slice(1..@messagefunc.length)
22
+ end
23
+
24
+ camel = @messagename.camelize
25
+ under = camel.underscore
26
+
27
+ @messageFile = under.downcase + '_service.rb'
28
+ @messageClass = camel + 'Service'
29
+ end
30
+
31
+ def usage_message
32
+ File.read(File.join(File.dirname(__FILE__), 'USAGE')) rescue ''
33
+ end
34
+
35
+ def manifest
36
+ record do |m|
37
+ # Check for class naming collisions.
38
+ m.class_collisions @messageClass
39
+
40
+ # make sure we have a services dir
41
+ m.directory File.join('app/services', class_path)
42
+
43
+ responsetype = ''
44
+ response = ''
45
+
46
+ if @responsemsg
47
+ responsetype = ", '#{@responsemsg}'"
48
+ response = '{"success"=>true}'
49
+ end
50
+
51
+ # message handler template
52
+ m.template 'service/templates/service.rb',
53
+ File.join('app/services',
54
+ class_path,
55
+ "#{@messageFile}"),
56
+ :assigns => {'messageclass'=>@messageClass, 'messagetype'=>@messagetype, 'messagefunc'=>@messagefunc, 'responsetype'=>responsetype, 'response'=>response}
57
+ end
58
+ end
59
+ end
@@ -0,0 +1,14 @@
1
+
2
+ class <%= messageclass %> < Seamless::Service
3
+
4
+ handles_message '<%= messagetype %>', :<%= messagefunc %><%= responsetype %>
5
+
6
+ def <%= messagefunc %>(request,message)
7
+
8
+ # TODO: implement service code
9
+ p "received message #{type} with #{message.inspect}"
10
+
11
+ <%= response %>
12
+ end
13
+
14
+ end
metadata ADDED
@@ -0,0 +1,122 @@
1
+ --- !ruby/object:Gem::Specification
2
+ rubygems_version: 0.9.2
3
+ specification_version: 1
4
+ name: seamless
5
+ version: !ruby/object:Gem::Version
6
+ version: 1.0.0
7
+ date: 2007-05-19 00:00:00 -04:00
8
+ summary: Seam(less) on Rails. Seam(less) is a web2.0, ajax web application framework by Hakano.org
9
+ require_paths:
10
+ - lib
11
+ email: jhaynie@hakano.com
12
+ homepage: http://www.hakano.org
13
+ rubyforge_project:
14
+ description:
15
+ autorequire:
16
+ default_executable: seamless
17
+ bindir: bin
18
+ has_rdoc: false
19
+ required_ruby_version: !ruby/object:Gem::Version::Requirement
20
+ requirements:
21
+ - - ">"
22
+ - !ruby/object:Gem::Version
23
+ version: 0.0.0
24
+ version:
25
+ platform: ruby
26
+ signing_key:
27
+ cert_chain:
28
+ post_install_message:
29
+ authors:
30
+ - Jeff Haynie
31
+ files:
32
+ - lib/seamless.rb
33
+ - lib/seamless/active_record_extension.rb
34
+ - lib/seamless/dispatcher.rb
35
+ - lib/seamless/message_broker.rb
36
+ - lib/seamless/message_broker_controller.rb
37
+ - lib/seamless/migration.rb
38
+ - lib/seamless/model.rb
39
+ - lib/seamless/service.rb
40
+ - lib/seamless/messagebroker/inmemory_message_broker.rb
41
+ - service/service_generator.rb
42
+ - service/templates
43
+ - service/USAGE
44
+ - service/templates/service.rb
45
+ - seamless/seamless_generator.rb
46
+ - seamless/templates/admin.html
47
+ - seamless/templates/application.rb
48
+ - seamless/templates/css
49
+ - seamless/templates/environment.rb
50
+ - seamless/templates/generate
51
+ - seamless/templates/images
52
+ - seamless/templates/index.html
53
+ - seamless/templates/js
54
+ - seamless/templates/message_broker.rb
55
+ - seamless/templates/message_broker_helper.rb
56
+ - seamless/templates/README
57
+ - seamless/templates/robots.txt
58
+ - seamless/templates/routes.rb
59
+ - seamless/templates/seamless.xml
60
+ - seamless/templates/server
61
+ - seamless/templates/test_service.rb
62
+ - seamless/templates/css/global.css
63
+ - seamless/templates/css/seamless-admin.css
64
+ - seamless/templates/css/seamless.css
65
+ - seamless/templates/js/seamless-admin.js
66
+ - seamless/templates/js/seamless.js
67
+ - seamless/templates/images/arch.png
68
+ - seamless/templates/images/arrow_undo.png
69
+ - seamless/templates/images/cell_phone.png
70
+ - seamless/templates/images/confirm.png
71
+ - seamless/templates/images/deny.png
72
+ - seamless/templates/images/dialog_close.gif
73
+ - seamless/templates/images/dialog_close_hover.gif
74
+ - seamless/templates/images/email.png
75
+ - seamless/templates/images/exclamation.png
76
+ - seamless/templates/images/indicator.gif
77
+ - seamless/templates/images/indicator2.gif
78
+ - seamless/templates/images/seamless.gif
79
+ - seamless/templates/images/shadow.gif
80
+ - seamless/templates/images/shadowAlpha.png
81
+ - seamless/templates/images/small_star.png
82
+ - seamless/templates/images/table_add.png
83
+ - seamless/templates/images/table_delete.png
84
+ - seamless/templates/images/table_edit.png
85
+ - seamless/templates/images/table_go.png
86
+ - seamless/templates/images/table_refresh.png
87
+ - seamless/templates/images/tag.png
88
+ - seamless/templates/images/warning.png
89
+ - seamless/templates/images/wizard.gif
90
+ - seamless/templates/images/work_phone.png
91
+ - bin/seamless
92
+ test_files: []
93
+
94
+ rdoc_options: []
95
+
96
+ extra_rdoc_files: []
97
+
98
+ executables:
99
+ - seamless
100
+ extensions: []
101
+
102
+ requirements: []
103
+
104
+ dependencies:
105
+ - !ruby/object:Gem::Dependency
106
+ name: rails
107
+ version_requirement:
108
+ version_requirements: !ruby/object:Gem::Version::Requirement
109
+ requirements:
110
+ - - ">="
111
+ - !ruby/object:Gem::Version
112
+ version: 1.2.3
113
+ version:
114
+ - !ruby/object:Gem::Dependency
115
+ name: json
116
+ version_requirement:
117
+ version_requirements: !ruby/object:Gem::Version::Requirement
118
+ requirements:
119
+ - - ">="
120
+ - !ruby/object:Gem::Version
121
+ version: 0.4.3
122
+ version: