em_remote_call 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -6,4 +6,5 @@ require 'is_a_collection'
6
6
 
7
7
  require 'em_remote_call/client'
8
8
  require 'em_remote_call/server'
9
+ require 'em_remote_call/utils'
9
10
 
@@ -7,10 +7,10 @@ class EM::RemoteCall::Call
7
7
  @method, @argument = method, argument
8
8
 
9
9
  if indentifier = instance_opts[:id]
10
- klass = Object.const_defined?(klass) && Object.const_get(klass) or return false
10
+ klass = EM::RemoteCall::Utils.constantize(klass) or return false
11
11
  @instance = klass.find(indentifier)
12
12
  else
13
- @instance = Object.const_defined?(klass) && Object.const_get(klass) or return false
13
+ @instance = EM::RemoteCall::Utils.constantize(klass) or return false
14
14
  end
15
15
 
16
16
  end
@@ -0,0 +1,9 @@
1
+ module EM::RemoteCall; end
2
+
3
+ class EM::RemoteCall::Utils
4
+
5
+ def self.constantize(string)
6
+ string.split('::').inject(Object){ |klass,str| klass.const_get(str) rescue false }
7
+ end
8
+
9
+ end
@@ -1,3 +1,3 @@
1
1
  module EmRemoteCall
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.3"
3
3
  end
@@ -0,0 +1,27 @@
1
+ $LOAD_PATH << File.join(File.expand_path(File.dirname(__FILE__)), '../lib')
2
+
3
+ require 'em_remote_call'
4
+
5
+ module A; end
6
+ module A::B; end
7
+ module A::B::C; end
8
+
9
+ describe EM::RemoteCall::Utils do
10
+ describe "constants" do
11
+ it "should turn a String into a Constant" do
12
+ EM::RemoteCall::Utils.constantize('A').should == A
13
+ end
14
+ end
15
+ describe "nested modules" do
16
+ it "should turn a String into a Constant" do
17
+ EM::RemoteCall::Utils.constantize('A::B').should == A::B
18
+ EM::RemoteCall::Utils.constantize('A::B::C').should == A::B::C
19
+ end
20
+ end
21
+ describe "non existing constants" do
22
+ it "should return false (this is just how we need it)" do
23
+ EM::RemoteCall::Utils.constantize('D').should == false
24
+ end
25
+ end
26
+ end
27
+
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 0
8
- - 2
9
- version: 0.0.2
8
+ - 3
9
+ version: 0.0.3
10
10
  platform: ruby
11
11
  authors:
12
12
  - Niko Dittmann
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2010-11-16 00:00:00 +01:00
17
+ date: 2010-12-01 00:00:00 +01:00
18
18
  default_executable:
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
@@ -67,9 +67,11 @@ extra_rdoc_files: []
67
67
  files:
68
68
  - lib/em_remote_call/client.rb
69
69
  - lib/em_remote_call/server.rb
70
+ - lib/em_remote_call/utils.rb
70
71
  - lib/em_remote_call/version.rb
71
72
  - lib/em_remote_call.rb
72
73
  - spec/integration_spec.rb
74
+ - spec/utils_spec.rb
73
75
  has_rdoc: true
74
76
  homepage: http://github.com/niko/em_remote_call
75
77
  licenses: []
@@ -104,3 +106,4 @@ specification_version: 3
104
106
  summary: Provides an Eventmachine server/client couple which allows the client to call methods within the server process, including local client-callbacks.
105
107
  test_files:
106
108
  - spec/integration_spec.rb
109
+ - spec/utils_spec.rb