localeapp 0.6.1 → 0.6.2

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.
data/CHANGELOG.md CHANGED
@@ -1,3 +1,7 @@
1
+ # Version 0.6.2
2
+
3
+ * Fix bug updating synchronization files that caused polling_interval to be ignored
4
+
1
5
  # Version 0.6.1
2
6
 
3
7
  * Fix bug where default handler was sending array rather than resolved content
@@ -27,7 +27,7 @@ module Localeapp
27
27
 
28
28
  def write_synchronization_data!(polled_at, updated_at)
29
29
  File.open(Localeapp.configuration.synchronization_data_file, 'w+') do |f|
30
- f.write({:polled_at => polled_at, :updated_at => updated_at}.to_yaml)
30
+ f.write({:polled_at => polled_at.to_i, :updated_at => updated_at.to_i}.to_yaml)
31
31
  end
32
32
  end
33
33
 
@@ -49,13 +49,24 @@ module Localeapp
49
49
  end
50
50
 
51
51
  def handle_success(response)
52
+ Localeapp.log_with_time "poll success"
52
53
  @success = true
53
54
  Localeapp.updater.update(Localeapp.load_yaml(response))
54
- write_synchronization_data!(Time.now.to_i, Time.parse(response.headers[:date]).to_i)
55
+ write_synchronization_data!(current_time, Time.parse(response.headers[:date]))
55
56
  end
56
57
 
57
58
  def handle_failure(response)
59
+ if response.code == 304
60
+ Localeapp.log_with_time "No new data"
61
+ # Nothing new, update synchronization files
62
+ write_synchronization_data!(current_time, updated_at)
63
+ end
58
64
  @success = false
59
65
  end
66
+
67
+ private
68
+ def current_time
69
+ Time.now
70
+ end
60
71
  end
61
72
  end
@@ -8,16 +8,16 @@ module Localeapp
8
8
 
9
9
  def handle_translation_updates
10
10
  unless ::Localeapp.configuration.polling_disabled?
11
- ::Localeapp.log Time.now.to_i.to_s << '-- Handling translation updates'
11
+ ::Localeapp.log_with_time 'Handling translation updates'
12
12
  if ::Localeapp.poller.needs_polling?
13
- ::Localeapp.log Time.now.to_i.to_s << ' - polling'
13
+ ::Localeapp.log_with_time 'polling'
14
14
  ::Localeapp.poller.poll!
15
15
  end
16
16
  end
17
17
 
18
18
  unless ::Localeapp.configuration.reloading_disabled?
19
19
  if ::Localeapp.poller.needs_reloading?
20
- ::Localeapp.log Time.now.to_i.to_s << '- reloading I18n'
20
+ ::Localeapp.log_with_time 'reloading I18n'
21
21
  I18n.reload!
22
22
  ::Localeapp.poller.updated_at = ::Localeapp.poller.synchronization_data[:updated_at]
23
23
  end
@@ -1,3 +1,3 @@
1
1
  module Localeapp
2
- VERSION = "0.6.1"
2
+ VERSION = "0.6.2"
3
3
  end
data/lib/localeapp.rb CHANGED
@@ -75,6 +75,10 @@ module Localeapp
75
75
  logger.info LOG_PREFIX + message if logger
76
76
  end
77
77
 
78
+ def log_with_time(message)
79
+ log [Time.now.to_i, message].join(' - ')
80
+ end
81
+
78
82
  def debug(message)
79
83
  logger.debug(LOG_PREFIX + message) if logger
80
84
  end
@@ -40,37 +40,85 @@ describe Localeapp::Poller do
40
40
  end
41
41
 
42
42
  describe "#write_synchronization_data!(polled_at, updated_at)" do
43
+ let(:polled_at_time) { Time.at(1000000) }
44
+ let(:updated_at_time) { Time.at(1000010) }
45
+
43
46
  it "updates polled_at in the synchronization file" do
44
47
  polled_at = lambda { @poller.synchronization_data[:polled_at] }
45
- expect { @poller.write_synchronization_data!(01234, 56789) }.to change(polled_at, :call).to(01234)
48
+ expect { @poller.write_synchronization_data!(polled_at_time, updated_at_time) }.to change(polled_at, :call).to(polled_at_time.to_i)
46
49
  end
47
50
 
48
51
  it "updates updated_at in the synchronization file" do
49
52
  updated_at = lambda { @poller.synchronization_data[:updated_at] }
50
- expect { @poller.write_synchronization_data!(01234, 56789) }.to change(updated_at, :call).to(56789)
53
+ expect { @poller.write_synchronization_data!(polled_at_time, updated_at_time) }.to change(updated_at, :call).to(updated_at_time.to_i)
51
54
  end
52
55
  end
53
-
56
+
54
57
  describe "#poll!" do
