socky-server 0.4.0 → 0.4.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,6 @@
1
+ pkg/
2
+ tmp/
3
+ *.gem
4
+
5
+ spec/files/socky.log
6
+ Gemfile.lock
@@ -0,0 +1,102 @@
1
+ # Changelog
2
+
3
+ ## 0.4.1 / 2011-05-12
4
+
5
+ - new features:
6
+ - none
7
+ - bugfixes:
8
+ - restore compatibility with em-websocket 0.3.x
9
+
10
+ ## 0.4.0 / 2010-10-27
11
+
12
+ - new features:
13
+ - rename project to 'socky-server-ruby' for future compatibility
14
+ - bugfixes:
15
+ - use fund_all in finders instead of collect in finders
16
+
17
+ ## 0.2.1 / 2010-10-09
18
+
19
+ - new features:
20
+ - default config should have subscribe url's commented out for starting users
21
+ - bugfixes:
22
+ - show sent messages in true form instead of "inspect" one
23
+
24
+ ## 0.2.0 / 2010-10-03
25
+
26
+ - new features:
27
+ - inline documentation
28
+ - bugfixes:
29
+ - send authentication after finishing handshake
30
+ - tests less using stubs and more real cases
31
+ - fix some tests
32
+
33
+ ## 0.1.3 / 2010-09-23
34
+
35
+ - new features:
36
+ - none
37
+ - bugfixes:
38
+ - fix query :show_connections in ruby 1.9
39
+ - fix user authentication when url subscribe/unsubscribe is disabled
40
+
41
+ ## 0.1.2 / 2010-09-21
42
+
43
+ - new features:
44
+ - none
45
+ - bugfixes:
46
+ - fix routes to spec_helper in ruby 1.9.2
47
+ - ruby 1.9 will no longer raise errors on String to_a call
48
+
49
+ ## 0.1.1 / 2010-08-25
50
+
51
+ - new features:
52
+ - socky has now support for signed certificates by :tls_options config option
53
+ - bugfixes:
54
+ - none
55
+
56
+ ## 0.1.0 / 2010-08-03
57
+
58
+ **IMPORTANT! This version will not work with plugin version lower than 0.1.0**
59
+
60
+ - new features:
61
+ - server now send authentication status
62
+ - new syntax
63
+ - option to exclude clients/channels
64
+ - bugfixes:
65
+ - none
66
+
67
+ ## 0.0.9 / 2010-06-20
68
+
69
+ **IMPORTANT! This version will not work with plugin version lower than 0.0.9**
70
+
71
+ - new features:
72
+ - support for next version of em-websocket debug options(based on mloughran branch)
73
+ - support for websocket draft 76
74
+ - support for wss/SSL connections
75
+ - socky can now be started in 'daemon' mode
76
+ - socky now sending all messages in JSON format
77
+ - bugfixes:
78
+ - socky will no longer crash when when request query is invalid - i.e. chrome 6.0.*(with websocket draft76) and em-websocket 0.0.6
79
+
80
+ ## 0.0.8 / 2010-06-06
81
+
82
+ - new features:
83
+ - full rspec suite
84
+ - allow admin param to be both "1" and "true"
85
+ - bugfixes:
86
+ - proper configuration options parsing order
87
+ - rescue from invalid config file
88
+ - rescue from invalid args
89
+ - symbolize_keys will no longer raise error if argument is not hash
90
+ - modules will no longer depend on parent class
91
+ - message will no longer raise exeption is JSON is invalid
92
+
93
+ ## 0.0.7 / 2010-05-25
94
+
95
+ - new features:
96
+ - user authentication is now async
97
+ - bugfixes:
98
+ - server will no longer fail when starting from source instead of gem
99
+
100
+ ## 0.0.6 / 2010-05-24
101
+
102
+ - initial release
data/Gemfile ADDED
@@ -0,0 +1,3 @@
1
+ source "http://rubygems.org"
2
+
3
+ gemspec
data/README.md CHANGED
@@ -3,25 +3,100 @@ Socky - server in Ruby
3
3
 
4
4
  Socky is push server for Ruby based on WebSockets. It allows you to break border between your application and client browser by letting the server initialize a connection and push data to the client.
5
5
 
