zack 0.2.0 → 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.
Files changed (5) hide show
  1. data/History.txt +6 -2
  2. data/README +1 -1
  3. data/Rakefile +9 -58
  4. data/lib/zack/client.rb +24 -1
  5. metadata +35 -63
data/History.txt CHANGED
@@ -1,8 +1,12 @@
1
- = 0.2.0 / ???
1
+ = 0.3.0 / 20Jul2011
2
+
3
+ + Channel names are generated using UUIDs. No duplicate detection yet.
4
+
5
+ = 0.2.0 / 26Apr2011
2
6
 
3
7
  + Starting with this version, zack depends on Cod for all its inner workings
4
8
  and just adds RPC. This makes it lean to the point of nonexistence.
5
-
9
+
6
10
  = 0.1.3 / not released
7
11
 
8
12
  + All calls now have a default timeout of 10 seconds. Timeouts reset the
data/README CHANGED
@@ -48,6 +48,6 @@ Should run with most rubies of the 1.8 and 1.9 generations.
48
48
 
49
49
  STATUS
50
50
 
51
- Useful and useable. First release.
51
+ Useful for production use. Not yet tested in high-volume situations.
52
52
 
53
53
  (c) Kaspar Schiess, Patrick Marchi
data/Rakefile CHANGED
@@ -1,66 +1,17 @@
1
+ require 'rake/clean'
1
2
  require "rubygems"
2
- require "rake/gempackagetask"
3
- require "rake/rdoctask"
3
+ require 'rubygems/package_task'
4
4
 
5
5
  require 'rspec'
6
6
  require 'rspec/core/rake_task'
7
7
  Rspec::Core::RakeTask.new
8
8
  task :default => :spec
9
9
 
10
- # This builds the actual gem. For details of what all these options
11
- # mean, and other ones you can add, check the documentation here:
12
- #
13
- # http://rubygems.org/read/chapter/20
14
- #
15
- spec = Gem::Specification.new do |s|
10
+ # This task actually builds the gem.
11
+ task :gem => :spec
12
+ spec = eval(File.read('zack.gemspec'))
16
13
 
17
- # Change these as appropriate
18
- s.name = "zack"
19
- s.version = "0.2.0"
20
- s.summary = "Ruby RPC calls via Cod"
21
- s.authors = ['Kaspar Schiess', 'Patrick Marchi']
22
- s.email = ["kaspar.schiess@absurd.li", 'mail@patrickmarchi.ch']
23
- s.homepage = "http://github.com/kschiess/zack"
24
-
25
- s.has_rdoc = true
26
- s.extra_rdoc_files = %w(README)
27
- s.rdoc_options = %w(--main README)
28
-
29
- # Add any extra files to include in the gem
30
- s.files = %w(History.txt LICENSE Rakefile README) + Dir.glob("{spec,lib/**/*}")
31
- s.require_paths = ["lib"]
32
-
33
- s.add_dependency("cod", "~> 0.2")
34
- s.add_dependency("beanstalk-client", "~> 1.0")
35
-
36
- # If your tests use any gems, include them here
37
- s.add_development_dependency("rspec")
38
- s.add_development_dependency("flexmock")
39
- end
40
-
41
- # This task actually builds the gem. We also regenerate a static
42
- # .gemspec file, which is useful if something (i.e. GitHub) will
43
- # be automatically building a gem for this project. If you're not
44
- # using GitHub, edit as appropriate.
45
- #
46
- # To publish your gem online, install the 'gemcutter' gem; Read more
47
- # about that here: http://gemcutter.org/pages/gem_docs
48
- Rake::GemPackageTask.new(spec) do |pkg|
49
- pkg.gem_spec = spec
50
-
51
- # Generate the gemspec file for github.
52
- file = File.dirname(__FILE__) + "/#{spec.name}.gemspec"
53
- File.open(file, "w") {|f| f << spec.to_ruby }
54
- end
55
-
56
- # Generate documentation
57
- Rake::RDocTask.new do |rd|
58
- rd.main = "README"
59
- rd.rdoc_files.include("README", "lib/**/*.rb")
60
- rd.rdoc_dir = "rdoc"
61
- end
62
-
63
- desc 'Clear out RDoc and generated packages'
64
- task :clean => [:clobber_rdoc, :clobber_package] do
65
- rm "#{spec.name}.gemspec"
66
- end
14
+ desc "Generate the gem package."
15
+ Gem::PackageTask.new(spec) do |pkg|
16
+ # pkg.need_tar = true
17
+ end
data/lib/zack/client.rb CHANGED
@@ -1,4 +1,5 @@
1
1
 
2
+ require 'uuid'
2
3
 
3
4
  # Client part of Zack RPC
4
5
  #
@@ -14,7 +15,8 @@ class Zack::Client
14
15
 
15
16
  @outgoing = Cod.beanstalk(server, tube_name)
16
17
  unless @with_answer.empty?
17
- @incoming = Cod.beanstalk(server)
18
+ @incoming = Cod.beanstalk(server,
19
+ unique_tube_name(tube_name))
18
20
  end
19
21
 
20
22
  @service = Cod::Client.new(@outgoing, @incoming, 1)
