copycopter_client 1.0.3 → 1.0.4

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -66,6 +66,11 @@ Blurbs start out as draft copy, and won't be displayed in production environment
66
66
 
67
67
  rake copycopter:deploy
68
68
 
69
+ Contributing
70
+ ------------
71
+
72
+ Please see CONTRIBUTING.md for details.
73
+
69
74
  Credits
70
75
  -------
71
76
 
@@ -8,19 +8,11 @@ require 'copycopter_client/configuration'
8
8
  # appropriate.
9
9
  module CopycopterClient
10
10
  class << self
11
- # @return [Client] instance used to communicate with the Copycopter server.
12
- # This is set when {.configure} is called.
13
- attr_accessor :client
14
-
15
11
  # @return [Configuration] current client configuration
16
12
  # Must act like a hash and return sensible values for all Copycopter
17
13
  # configuration options. Usually set when {.configure} is called.
18
14
  attr_accessor :configuration
19
15
 
20
- # @return [Cache] instance used to synchronize changes.
21
- # This is set when {.configure} is called.
22
- attr_accessor :cache
23
-
24
16
  # @return [Poller] instance used to poll for changes.
25
17
  # This is set when {.configure} is called.
26
18
  attr_accessor :poller
@@ -42,6 +34,14 @@ module CopycopterClient
42
34
  cache.flush
43
35
  end
44
36
 
37
+ def self.cache
38
+ CopycopterClient.configuration.cache
39
+ end
40
+
41
+ def self.client
42
+ CopycopterClient.configuration.client
43
+ end
44
+
45
45
  # Call this method to modify defaults in your initializers.
46
46
  #
47
47
  # @example
@@ -84,6 +84,12 @@ module CopycopterClient
84
84
  # @return [String] the path to a root certificate file used to verify ssl sessions. Default's to the root certificate file for copycopter.com.
85
85
  attr_accessor :ca_file
86
86
 
87
+ # @return [Cache] instance used internally to synchronize changes.
88
+ attr_accessor :cache
89
+
90
+ # @return [Client] instance used to communicate with the Copycopter server.
91
+ attr_accessor :client
92
+
87
93
  alias_method :secure?, :secure
88
94
 
89
95
  # Instantiated from {CopycopterClient.configure}. Sets defaults.
@@ -100,7 +106,6 @@ module CopycopterClient
100
106
  self.polling_delay = 300
101
107
  self.logger = Logger.new($stdout)
102
108
  self.ca_file = CA_FILE
103
-
104
109
  @applied = false
105
110
  end
106
111
 
@@ -158,17 +163,15 @@ module CopycopterClient
158
163
  #
159
164
  # Called automatically when {CopycopterClient.configure} is called in the application.
160
165
  #
161
- # This creates the {Client}, {Cache}, and {I18nBackend} and puts them together.
166
+ # This creates the {I18nBackend} and puts them together.
162
167
  #
163
168
  # When {#test?} returns +false+, the poller will be started.
164
169
  def apply
165
- client = Client.new(to_hash)
166
- cache = Cache.new(client, to_hash)
167
- poller = Poller.new(cache, to_hash)
170
+ self.client ||= Client.new(to_hash)
171
+ self.cache ||= Cache.new(client, to_hash)
172
+ poller = Poller.new(cache, to_hash)
168
173
  process_guard = ProcessGuard.new(cache, poller, to_hash)
169
- I18n.backend = I18nBackend.new(cache)
170
- CopycopterClient.client = client
171
- CopycopterClient.cache = cache
174
+ I18n.backend = I18nBackend.new(cache)
172
175
  middleware.use(RequestSync, :cache => cache) if middleware && development?
173
176
  @applied = true
174
177
  logger.info("Client #{VERSION} ready")
@@ -1,8 +1,8 @@
1
1
  module CopycopterClient
2
2
  # Client version
3
- VERSION = "1.0.3"
3
+ VERSION = "1.0.4".freeze
4
4
 
5
5
  # API version being used to communicate with the server
6
- API_VERSION = "2.0"
6
+ API_VERSION = "2.0".freeze
7
7
  end
8
8
 
@@ -196,7 +196,9 @@ describe CopycopterClient::Cache do
196
196
 
197
197
  it "flushes from the top level" do
198
198
  cache = build_cache
199
- CopycopterClient.cache = cache
199
+ CopycopterClient.configure do |config|
200
+ config.cache = cache
201
+ end
200
202
  cache.stubs(:flush)
201
203
 
202
204
  CopycopterClient.flush
@@ -195,7 +195,9 @@ describe CopycopterClient do
195
195
 
196
196
  it "deploys from the top-level constant" do
197
197
  client = build_client
198
- CopycopterClient.client = client
198
+ CopycopterClient.configure do |config|
199
+ config.client = client
200
+ end
199
201
  client.stubs(:deploy)
200
202
 
201
203
  CopycopterClient.deploy
@@ -43,6 +43,8 @@ describe CopycopterClient::Configuration do
43
43
  it { should have_config_option(:polling_delay). overridable.default(300) }
44
44
  it { should have_config_option(:framework). overridable }
45
45
  it { should have_config_option(:middleware). overridable }
46
+ it { should have_config_option(:client). overridable }
47
+ it { should have_config_option(:cache). overridable }
46
48
 
47
49
  it "provides the root ssl certificate" do
48
50
  should have_config_option(:ca_file).