6
- ## Getting Started
6
+ ## Example
7
7
 
8
- - [Install](http://github.com/socky/socky-server-ruby/wiki/install) the gem
9
- - Read up about its [Usage](http://github.com/socky/socky-server-ruby/wiki/usage) and [Configuration](http://github.com/socky/socky-server-ruby/wiki/configuration)
10
- - Try [Example Application](http://github.com/socky/socky-example) or [demo page](http://sockydemo.imanel.org)
11
- - Fork and Contribute your own modifications
12
- - See [sites using socky](http://github.com/socky/socky-server-ruby/wiki/sites)
13
- - Discuss on [google group](http://groups.google.com/group/socky-framework)
8
+ You can try [live example](http://sockydemo.imanel.org) or view its [source code](http://github.com/socky/socky-example)
9
+
10
+ Also important information can be found on our [google group](http://groups.google.com/group/socky-users).
11
+
12
+ ## Install
13
+
14
+ The best way to install Socky server is via RubyGems:
15
+
16
+ gem install socky-server
17
+
18
+ Socky ruby server requires the gems em-websocket and em-http-request. These are automatically installed by the gem install command.
19
+
20
+ Alternative method is to clone repo and run it manually:
21
+
22
+ git clone git://github.com/socky/socky-server-ruby.git
23
+ cd socky-server-ruby
24
+ ./bin/socky
25
+
26
+ You can also build it after clonning(this will require Jeweler gem)
27
+
28
+ rake gemspec
29
+ rake build
14
30
 
15
31
  ## Runtime Dependencies
16
32
 
17
33
  - EM-WebSocket: Backend for WebSocket server
18
34
  - EM-HTTP-Client: Sending authorize requests
19
35
 
36
+ ## Usage
37
+
38
+ After installing gem you will have binary available:
39
+
40
+ socky [OPTIONS]
41
+
42
+ First of all you will need to generate config file:
43
+
44
+ socky -g config.yml
45
+
46
+ After that you can tweak this file, or just run server with default values:
47
+
48
+ socky -c config.yml
49
+
50
+ ## Configuration
51
+
52
+ The following is a list of the currently supported configuration options. These can all be specified by creating a config file. There are also flags for the `socky` executable which are described below next to their respective configuration options.
53
+
54
+ ### Configuration Settings
55
+
56
+ | *Setting* | *Config* | *Flag* | *Description* |
57
+ | --------------- | ------------------------ | ----------------------- | ------------- |
58
+ | Generate config | | `-g, --generate [path]` | Generate default config file
59
+ | Read config | | `-c, --config [path]` | Path to configuration file
60
+ | Port | `port: [integer]` | `-p, --port PORT` | Set the port for server to listen
61
+ | Secure | `secure: [boolean]` | `-s, --secure` | Set wss/SSL model on
62
+ | TLS Options | `tls_options: [hash]` | | Paths to private key file and certificate chain file for secure connection
63
+ | Daemon | `daemon: [boolean]` | `-d, --daemon` | Run in daemon(background) mode
64
+ | Pid path | `pid_path: [path]` | `-P, --pid` | Path to store pid path
65
+ | Kill | | `-k, --kill` | Kill daemonized server described by file in pid path
66
+ | Use log | `log_path: [path]` | `-l, --log [path]` | Path to print debugging information
67
+ | Debug | `debug: [boolean]` | `--debug` | Run in debug mode
68
+ | Deep debug | `deep_debug: [boolean]` | `--deep-debug` | Run in debug mode that is even more verbose
69
+ | Subscribe URL | `subscribe_url: [url]` | | Url to with send authentication request
70
+ | Unsubscribe URL | `unsubscribe_url: [url]` | | Url to with send logout request
71
+ | Timeout | `timeout: [integer]` | | Time after with authentication request will timeout
72
+ | Secret | `secret: [string]` | | Key that will be used by to authorize as admin user
73
+
74
+ ### Default Configuration
75
+
76
+ :port: 8080
77
+ :debug: false
78
+
79
+ :subscribe_url: http://localhost:3000/socky/subscribe
80
+ :unsubscribe_url: http://localhost:3000/socky/unsubscribe
81
+
82
+ :secret: my_secret_key
83
+
84
+ :secure: false
85
+
86
+ # :timeout: 3
87
+
88
+ # :log_path: /var/log/socky.log
89
+ # :pid_path: /var/run/socky.pid
90
+
91
+ # :tls_options:
92
+ # :private_key_file: /private/key
93
+ # :cert_chain_file: /ssl/certificate
94
+
20
95
  ## License
21
96
 
22
97
  (The MIT License)
23
98
 
24
- Copyright (c) 2010 Bernard Potocki
99
+ Copyright (c) 2010 Bernard Potocki
25
100
 
26
101
  Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the 'Software'), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
27
102
 
data/Rakefile CHANGED
@@ -1,3 +1,6 @@
1
+ require 'bundler'
2
+ Bundler::GemHelper.install_tasks
3
+
1
4
  require 'rake'
2
5
  require 'rake/clean'
3
6
  CLEAN.include %w(**/*.{log,rbc})
@@ -8,24 +11,3 @@ task :default => :spec
8
11
 
9
12
  RSpec::Core::RakeTask.new(:spec) do |t|
10
13
  end
11
-
12
- begin
13
- require 'jeweler'
14
- Jeweler::Tasks.new do |gemspec|
15
- gemspec.name = "socky-server"
16
- gemspec.summary = "Socky is a WebSocket server and client for Ruby"
17
- gemspec.description = "Socky is a WebSocket server and client for Ruby"
18
- gemspec.email = "bernard.potocki@imanel.org"
19
- gemspec.homepage = "http://imanel.org/projects/socky"
20
- gemspec.authors = ["Bernard Potocki"]
21
- gemspec.add_dependency 'em-websocket', '>= 0.1.4'
22
- gemspec.add_dependency 'em-http-request'
23
- gemspec.add_dependency 'json'
24
- gemspec.add_development_dependency 'rspec', '~> 2.0'
25
- gemspec.add_development_dependency 'rack'
26
- gemspec.add_development_dependency 'mongrel'
27
- gemspec.files.exclude ".gitignore"
28
- end
29
- rescue LoadError
30
- puts "Jeweler not available. Install it with: gem install jeweler"
31
- end
@@ -13,7 +13,7 @@ module Socky
13
13
  class SockyError < StandardError; end #:nodoc:
14
14
 
15
15
  # server version
16
- VERSION = File.read(File.dirname(__FILE__) + '/../VERSION').strip
16
+ VERSION = '0.4.1'
17
17
 
18
18
  class << self
19
19
  # read server-wide options
@@ -29,7 +29,7 @@ module Socky
29
29
  # read query data from socket request
30
30
  # @return [Hash] hash of query data
31
31
  def query
32
- socket.request["Query"] || {}
32
+ socket.request["query"] || {}
33
33
  end
34
34
 
35
35
  # return if user appear to be admin
@@ -0,0 +1,26 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "socky"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "socky-server"
7
+ s.version = Socky::VERSION
8
+ s.platform = Gem::Platform::RUBY
9
+ s.authors = ["Bernard Potocki"]
10
+ s.email = ["bernard.potocki@imanel.org"]
11
+ s.homepage = "http://socky.org"
12
+ s.summary = %q{Socky is a WebSocket server and client for Ruby}
13
+ s.description = %q{Socky is a WebSocket server and client for Ruby}
14
+
15
+ s.add_runtime_dependency 'em-websocket', '~> 0.3.0'
16
+ s.add_runtime_dependency 'em-http-request'
17
+ s.add_runtime_dependency 'json'
18
+ s.add_development_dependency 'rspec', '~> 2.0'
19
+ s.add_development_dependency 'rack'
20
+ s.add_development_dependency 'mongrel'
21
+
22
+ s.files = `git ls-files`.split("\n")
23
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
24
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
25
+ s.require_paths = ["lib"]
26
+ end
@@ -20,34 +20,34 @@ describe Socky::Connection do
20
20
  context "instance" do
21
21
  before(:each) do
22
22
  described_class.connections.clear
23
- socket = mock(:socket, :request => { "Query" => {}})
23
+ socket = mock(:socket, :request => { "query" => {}})
24
24
  @connection = described_class.new(socket)
25
25
  end
26
26
 
27
27
  context "#admin" do
28
28
  it "should return true for socket request data admin equal to '1' and 'true'" do
29
29
  ["1","true"].each do |value|
30
- @connection.socket.request["Query"]["admin"] = value
30
+ @connection.socket.request["query"]["admin"] = value
31
31
  @connection.admin.should be_true
32
32
  end
33
33
  end
34
34
  it "should return false for socket request data admin equal to anything except '1' and 'true'" do
35
35
  [nil,"0","false","abstract"].each do |value|
36
- @connection.socket.request["Query"]["admin"] = value
36
+ @connection.socket.request["query"]["admin"] = value
37
37
  @connection.admin.should be_false
38
38
  end
39
39
  end
40
40
  it "should return false if socket request data is nil" do
41
- @connection.socket.request["Query"] = nil
41
+ @connection.socket.request["query"] = nil
42
42
  @connection.admin.should be_false
43
43
  end
44
44
  end
45
45
  it "#client should return client_id from socket request data" do
46
- @connection.socket.request["Query"]["client_id"] = "abstract"
46
+ @connection.socket.request["query"]["client_id"] = "abstract"
47
47
  @connection.client.should eql("abstract")
48
48
  end
49
49
  it "#secret should return client_secret from socket request data" do
50
- @connection.socket.request["Query"]["client_secret"] = "abstract"
50
+ @connection.socket.request["query"]["client_secret"] = "abstract"
51
51
  @connection.secret.should eql("abstract")
52
52
  end
53
53
  context "#channels" do
@@ -56,19 +56,19 @@ describe Socky::Connection do
56
56
  @connection.channels.class.should eql(Array)
57
57
  end
58
58
  it "should return table with nil if socket request data 'channels' is nil" do
59
- @connection.socket.request["Query"]["channels"] = nil
59
+ @connection.socket.request["query"]["channels"] = nil
60
60
  @connection.channels.should eql([nil])
61
61
  end
62
62
  it "should return table of channels if provided and separated by comma" do
63
- @connection.socket.request["Query"]["channels"] = "aaa,bbb,ccc"
63
+ @connection.socket.request["query"]["channels"] = "aaa,bbb,ccc"
64
64
  @connection.channels.should eql(["aaa","bbb","ccc"])
65
65
  end
66
66
  it "should not allow empty names of channels" do
67
- @connection.socket.request["Query"]["channels"] = "aaa,,ccc"
67
+ @connection.socket.request["query"]["channels"] = "aaa,,ccc"
68
68
  @connection.channels.should eql(["aaa","ccc"])
69
69
  end
70
70
  it "should strip trailing spaces in channel names" do
71
- @connection.socket.request["Query"]["channels"] = " aaa\n , \n , ccc "
71
+ @connection.socket.request["query"]["channels"] = " aaa\n , \n , ccc "
72
72
  @connection.channels.should eql(["aaa","ccc"])
73
73
  end
74
74
  end
@@ -139,8 +139,8 @@ describe Socky::Connection do
139
139
  described_class.connections.should have(0).items
140
140
  end
141
141
  it "#to_json should return self as hash of object_id, client_id and channels" do
142
- @connection.socket.request["Query"]["client_id"] = "abstract"
143
- @connection.socket.request["Query"]["channels"] = "first,second,third"
142
+ @connection.socket.request["query"]["client_id"] = "abstract"
143
+ @connection.socket.request["query"]["channels"] = "first,second,third"
144
144
  json = @connection.to_json
145
145
  JSON.parse(json).should eql({ "id" => @connection.object_id,
146
146
  "client_id" => @connection.client,
metadata CHANGED
@@ -1,13 +1,8 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: socky-server
3
3
  version: !ruby/object:Gem::Version
4
- hash: 15
5
- prerelease: false
6
- segments:
7
- - 0
8
- - 4
9
- - 0
10
- version: 0.4.0
4
+ prerelease:
5
+ version: 0.4.1
11
6
  platform: ruby
12
7
  authors:
13
8
  - Bernard Potocki
@@ -15,8 +10,8 @@ autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
12
 
18
- date: 2010-10-28 00:00:00 +02:00
19
- default_executable: socky
13
+ date: 2011-05-12 00:00:00 +02:00
14
+ default_executable:
20
15
  dependencies:
21
16
  - !ruby/object:Gem::Dependency
22
17
  name: em-websocket
@@ -24,14 +19,9 @@ dependencies:
24
19
  requirement: &id001 !ruby/object:Gem::Requirement
25
20
  none: false
26
21
  requirements:
27
- - - ">="
22
+ - - ~>
28
23
  - !ruby/object:Gem::Version
29
- hash: 19
30
- segments:
31
- - 0
32
- - 1
33
- - 4
34
- version: 0.1.4
24
+ version: 0.3.0
35
25
  type: :runtime
36
26
  version_requirements: *id001
37
27
  - !ruby/object:Gem::Dependency
@@ -42,9 +32,6 @@ dependencies:
42
32
  requirements:
43
33
  - - ">="
44
34
  - !ruby/object:Gem::Version
45
- hash: 3
46
- segments:
47
- - 0
48
35
  version: "0"
49
36
  type: :runtime
50
37
  version_requirements: *id002
@@ -56,9 +43,6 @@ dependencies:
56
43
  requirements:
57
44
  - - ">="
58
45
  - !ruby/object:Gem::Version
59
- hash: 3
60
- segments:
61
- - 0
62
46
  version: "0"
63
47
  type: :runtime
64
48
  version_requirements: *id003
@@ -70,10 +54,6 @@ dependencies:
70
54
  requirements:
71
55
  - - ~>
72
56
  - !ruby/object:Gem::Version
73
- hash: 3
74
- segments:
75
- - 2
76
- - 0
77
57
  version: "2.0"
78
58
  type: :development
79
59
  version_requirements: *id004
@@ -85,9 +65,6 @@ dependencies:
85
65
  requirements:
86
66
  - - ">="
87
67
  - !ruby/object:Gem::Version
88
- hash: 3
89
- segments:
90
- - 0
91
68
  version: "0"
92
69
  type: :development
93
70
  version_requirements: *id005
@@ -99,25 +76,24 @@ dependencies:
99
76
  requirements:
100
77
  - - ">="
101
78
  - !ruby/object:Gem::Version
102
- hash: 3
103
- segments:
104
- - 0
105
79
  version: "0"
106
80
  type: :development
107
81
  version_requirements: *id006
108
82
  description: Socky is a WebSocket server and client for Ruby
109
- email: bernard.potocki@imanel.org
83
+ email:
84
+ - bernard.potocki@imanel.org
110
85
  executables:
111
86
  - socky
112
87
  extensions: []
113
88
 
114
- extra_rdoc_files:
115
- - README.md
89
+ extra_rdoc_files: []
90
+
116
91
  files:
117
- - CHANGELOG.textile
92
+ - .gitignore
93
+ - CHANGELOG.md
94
+ - Gemfile
118
95
  - README.md
119
96
  - Rakefile
120
- - VERSION
121
97
  - bin/socky
122
98
  - lib/em-websocket_hacks.rb
123
99
  - lib/socky.rb
@@ -131,6 +107,7 @@ files:
131
107
  - lib/socky/options/config.rb
132
108
  - lib/socky/options/parser.rb
133
109
  - lib/socky/runner.rb
110
+ - socky-server.gemspec
134
111
  - spec/em-websocket_spec.rb
135
112
  - spec/files/default.yml
136
113
  - spec/files/invalid.yml
@@ -148,12 +125,12 @@ files:
148
125
  - spec/spec_helper.rb
149
126
  - spec/support/stallion.rb
150
127
  has_rdoc: true
151
- homepage: http://imanel.org/projects/socky
128
+ homepage: http://socky.org
152
129
  licenses: []
153
130
 
154
131
  post_install_message:
155
- rdoc_options:
156
- - --charset=UTF-8
132
+ rdoc_options: []
133
+
157
134
  require_paths:
158
135
  - lib
159
136
  required_ruby_version: !ruby/object:Gem::Requirement
@@ -161,28 +138,24 @@ required_ruby_version: !ruby/object:Gem::Requirement
161
138
  requirements:
162
139
  - - ">="
163
140
  - !ruby/object:Gem::Version
164
- hash: 3
165
- segments:
166
- - 0
167
141
  version: "0"
168
142
  required_rubygems_version: !ruby/object:Gem::Requirement
169
143
  none: false
170
144
  requirements:
171
145
  - - ">="
172
146
  - !ruby/object:Gem::Version
173
- hash: 3
174
- segments:
175
- - 0
176
147
  version: "0"
177
148
  requirements: []
178
149
 
179
150
  rubyforge_project:
180
- rubygems_version: 1.3.7
151
+ rubygems_version: 1.6.1
181
152
  signing_key:
182
153
  specification_version: 3
183
154
  summary: Socky is a WebSocket server and client for Ruby
184
155
  test_files:
185
156
  - spec/em-websocket_spec.rb
157
+ - spec/files/default.yml
158
+ - spec/files/invalid.yml
186
159
  - spec/socky/connection/authentication_spec.rb
187
160
  - spec/socky/connection/finders_spec.rb
188
161
  - spec/socky/connection_spec.rb
@@ -1,95 +0,0 @@
1
- h1. Changelog
2
-
3
- h2. 0.4.0 / 2010-10-27
4
-
5
- * new features:
6
- ** rename project to 'socky-server-ruby' for future compatibility
7
- * bugfixes:
8
- ** use fund_all in finders instead of collect in finders
9
-
10
- h2. 0.2.1 / 2010-10-09
11
-
12
- * new features:
13
- ** default config should have subscribe url's commented out for starting users
14
- * bugfixes:
15
- ** show sent messages in true form instead of "inspect" one
16
-
17
- h2. 0.2.0 / 2010-10-03
18
-
19
- * new features:
20
- ** inline documentation
21
- * bugfixes:
22
- ** send authentication after finishing handshake
23
- ** tests less using stubs and more real cases
24
- ** fix some tests
25
-
26
- h2. 0.1.3 / 2010-09-23
27
-
28
- * new features:
29
- ** none
30
- * bugfixes:
31
- ** fix query :show_connections in ruby 1.9
32
- ** fix user authentication when url subscribe/unsubscribe is disabled
33
-
34
- h2. 0.1.2 / 2010-09-21
35
-
36
- * new features:
37
- ** none
38
- * bugfixes:
39
- ** fix routes to spec_helper in ruby 1.9.2
40
- ** ruby 1.9 will no longer raise errors on String to_a call
41
-
42
- h2. 0.1.1 / 2010-08-25
43
-
44
- * new features:
45
- ** socky has now support for signed certificates by :tls_options config option
46
- * bugfixes:
47
- ** none
48
-
49
- h2. 0.1.0 / 2010-08-03
50
-
51
- *IMPORTANT! This version will not work with plugin version lower than 0.1.0*
52
-
53
- * new features:
54
- ** server now send authentication status
55
- ** new syntax
56
- ** option to exclude clients/channels
57
- * bugfixes:
58
- ** none
59
-
60
- h2. 0.0.9 / 2010-06-20
61
-
62
- *IMPORTANT! This version will not work with plugin version lower than 0.0.9*
63
-
64
- * new features:
65
- ** support for next version of em-websocket debug options(based on mloughran branch)
66
- ** support for websocket draft 76
67
- ** support for wss/SSL connections
68
- ** socky can now be started in 'daemon' mode
69
- ** socky now sending all messages in JSON format
70
- * bugfixes:
71
- ** socky will no longer crash when when request query is invalid - i.e. chrome 6.0.*(with websocket draft76) and em-websocket 0.0.6
72
-
73
- h2. 0.0.8 / 2010-06-06
74
-
75
- * new features:
76
- ** full rspec suite
77
- ** allow admin param to be both "1" and "true"
78
- * bugfixes:
79
- ** proper configuration options parsing order
80
- ** rescue from invalid config file
81
- ** rescue from invalid args
82
- ** symbolize_keys will no longer raise error if argument is not hash
83
- ** modules will no longer depend on parent class
84
- ** message will no longer raise exeption is JSON is invalid
85
-
86
- h2. 0.0.7 / 2010-05-25
87
-
88
- * new features:
89
- ** user authentication is now async
90
- * bugfixes:
91
- ** server will no longer fail when starting from source instead of gem
92
-
93
- h2. 0.0.6 / 2010-05-24
94
-
95
- * initial release
data/VERSION DELETED
@@ -1 +0,0 @@
1
- 0.4.0