55
- it "returns false if get returns 304 Not Modified" do
56
- FakeWeb.register_uri(:get, "https://api.localeapp.com/v1/projects/TEST_KEY/translations.yml?updated_at=#{@updated_at}", :body => '', :status => ['304', 'Not Modified'])
57
- @poller.poll!.should == false
58
- end
58
+ let(:polled_at_time) { Time.at(1000000) }
59
+ let(:updated_at_time) { Time.at(1000010) }
60
+
61
+ describe "when response is 304 Not Modified" do
62
+ before do
63
+ FakeWeb.register_uri(:get, "https://api.localeapp.com/v1/projects/TEST_KEY/translations.yml?updated_at=#{@updated_at}", :body => '', :status => ['304', 'Not Modified'], :date => updated_at_time.httpdate)
64
+ end
65
+
66
+ it "returns false" do
67
+ @poller.poll!.should == false
68
+ end
69
+
70
+ it "updates the polled_at but not the updated_at synchronization data" do
71
+ @poller.stub!(:current_time).and_return(polled_at_time)
72
+ @poller.should_receive(:write_synchronization_data!).with(polled_at_time, @updated_at)
73
+ @poller.poll!
74
+ end
59
75
 
60
- it "returns false if get returns a 50x response" do
61
- FakeWeb.register_uri(:get, "https://api.localeapp.com/v1/projects/TEST_KEY/translations.yml?updated_at=#{@updated_at}", :body => '', :status => ['500', 'Internal Server Error'])
62
- @poller.poll!.should == false
76
+ it "updates the synchronization data" do
77
+ @poller.should_receive(:write_synchronization_data!)
78
+ @poller.poll!
79
+ end
63
80
  end
64
81
 
65
- it "returns false if get returns 200 OK" do
66
- FakeWeb.register_uri(:get, "https://api.localeapp.com/v1/projects/TEST_KEY/translations.yml?updated_at=#{@updated_at}", :body => @hash.to_yaml, :status => ['200', 'OK'], :date => Time.now.httpdate)
67
- @poller.poll!.should == true
82
+ describe "when response is 50x" do
83
+ before do
84
+ FakeWeb.register_uri(:get, "https://api.localeapp.com/v1/projects/TEST_KEY/translations.yml?updated_at=#{@updated_at}", :body => '', :status => ['500', 'Internal Server Error'])
85
+ end
86
+
87
+ it "returns false" do
88
+ @poller.poll!.should == false
89
+ end
90
+
91
+ it "doesn't update the synchronization data" do
92
+ @poller.should_not_receive(:write_synchronization_data!)
93
+ @poller.poll!
94
+ end
68
95
  end
69
96
 
70
- it "passes the data through to the Updater" do
71
- FakeWeb.register_uri(:get, "https://api.localeapp.com/v1/projects/TEST_KEY/translations.yml?updated_at=#{@updated_at}", :body => @hash.to_yaml, :status => ['200', 'OK'], :date => Time.now.httpdate)
72
- Localeapp.updater.should_receive(:update).with(@hash)
73
- @poller.poll!
97
+ describe "when response is 200" do
98
+ before do
99
+ FakeWeb.register_uri(:get,
100
+ "https://api.localeapp.com/v1/projects/TEST_KEY/translations.yml?updated_at=#{@updated_at}",
101
+ :body => @hash.to_yaml,
102
+ :status => ['200', 'OK'],
103
+ :date => updated_at_time.httpdate
104
+ )
105
+ end
106
+
107
+ it "returns true" do
108
+ @poller.poll!.should == true
109
+ end
110
+
111
+ it "updates the polled_at and the updated_at synchronization data" do
112
+ @poller.stub!(:current_time).and_return(polled_at_time)
113
+ @poller.should_receive(:write_synchronization_data!).with(polled_at_time, updated_at_time)
114
+ @poller.poll!
115
+ end
116
+
117
+ it "passes the data through to the Updater" do
118
+ FakeWeb.register_uri(:get, "https://api.localeapp.com/v1/projects/TEST_KEY/translations.yml?updated_at=#{@updated_at}", :body => @hash.to_yaml, :status => ['200', 'OK'], :date => Time.now.httpdate)
119
+ Localeapp.updater.should_receive(:update).with(@hash)
120
+ @poller.poll!
121
+ end
74
122
  end
75
123
  end
76
124
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: localeapp
3
3
  version: !ruby/object:Gem::Version
4
- hash: 5
4
+ hash: 3
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 6
9
- - 1
10
- version: 0.6.1
9
+ - 2
10
+ version: 0.6.2
11
11
  platform: ruby
12
12
  authors:
13
13
  - Christopher Dell
@@ -16,7 +16,7 @@ autorequire:
16
16
  bindir: bin
17
17
  cert_chain: []
18
18
 
19
- date: 2012-10-09 00:00:00 Z
19
+ date: 2012-10-15 00:00:00 Z
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
22
22
  name: i18n