@@ -194,7 +196,7 @@ end
194
196
 
195
197
  share_examples_for "applied configuration" do
196
198
  let(:backend) { stub('i18n-backend') }
197
- let(:cache) { stub('cache') }
199
+ let(:cache) { stub('cache') }
198
200
  let(:client) { stub('client') }
199
201
  let(:poller) { stub('poller') }
200
202
  let(:process_guard) { stub('process_guard', :start => nil) }
@@ -214,8 +216,6 @@ share_examples_for "applied configuration" do
214
216
  it { should be_applied }
215
217
 
216
218
  it "builds and assigns an I18n backend" do
217
- CopycopterClient::Client.should have_received(:new).with(subject.to_hash)
218
- CopycopterClient::Cache.should have_received(:new).with(client, subject.to_hash)
219
219
  CopycopterClient::I18nBackend.should have_received(:new).with(cache)
220
220
  I18n.backend.should == backend
221
221
  end
@@ -236,14 +236,6 @@ share_examples_for "applied configuration" do
236
236
  it "logs environment info" do
237
237
  logger.should have_entry(:info, "Environment Info: #{subject.environment_info}")
238
238
  end
239
-
240
- it "stores the client" do
241
- CopycopterClient.client.should == client
242
- end
243
-
244
- it "stores the cache" do
245
- CopycopterClient.cache.should == cache
246
- end
247
239
  end
248
240
 
249
241
  describe CopycopterClient::Configuration, "applied when testing" do
@@ -16,7 +16,7 @@ describe CopycopterClient::ProcessGuard do
16
16
 
17
17
  def build_process_guard(options = {})
18
18
  options[:logger] ||= FakeLogger.new
19
- options[:cache] ||= cache
19
+ options[:cache] ||= cache
20
20
  CopycopterClient::ProcessGuard.new(options[:cache], poller, options)
21
21
  end
22
22
 
@@ -0,0 +1,19 @@
1
+ require 'spec_helper'
2
+
3
+ describe CopycopterClient do
4
+
5
+ before do
6
+ CopycopterClient.configuration.stubs(:cache => 'cache',
7
+ :client => 'client')
8
+ end
9
+
10
+ it 'delegates cache to the configuration object' do
11
+ CopycopterClient.cache.should == 'cache'
12
+ CopycopterClient.configuration.should have_received(:cache).once
13
+ end
14
+
15
+ it 'delegates client to the configuration object' do
16
+ CopycopterClient.client.should == 'client'
17
+ CopycopterClient.configuration.should have_received(:client).once
18
+ end
19
+ end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: copycopter_client
3
3
  version: !ruby/object:Gem::Version
4
- hash: 17
4
+ hash: 31
5
5
  prerelease:
6
6
  segments:
7
7
  - 1
8
8
  - 0
9
- - 3
10
- version: 1.0.3
9
+ - 4
10
+ version: 1.0.4
11
11
  platform: ruby
12
12
  authors:
13
13
  - thoughtbot
@@ -15,12 +15,9 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-06-21 00:00:00 -04:00
19
- default_executable:
18
+ date: 2011-08-31 00:00:00 Z
20
19
  dependencies:
21
20
  - !ruby/object:Gem::Dependency
22
- name: i18n
23
- prerelease: false
24
21
  requirement: &id001 !ruby/object:Gem::Requirement
25
22
  none: false
26
23
  requirements:
@@ -32,11 +29,11 @@ dependencies:
32
29
  - 5
33
30
  - 0
34
31
  version: 0.5.0
35
- type: :runtime
36
32
  version_requirements: *id001
37
- - !ruby/object:Gem::Dependency
38
- name: json
33
+ name: i18n
39
34
  prerelease: false
35
+ type: :runtime
36
+ - !ruby/object:Gem::Dependency
40
37
  requirement: &id002 !ruby/object:Gem::Requirement
41
38
  none: false
42
39
  requirements:
@@ -46,8 +43,10 @@ dependencies:
46
43
  segments:
47
44
  - 0
48
45
  version: "0"
49
- type: :runtime
50
46
  version_requirements: *id002
47
+ name: json
48
+ prerelease: false
49
+ type: :runtime
51
50
  description:
52
51
  email: support@thoughtbot.com
53
52
  executables: []
@@ -84,6 +83,7 @@ files:
84
83
  - spec/copycopter_client/prefixed_logger_spec.rb
85
84
  - spec/copycopter_client/process_guard_spec.rb
86
85
  - spec/copycopter_client/request_sync_spec.rb
86
+ - spec/copycopter_client_spec.rb
87
87
  - spec/spec_helper.rb
88
88
  - spec/support/client_spec_helpers.rb
89
89
  - spec/support/defines_constants.rb
@@ -101,7 +101,6 @@ files:
101
101
  - features/step_definitions/rails_steps.rb
102
102
  - features/support/env.rb
103
103
  - features/support/rails_server.rb
104
- has_rdoc: true
105
104
  homepage: http://github.com/thoughtbot/copycopter_client
106
105
  licenses: []
107
106
 
@@ -131,7 +130,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
131
130
  requirements: []
132
131
 
133
132
  rubyforge_project: copycopter_client
134
- rubygems_version: 1.4.1
133
+ rubygems_version: 1.8.6
135
134
  signing_key:
136
135
  specification_version: 3
137
136
  summary: Client for the Copycopter content management service