@@ -41,4 +43,25 @@ class Zack::Client
41
43
  def has_answer?(sym)
42
44
  @with_answer.include?(sym.to_sym)
43
45
  end
46
+
47
+ private
48
+ # Pretend that UUIDs don't collide for now.
49
+ #
50
+ def unique_tube_name(name)
51
+ "name.#{uuid}"
52
+ end
53
+ def uuid
54
+ uuid_generator.generate
55
+ end
56
+ def uuid_generator
57
+ generator=Thread.current[:zack_uuid_generator]
58
+ return generator if generator
59
+
60
+ # assert: generator is nil
61
+
62
+ # Pretend we've just forked, because that might be the case.
63
+ UUID.generator.next_sequence
64
+
65
+ Thread.current[:zack_uuid_generator]=generator=UUID.new
66
+ end
44
67
  end
metadata CHANGED
@@ -1,74 +1,49 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: zack
3
- version: !ruby/object:Gem::Version
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.3.0
4
5
  prerelease:
5
- version: 0.2.0
6
6
  platform: ruby
7
- authors:
7
+ authors:
8
8
  - Kaspar Schiess
9
9
  - Patrick Marchi
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
-
14
- date: 2011-04-27 00:00:00 +02:00
13
+ date: 2011-07-20 00:00:00.000000000 +02:00
15
14
  default_executable:
16
- dependencies:
17
- - !ruby/object:Gem::Dependency
15
+ dependencies:
16
+ - !ruby/object:Gem::Dependency
18
17
  name: cod
19
- prerelease: false
20
- requirement: &id001 !ruby/object:Gem::Requirement
18
+ requirement: &2157732620 !ruby/object:Gem::Requirement
21
19
  none: false
22
- requirements:
20
+ requirements:
23
21
  - - ~>
24
- - !ruby/object:Gem::Version
25
- version: "0.2"
22
+ - !ruby/object:Gem::Version
23
+ version: '0.3'
26
24
  type: :runtime
27
- version_requirements: *id001
28
- - !ruby/object:Gem::Dependency
29
- name: beanstalk-client
30
25
  prerelease: false
31
- requirement: &id002 !ruby/object:Gem::Requirement
26
+ version_requirements: *2157732620
27
+ - !ruby/object:Gem::Dependency
28
+ name: beanstalk-client
29
+ requirement: &2157731840 !ruby/object:Gem::Requirement
32
30
  none: false
33
- requirements:
31
+ requirements:
34
32
  - - ~>
35
- - !ruby/object:Gem::Version
36
- version: "1.0"
33
+ - !ruby/object:Gem::Version
34
+ version: '1.0'
37
35
  type: :runtime
38
- version_requirements: *id002
39
- - !ruby/object:Gem::Dependency
40
- name: rspec
41
36
  prerelease: false
42
- requirement: &id003 !ruby/object:Gem::Requirement
43
- none: false
44
- requirements:
45
- - - ">="
46
- - !ruby/object:Gem::Version
47
- version: "0"
48
- type: :development
49
- version_requirements: *id003
50
- - !ruby/object:Gem::Dependency
51
- name: flexmock
52
- prerelease: false
53
- requirement: &id004 !ruby/object:Gem::Requirement
54
- none: false
55
- requirements:
56
- - - ">="
57
- - !ruby/object:Gem::Version
58
- version: "0"
59
- type: :development
60
- version_requirements: *id004
37
+ version_requirements: *2157731840
61
38
  description:
62
- email:
39
+ email:
63
40
  - kaspar.schiess@absurd.li
64
41
  - mail@patrickmarchi.ch
65
42
  executables: []
66
-
67
43
  extensions: []
68
-
69
- extra_rdoc_files:
44
+ extra_rdoc_files:
70
45
  - README
71
- files:
46
+ files:
72
47
  - History.txt
73
48
  - LICENSE
74
49
  - Rakefile
@@ -79,31 +54,28 @@ files:
79
54
  has_rdoc: true
80
55
  homepage: http://github.com/kschiess/zack
81
56
  licenses: []
82
-
83
57
  post_install_message:
84
- rdoc_options:
58
+ rdoc_options:
85
59
  - --main
86
60
  - README
87
- require_paths:
61
+ require_paths:
88
62
  - lib
89
- required_ruby_version: !ruby/object:Gem::Requirement
63
+ required_ruby_version: !ruby/object:Gem::Requirement
90
64
  none: false
91
- requirements:
92
- - - ">="
93
- - !ruby/object:Gem::Version
94
- version: "0"
95
- required_rubygems_version: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ! '>='
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ required_rubygems_version: !ruby/object:Gem::Requirement
96
70
  none: false
97
- requirements:
98
- - - ">="
99
- - !ruby/object:Gem::Version
100
- version: "0"
71
+ requirements:
72
+ - - ! '>='
73
+ - !ruby/object:Gem::Version
74
+ version: '0'
101
75
  requirements: []
102
-
103
76
  rubyforge_project:
104
- rubygems_version: 1.5.2
77
+ rubygems_version: 1.6.2
105
78
  signing_key:
106
79
  specification_version: 3
107
80
  summary: Ruby RPC calls via Cod
108
81
  test_files: []
109
-