localeapp 0.6.14 → 0.7.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.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 185a91f911bbe92f9de552cda40d8966c5fe35f2
4
+ data.tar.gz: 334574858b89efda5619a82ef6dc33e3afcc0181
5
+ SHA512:
6
+ metadata.gz: bc8cd5424cb62111a36cfc5cb550632551c5e614bd3535a3c4f48021d97bd917e80c7bb08e762384853426c555afc8f737423638b4154f188b920a9856e8a5b5
7
+ data.tar.gz: feadfc9fb3da6d9fa4f34c841fcbf3e1b9031627d3e9b050b5346f6d4451fa73c15edb68147ce5036b5503e84520f5baba467bee92a286f40208ee5a916b53f2
data/.travis.yml CHANGED
@@ -1,10 +1,22 @@
1
1
  rvm:
2
- - 1.8.7
3
2
  - 1.9.2
4
3
  - 1.9.3
5
- - jruby-18mode
4
+ - 2.0.0
5
+ - 2.1.0
6
6
  - jruby-19mode
7
+ - jruby-20mode
8
+ - jruby-21mode
7
9
  gemfile:
8
10
  - Gemfile.i18n_037
9
11
  - Gemfile.i18n_050
10
12
  - Gemfile.i18n_060
13
+ matrix:
14
+ exclude:
15
+ - rvm: 2.0.0
16
+ gemfile: Gemfile.i18n_037
17
+ - rvm: 2.1.0
18
+ gemfile: Gemfile.i18n_037
19
+ - rvm: jruby-20mode
20
+ gemfile: Gemfile.i18n_037
21
+ - rvm: jruby-21mode
22
+ gemfile: Gemfile.i18n_037
data/CHANGELOG.md CHANGED
@@ -1,5 +1,12 @@
1
1
  # master
2
2
 
3
+ # Version 0.7.0
4
+
5
+ * Drop support for Ruby 1.8 (both MRI and JRuby)
6
+ * Add support for Ruby 2.0 and 2.1 (both MRI and JRuby)
7
+ * Mimic new Rails `translate` helper behaviour, which is to wrap missing translations messages in <span> elements
8
+ * Fix missing translations sending with Rails >= 3.2.16 and >= 4.0.2
9
+
3
10
  # Version 0.6.14
4
11
 
5
12
  * Fix a bug where the last poll and last refresh date could be nil
data/Gemfile.i18n_037 CHANGED
@@ -2,7 +2,11 @@ source 'https://rubygems.org'
2
2
  gemspec
3
3
 
4
4
  gem 'i18n', '0.3.7'
5
- gem 'activesupport', '2.3.14'
5
+ gem 'activesupport', '~> 2.3.18'
6
+
7
+ platforms :ruby do
8
+ gem 'iconv'
9
+ end
6
10
 
7
11
  platform :jruby do
8
12
  gem 'jruby-openssl'
data/bin/localeapp CHANGED
@@ -57,7 +57,7 @@ command :install do |c|
57
57
  c.desc "create configuration when using localeapp via a heroku addon (PRE ALPHA)"
58
58
  c.switch [:h, 'heroku']
59
59
 
60
- c.desc "install a skeleton project suitable for Github"
60
+ c.desc "install a skeleton project suitable for Github (warning: README.md will be overwritten)"
61
61
  c.switch [:g, 'github']
62
62
 
63
63
  c.action do |global_options, options, args|
@@ -72,6 +72,8 @@ module Localeapp
72
72
  RestClient::ServiceUnavailable,
73
73
  RestClient::GatewayTimeout => error
74
74
  return error.response
75
+ rescue RestClient::ServerBrokeConnection => error
76
+ return NonHTTPResponse.new(-1)
75
77
  rescue Errno::ECONNREFUSED => error
76
78
  Localeapp.debug("ERROR: Connection Refused")
77
79
  return NonHTTPResponse.new(-1)
@@ -0,0 +1,23 @@
1
+ # Rails 3.2.16 and 4.0.2 introduced a fix for CVE-2013-4491 :
2
+ # https://github.com/rails/rails/commit/78790e4bceedc632cb40f9597792d7e27234138a
3
+ #
4
+ # This fix introduces a :raise option to the :translate helper, which
5
+ # defines wether an exception shall be raised (:raise => true) or delegated
6
+ # to I18n.exception_handler (:raise => false).
7
+ #
8
+ # This monkey patch forces :raise to `false`, to force use of Localeapp::ExceptionHandler
9
+ #
10
+ # NB: the CVE-2013-4491 fix also introduced a regression which is fixed in:
11
+ # https://github.com/rails/rails/commit/31a485fa5a843a766c4b889ee88a6c590a3a6ebb
12
+
13
+
14
+ module Localeapp
15
+ module ForceExceptionHandlerInTranslationHelper
16
+ def translate(key, options = {})
17
+ super(key, {:raise => false}.merge(options))
18
+ end
19
+ alias :t :translate
20
+ end
21
+ end
22
+
23
+ ActionView::Base.send(:include, ::Localeapp::ForceExceptionHandlerInTranslationHelper)
@@ -0,0 +1,24 @@
1
+ # Rails 3.2.16 and 4.0.2 introduced a new way of displaying missing translation :
2
+ # they now wrap them in a <span> element with useful class and title
3
+ #
4
+ # https://github.com/rails/rails/commit/78790e4bceedc632cb40f9597792d7e27234138a
5
+
6
+ module Localeapp
7
+ module MimicRailsMissingTranslationDisplay
8
+
9
+ def self.included(o)
10
+ o.instance_eval do
11
+
12
+ alias :old_rails_call :call
13
+ def call(exception, locale, key, options)
14
+ locale, key = old_rails_call(exception, locale, key, options).split(', ')
15
+ "<span class=\"translation_missing\" title=\"translation missing: #{key}\">#{locale}, #{key}</span>".html_safe
16
+ end
17
+
18
+ end
19
+ end
20
+
21
+ end
22
+ end
23
+
24
+ Localeapp::ExceptionHandler.send(:include, ::Localeapp::MimicRailsMissingTranslationDisplay)
@@ -27,6 +27,14 @@ module Localeapp
27
27
  require 'localeapp/rails/2_3_translation_helper_monkeypatch'
28
28
  end
29
29
 
30
+ # Rails >= 4.0.2 || Rails >= 3.2.16
31
+ # ie: after CVE-2013-4491 patch (https://github.com/rails/rails/commit/78790e4bceedc632cb40f9597792d7e27234138a)
32
+ if (::Rails::VERSION::MAJOR == 4 && (::Rails::VERSION::MINOR > 0 or (::Rails::VERSION::MINOR == 0 && ::Rails::VERSION::TINY >= 2))) or
33
+ (::Rails::VERSION::MAJOR == 3 && (::Rails::VERSION::MINOR > 2 or (::Rails::VERSION::MINOR == 2 && ::Rails::VERSION::TINY >= 16)))
34
+ require 'localeapp/rails/force_exception_handler_in_translation_helper'
35
+ require 'localeapp/rails/mimic_rails_missing_translation_display'
36
+ end
37
+
30
38
  Localeapp.configure do |config|
31
39
  config.logger = rails_logger
32
40
  config.environment_name = rails_env
@@ -1,3 +1,3 @@
1
1
  module Localeapp
2
- VERSION = "0.6.14"
2
+ VERSION = '0.7.0'
3
3
  end
data/localeapp.gemspec CHANGED
@@ -28,9 +28,9 @@ Gem::Specification.new do |s|
28
28
  s.add_dependency('gli')
29
29
 
30
30
  s.add_development_dependency('rake')
31
- s.add_development_dependency('rspec', '2.11.0')
32
- s.add_development_dependency('yard', '0.6.7')
33
- s.add_development_dependency('RedCloth', '4.2.9')
34
- s.add_development_dependency('aruba', '0.5.1')
35
- s.add_development_dependency('fakeweb', '1.3.0')
31
+ s.add_development_dependency('rspec')
32
+ s.add_development_dependency('yard')
33
+ s.add_development_dependency('RedCloth')
34
+ s.add_development_dependency('aruba')
35
+ s.add_development_dependency('fakeweb')
36
36
  end
@@ -14,20 +14,20 @@ describe Localeapp::ApiCaller, "#call(object)" do
14
14
  @api_caller = Localeapp::ApiCaller.new(:test)
15
15
  end
16
16
  @url = 'https://example.com/test'
17
- @api_caller.stub!(:test_endpoint).and_return([:get, @url])
18
- @api_caller.stub!(:sleep_if_retrying)
17
+ @api_caller.stub(:test_endpoint).and_return([:get, @url])
18
+ @api_caller.stub(:sleep_if_retrying)
19
19
  end
20
20
 
21
21
  it "gets the method and url for the endpoint" do
22
22
  @api_caller.should_receive(:test_endpoint).with({}).and_return([:get, @url])
23
- RestClient::Request.stub!(:execute).and_return(double('response', :code => 200))
23
+ RestClient::Request.stub(:execute).and_return(double('response', :code => 200))
24
24
  @api_caller.call(self)
25
25
  end
26
26
 
27
27
  it "passes through any url options" do
28
28
  @api_caller.should_receive(:test_endpoint).with({:foo => :bar}).and_return([:get, @url])
29
29
  @api_caller.options[:url_options] = { :foo => :bar }
30
- RestClient::Request.stub!(:execute).and_return(double('response', :code => 200))
30
+ RestClient::Request.stub(:execute).and_return(double('response', :code => 200))
31
31
  @api_caller.call(self)
32
32
  end
33
33
 
@@ -43,7 +43,7 @@ describe Localeapp::ApiCaller, "#call(object)" do
43
43
 
44
44
  it "sets the response encoding based on the response charset" do
45
45
  response = "string"
46
- response.stub!(:code).and_return(200)
46
+ response.stub(:code).and_return(200)
47
47
  response.force_encoding('US-ASCII')
48
48
  response.stub_chain(:net_http_res, :type_params).and_return('charset' => 'utf-8')
49
49
  RestClient::Request.stub(:execute).and_return(response)
@@ -54,7 +54,7 @@ describe Localeapp::ApiCaller, "#call(object)" do
54
54
 
55
55
  context "Proxy" do
56
56
  before do
57
- RestClient::Request.stub!(:execute).and_return(double('response', :code => 200))
57
+ RestClient::Request.stub(:execute).and_return(double('response', :code => 200))
58
58
  end
59
59
 
60
60
  it "sets the proxy if configured" do
@@ -120,7 +120,7 @@ describe Localeapp::ApiCaller, "#call(object)" do
120
120
 
121
121
  context " a POST request" do
122
122
  before do
123
- @api_caller.stub!(:test_endpoint).and_return([:post, @url])
123
+ @api_caller.stub(:test_endpoint).and_return([:post, @url])
124
124
  @api_caller.options[:payload] = "test data"
125
125
  end
126
126
 
@@ -229,6 +229,13 @@ describe Localeapp::ApiCaller, "#call(object)" do
229
229
  @api_caller.call(@object)
230
230
  end
231
231
 
232
+ it "handles RestClient::ServerBrokeConnection" do
233
+ RestClient::Request.stub(:execute).and_raise(RestClient::ServerBrokeConnection)
234
+ @api_caller.options[:failure] = :fail
235
+ @object.should_receive(:fail)
236
+ @api_caller.call(@object)
237
+ end
238
+
232
239
  it "handles SocketError" do
233
240
  RestClient::Request.stub(:execute).and_raise(SocketError)
234
241
  @api_caller.options[:failure] = :fail
@@ -13,7 +13,7 @@ describe Localeapp::CLI::Add, "#execute(key, *translations)" do
13
13
 
14
14
  it "adds the translations to missing_translations" do
15
15
  with_configuration do
16
- Localeapp.sender.stub!(:post_missing_translations)
16
+ Localeapp.sender.stub(:post_missing_translations)
17
17
  do_action
18
18
  end
19
19
  en_missing = Localeapp.missing_translations['en']
@@ -28,7 +28,7 @@ describe Localeapp::CLI::Add, "#execute(key, *translations)" do
28
28
 
29
29
  it "ignores badly formed arguments" do
30
30
  with_configuration do
31
- Localeapp.sender.stub!(:post_missing_translations)
31
+ Localeapp.sender.stub(:post_missing_translations)
32
32
  do_action('test.key', ["en:this is fine", "esbad"])
33
33
  end
34
34
  Localeapp.missing_translations['en'].size.should == 1
@@ -30,7 +30,7 @@ describe Localeapp::CLI::Daemon, "#do_update" do
30
30
  let(:command) { Localeapp::CLI::Daemon.new(:output => output) }
31
31
 
32
32
  it "creates and executes and Updater" do
33
- stub = stub(:updater)
33
+ stub = double(:updater)
34
34
  stub.should_receive(:execute)
35
35
  Localeapp::CLI::Update.should_receive(:new).and_return(stub)
36
36
  command.do_update
@@ -8,14 +8,14 @@ describe Localeapp::CLI::Install, '.execute(key = nil)' do
8
8
 
9
9
  it "creates the installer based on the config type" do
10
10
  command.config_type = :heroku
11
- command.should_receive(:installer).with("HerokuInstaller").and_return(stub.as_null_object)
11
+ command.should_receive(:installer).with("HerokuInstaller").and_return(double.as_null_object)
12
12
  command.execute(key)
13
13
  end
14
14
 
15
15
  it "executes the installer with the given key" do
16
- installer = stub(:installer)
16
+ installer = double(:installer)
17
17
  installer.should_receive(:execute).with(key)
18
- command.stub!(:installer).and_return(installer)
18
+ command.stub(:installer).and_return(installer)
19
19
  command.execute(key)
20
20
  end
21
21
  end
@@ -26,8 +26,8 @@ describe Localeapp::CLI::Install::DefaultInstaller, '#execute(key = nil)' do
26
26
  let(:installer) { Localeapp::CLI::Install::DefaultInstaller.new(output) }
27
27
 
28
28
  before do
29
- installer.stub!(:print_header)
30
- installer.stub!(:validate_key).and_return(false)
29
+ installer.stub(:print_header)
30
+ installer.stub(:validate_key).and_return(false)
31
31
  end
32
32
 
33
33
  it "prints the header" do
@@ -49,11 +49,11 @@ describe Localeapp::CLI::Install::DefaultInstaller, '#execute(key = nil)' do
49
49
 
50
50
  context "When key validation is successful" do
51
51
  before do
52
- installer.stub!(:validate_key).and_return(true)
53
- installer.stub!(:check_default_locale)
54
- installer.stub!(:set_config_paths)
55
- installer.stub!(:write_config_file)
56
- installer.stub!(:check_data_directory_exists)
52
+ installer.stub(:validate_key).and_return(true)
53
+ installer.stub(:check_default_locale)
54
+ installer.stub(:set_config_paths)
55
+ installer.stub(:write_config_file)
56
+ installer.stub(:check_data_directory_exists)
57
57
  end
58
58
 
59
59
  it "checks the default locale" do
@@ -98,13 +98,13 @@ describe Localeapp::CLI::Install::DefaultInstaller, '#validate_key(key)' do
98
98
  end
99
99
 
100
100
  it "displays error if the key is there but isn't valid on localeapp.com" do
101
- installer.stub!(:check_key).and_return([false, {}])
101
+ installer.stub(:check_key).and_return([false, {}])
102
102
  installer.validate_key
103
103
  output.string.should match(/Project not found/)
104
104
  end
105
105
 
106
106
  it "displays project name if the key is there and valid on localeapp.com" do
107
- installer.stub!(:check_key).and_return([true, valid_project_data])
107
+ installer.stub(:check_key).and_return([true, valid_project_data])
108
108
  installer.validate_key
109
109
  output.string.should match(/Test Project/)
110
110
  end
@@ -115,7 +115,7 @@ describe Localeapp::CLI::Install::DefaultInstaller, '#check_default_locale' do
115
115
  let(:installer) { Localeapp::CLI::Install::DefaultInstaller.new(output) }
116
116
 
117
117
  before do
118
- installer.stub!(:project_data).and_return(valid_project_data)
118
+ installer.stub(:project_data).and_return(valid_project_data)
119
119
  end
120
120
 
121
121
  it "displays project base locale" do
@@ -156,7 +156,7 @@ describe Localeapp::CLI::Install::DefaultInstaller, '#write_config_file' do
156
156
  it "creates a configuration file containing just the api key" do
157
157
  installer.key = key
158
158
  installer.config_file_path = config_file_path
159
- file = stub('file')
159
+ file = double('file')
160
160
  file.should_receive(:write).with <<-CONTENT
161
161
  require 'localeapp/rails'
162
162
 
@@ -200,7 +200,7 @@ describe Localeapp::CLI::Install::HerokuInstaller, '#write_config_file' do
200
200
  it "creates a configuration file setup for staging / production on heroku" do
201
201
  installer.key = key
202
202
  installer.config_file_path = config_file_path
203
- file = stub('file')
203
+ file = double('file')
204
204
  file.should_receive(:write).with <<-CONTENT
205
205
  require 'localeapp/rails'
206
206
 
@@ -256,11 +256,11 @@ describe Localeapp::CLI::Install::StandaloneInstaller, '#write_config_file' do
256
256
  let(:installer) { Localeapp::CLI::Install::StandaloneInstaller.new(output) }
257
257
 
258
258
  it "creates a configuration file containing the dot file configuration at the given config_file_path" do
259
- installer.stub!(:create_config_dir).and_return(File.dirname(config_file_path))
259
+ installer.stub(:create_config_dir).and_return(File.dirname(config_file_path))
260
260
  installer.key = key
261
261
  installer.config_file_path = config_file_path
262
262
  installer.data_directory = data_directory
263
- file = stub('file')
263
+ file = double('file')
264
264
  file.should_receive(:write).with <<-CONTENT
265
265
  Localeapp.configure do |config|
266
266
  config.api_key = 'APIKEY'
@@ -285,11 +285,11 @@ describe Localeapp::CLI::Install::GithubInstaller, '#write_config_file' do
285
285
  installer.key = key
286
286
  installer.config_file_path = config_file_path
287
287
  installer.data_directory = data_directory
288
- installer.stub!(:create_config_dir).and_return(File.dirname(config_file_path))
289
- installer.stub!(:write_standalone_config)
290
- installer.stub!(:create_data_directory)
291
- installer.stub!(:create_gitignore)
292
- installer.stub!(:create_readme)
288
+ installer.stub(:create_config_dir).and_return(File.dirname(config_file_path))
289
+ installer.stub(:write_standalone_config)
290
+ installer.stub(:create_data_directory)
291
+ installer.stub(:create_gitignore)
292
+ installer.stub(:create_readme)
293
293
  end
294
294
 
295
295
  it "creates a standalone configuration file" do
@@ -29,7 +29,7 @@ describe Localeapp::CLI::Pull, "#update_backend(response)" do
29
29
 
30
30
  it "calls the updater" do
31
31
  with_configuration do
32
- Localeapp.poller.stub!(:write_synchronization_data!)
32
+ Localeapp.poller.stub(:write_synchronization_data!)
33
33
  Localeapp.updater.should_receive(:dump).with(['test data'])
34
34
  @puller.update_backend(@test_data)
35
35
  end
@@ -37,7 +37,7 @@ describe Localeapp::CLI::Pull, "#update_backend(response)" do
37
37
 
38
38
  it "writes the synchronization data" do
39
39
  with_configuration do
40
- Localeapp.updater.stub!(:dump)
40
+ Localeapp.updater.stub(:dump)
41
41
  Localeapp.poller.should_receive(:write_synchronization_data!)
42
42
  @puller.update_backend(@test_data)
43
43
  end
@@ -10,7 +10,7 @@ describe Localeapp::CLI::Push, "#execute(path)" do
10
10
  directory = double('directory')
11
11
  path = 'test_path'
12
12
  yaml_files = %w(en.yml es.yml)
13
- pusher.stub!(:path_is_directory?).and_return(true)
13
+ pusher.stub(:path_is_directory?).and_return(true)
14
14
  pusher.should_receive(:yaml_files_in_directory).with(path).and_return(yaml_files)
15
15
  pusher.should_receive(:push_file).with('en.yml')
16
16
  pusher.should_receive(:push_file).with('es.yml')
@@ -39,7 +39,7 @@ describe Localeapp::CLI::Push, "#push_file(file_path)" do
39
39
  with_configuration do
40
40
  file = double('file')
41
41
  file_path = 'test_path'
42
- pusher.stub!(:sanitize_file).and_return(file)
42
+ pusher.stub(:sanitize_file).and_return(file)
43
43
  pusher.should_receive(:api_call).with(
44
44
  :import,
45
45
  :payload => { :file => file },
@@ -52,7 +52,7 @@ describe Localeapp::CLI::Push, "#push_file(file_path)" do
52
52
  end
53
53
 
54
54
  it "doesn't make the api call when the file doesn't exist" do
55
- pusher.stub!(:sanitize_file).and_return(nil)
55
+ pusher.stub(:sanitize_file).and_return(nil)
56
56
  pusher.should_not_receive(:api_call)
57
57
  pusher.push_file('foo')
58
58
  end
@@ -55,7 +55,7 @@ describe I18n::Backend::Base, '#default' do
55
55
  it "doesn't send anything to Locale" do
56
56
  allow_sending do
57
57
  Localeapp.missing_translations.should_not_receive(:add)
58
- I18n.stub!(:translate) do |subject, _|
58
+ I18n.stub(:translate) do |subject, _|
59
59
  subject == :not_missing ? "not missing" : nil
60
60
  end
61
61
  klass.default(:en, 'foo', [:missing, :not_missing], :baz => 'bam')
@@ -75,7 +75,7 @@ describe Localeapp::Poller do
75
75
  end
76
76
 
77
77
  it "updates the polled_at but not the updated_at synchronization data" do
78
- @poller.stub!(:current_time).and_return(polled_at_time)
78
+ @poller.stub(:current_time).and_return(polled_at_time)
79
79
  @poller.should_receive(:write_synchronization_data!).with(polled_at_time, @updated_at)
80
80
  @poller.poll!
81
81
  end
@@ -116,7 +116,7 @@ describe Localeapp::Poller do
116
116
  end
117
117
 
118
118
  it "updates the polled_at and the updated_at synchronization data" do
119
- @poller.stub!(:current_time).and_return(polled_at_time)
119
+ @poller.stub(:current_time).and_return(polled_at_time)
120
120
  @poller.should_receive(:write_synchronization_data!).with(polled_at_time, updated_at_time)
121
121
  @poller.poll!
122
122
  end
@@ -19,6 +19,7 @@ describe Localeapp::Rails::Controller, '#handle_translation_updates' do
19
19
  with_configuration(configuration) do
20
20
  @controller = TestController.new
21
21
  end
22
+ now = Time.now; Time.stub(:now).and_return(now)
22
23
  end
23
24
 
24
25
  after do
@@ -29,7 +30,7 @@ describe Localeapp::Rails::Controller, '#handle_translation_updates' do
29
30
  before do
30
31
  Localeapp.configuration.environment_name = 'development'
31
32
  end
32
-
33
+
33
34
  it "calls poller.poll! when the synchronization file's polled_at has changed" do
34
35
  Localeapp.poller.write_synchronization_data!(01234, 56789)
35
36
  Localeapp.poller.should_receive(:poll!)
@@ -58,13 +59,13 @@ describe Localeapp::Rails::Controller, '#handle_translation_updates' do
58
59
  @controller.handle_translation_updates
59
60
  end
60
61
  end
61
-
62
+
62
63
  context "when reloading is enabled" do
63
64
  before do
64
65
  Localeapp.configuration.environment_name = 'development'
65
- Localeapp.poller.stub!(:poll!)
66
+ Localeapp.poller.stub(:poll!)
66
67
  end
67
-
68
+
68
69
  it "calls I18n.reload! when the synchronization file's updated_at has changed" do
69
70
  Localeapp.poller.write_synchronization_data!(01234, 56789)
70
71
  I18n.should_receive(:reload!)
@@ -76,7 +77,7 @@ describe Localeapp::Rails::Controller, '#handle_translation_updates' do
76
77
  @controller.handle_translation_updates
77
78
  end
78
79
  end
79
-
80
+
80
81
  context "when reloading is disabled" do
81
82
  before do
82
83
  Localeapp.configuration.environment_name = 'production'
metadata CHANGED
@@ -1,212 +1,194 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: localeapp
3
- version: !ruby/object:Gem::Version
4
- hash: 27
5
- prerelease:
6
- segments:
7
- - 0
8
- - 6
9
- - 14
10
- version: 0.6.14
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.7.0
11
5
  platform: ruby
12
- authors:
6
+ authors:
13
7
  - Christopher Dell
14
8
  - Chris McGrath
15
9
  autorequire:
16
10
  bindir: bin
17
11
  cert_chain: []
18
-
19
- date: 2013-10-21 00:00:00 Z
20
- dependencies:
21
- - !ruby/object:Gem::Dependency
12
+ date: 2014-02-04 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
22
15
  name: i18n
16
+ requirement: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - '>='
19
+ - !ruby/object:Gem::Version
20
+ version: '0'
23
21
  type: :runtime
24
22
  prerelease: false
25
- version_requirements: &id001 !ruby/object:Gem::Requirement
26
- none: false
27
- requirements:
28
- - - ">="
29
- - !ruby/object:Gem::Version
30
- hash: 3
31
- segments:
32
- - 0
33
- version: "0"
34
- requirement: *id001
35
- - !ruby/object:Gem::Dependency
23
+ version_requirements: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - '>='
26
+ - !ruby/object:Gem::Version
27
+ version: '0'
28
+ - !ruby/object:Gem::Dependency
36
29
  name: json
30
+ requirement: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - '>='
33
+ - !ruby/object:Gem::Version
34
+ version: '0'
37
35
  type: :runtime
38
36
  prerelease: false
39
- version_requirements: &id002 !ruby/object:Gem::Requirement
40
- none: false
41
- requirements:
42
- - - ">="
43
- - !ruby/object:Gem::Version
44
- hash: 3
45
- segments:
46
- - 0
47
- version: "0"
48
- requirement: *id002
49
- - !ruby/object:Gem::Dependency
37
+ version_requirements: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - '>='
40
+ - !ruby/object:Gem::Version
41
+ version: '0'
42
+ - !ruby/object:Gem::Dependency
50
43
  name: rest-client
44
+ requirement: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - '>='
47
+ - !ruby/object:Gem::Version
48
+ version: '0'
51
49
  type: :runtime
52
50
  prerelease: false
53
- version_requirements: &id003 !ruby/object:Gem::Requirement
54
- none: false
55
- requirements:
56
- - - ">="
57
- - !ruby/object:Gem::Version
58
- hash: 3
59
- segments:
60
- - 0
61
- version: "0"
62
- requirement: *id003
63
- - !ruby/object:Gem::Dependency
51
+ version_requirements: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - '>='
54
+ - !ruby/object:Gem::Version
55
+ version: '0'
56
+ - !ruby/object:Gem::Dependency
64
57
  name: rack
58
+ requirement: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - '>='
61
+ - !ruby/object:Gem::Version
62
+ version: '0'
65
63
  type: :runtime
66
64
  prerelease: false
67
- version_requirements: &id004 !ruby/object:Gem::Requirement
68
- none: false
69
- requirements:
70
- - - ">="
71
- - !ruby/object:Gem::Version
72
- hash: 3
73
- segments:
74
- - 0
75
- version: "0"
76
- requirement: *id004
77
- - !ruby/object:Gem::Dependency
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - '>='
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
70
+ - !ruby/object:Gem::Dependency
78
71
  name: ya2yaml
72
+ requirement: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - '>='
75
+ - !ruby/object:Gem::Version
76
+ version: '0'
79
77
  type: :runtime
80
78
  prerelease: false
81
- version_requirements: &id005 !ruby/object:Gem::Requirement
82
- none: false
83
- requirements:
84
- - - ">="
85
- - !ruby/object:Gem::Version
86
- hash: 3
87
- segments:
88
- - 0
89
- version: "0"
90
- requirement: *id005
91
- - !ruby/object:Gem::Dependency
79
+ version_requirements: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - '>='
82
+ - !ruby/object:Gem::Version
83
+ version: '0'
84
+ - !ruby/object:Gem::Dependency
92
85
  name: gli
86
+ requirement: !ruby/object:Gem::Requirement
87
+ requirements:
88
+ - - '>='
89
+ - !ruby/object:Gem::Version
90
+ version: '0'
93
91
  type: :runtime
94
92
  prerelease: false
95
- version_requirements: &id006 !ruby/object:Gem::Requirement
96
- none: false
97
- requirements:
98
- - - ">="
99
- - !ruby/object:Gem::Version
100
- hash: 3
101
- segments:
102
- - 0
103
- version: "0"
104
- requirement: *id006
105
- - !ruby/object:Gem::Dependency
93
+ version_requirements: !ruby/object:Gem::Requirement
94
+ requirements:
95
+ - - '>='
96
+ - !ruby/object:Gem::Version
97
+ version: '0'
98
+ - !ruby/object:Gem::Dependency
106
99
  name: rake
100
+ requirement: !ruby/object:Gem::Requirement
101
+ requirements:
102
+ - - '>='
103
+ - !ruby/object:Gem::Version
104
+ version: '0'
107
105
  type: :development
108
106
  prerelease: false
109
- version_requirements: &id007 !ruby/object:Gem::Requirement
110
- none: false
111
- requirements:
112
- - - ">="
113
- - !ruby/object:Gem::Version
114
- hash: 3
115
- segments:
116
- - 0
117
- version: "0"
118
- requirement: *id007
119
- - !ruby/object:Gem::Dependency
107
+ version_requirements: !ruby/object:Gem::Requirement
108
+ requirements:
109
+ - - '>='
110
+ - !ruby/object:Gem::Version
111
+ version: '0'
112
+ - !ruby/object:Gem::Dependency
120
113
  name: rspec
114
+ requirement: !ruby/object:Gem::Requirement
115
+ requirements:
116
+ - - '>='
117
+ - !ruby/object:Gem::Version
118
+ version: '0'
121
119
  type: :development
122
120
  prerelease: false
123
- version_requirements: &id008 !ruby/object:Gem::Requirement
124
- none: false
125
- requirements:
126
- - - "="
127
- - !ruby/object:Gem::Version
128
- hash: 35
129
- segments:
130
- - 2
131
- - 11
132
- - 0
133
- version: 2.11.0
134
- requirement: *id008
135
- - !ruby/object:Gem::Dependency
121
+ version_requirements: !ruby/object:Gem::Requirement
122
+ requirements:
123
+ - - '>='
124
+ - !ruby/object:Gem::Version
125
+ version: '0'
126
+ - !ruby/object:Gem::Dependency
136
127
  name: yard
128
+ requirement: !ruby/object:Gem::Requirement
129
+ requirements:
130
+ - - '>='
131
+ - !ruby/object:Gem::Version
132
+ version: '0'
137
133
  type: :development
138
134
  prerelease: false
139
- version_requirements: &id009 !ruby/object:Gem::Requirement
140
- none: false
141
- requirements:
142
- - - "="
143
- - !ruby/object:Gem::Version
144
- hash: 9
145
- segments:
146
- - 0
147
- - 6
148
- - 7
149
- version: 0.6.7
150
- requirement: *id009
151
- - !ruby/object:Gem::Dependency
135
+ version_requirements: !ruby/object:Gem::Requirement
136
+ requirements:
137
+ - - '>='
138
+ - !ruby/object:Gem::Version
139
+ version: '0'
140
+ - !ruby/object:Gem::Dependency
152
141
  name: RedCloth
142
+ requirement: !ruby/object:Gem::Requirement
143
+ requirements:
144
+ - - '>='
145
+ - !ruby/object:Gem::Version
146
+ version: '0'
153
147
  type: :development
154
148
  prerelease: false
155
- version_requirements: &id010 !ruby/object:Gem::Requirement
156
- none: false
157
- requirements:
158
- - - "="
159
- - !ruby/object:Gem::Version
160
- hash: 37
161
- segments:
162
- - 4
163
- - 2
164
- - 9
165
- version: 4.2.9
166
- requirement: *id010
167
- - !ruby/object:Gem::Dependency
149
+ version_requirements: !ruby/object:Gem::Requirement
150
+ requirements:
151
+ - - '>='
152
+ - !ruby/object:Gem::Version
153
+ version: '0'
154
+ - !ruby/object:Gem::Dependency
168
155
  name: aruba
156
+ requirement: !ruby/object:Gem::Requirement
157
+ requirements:
158
+ - - '>='
159
+ - !ruby/object:Gem::Version
160
+ version: '0'
169
161
  type: :development
170
162
  prerelease: false
171
- version_requirements: &id011 !ruby/object:Gem::Requirement
172
- none: false
173
- requirements:
174
- - - "="
175
- - !ruby/object:Gem::Version
176
- hash: 9
177
- segments:
178
- - 0
179
- - 5
180
- - 1
181
- version: 0.5.1
182
- requirement: *id011
183
- - !ruby/object:Gem::Dependency
163
+ version_requirements: !ruby/object:Gem::Requirement
164
+ requirements:
165
+ - - '>='
166
+ - !ruby/object:Gem::Version
167
+ version: '0'
168
+ - !ruby/object:Gem::Dependency
184
169
  name: fakeweb
170
+ requirement: !ruby/object:Gem::Requirement
171
+ requirements:
172
+ - - '>='
173
+ - !ruby/object:Gem::Version
174
+ version: '0'
185
175
  type: :development
186
176
  prerelease: false
187
- version_requirements: &id012 !ruby/object:Gem::Requirement
188
- none: false
189
- requirements:
190
- - - "="
191
- - !ruby/object:Gem::Version
192
- hash: 27
193
- segments:
194
- - 1
195
- - 3
196
- - 0
197
- version: 1.3.0
198
- requirement: *id012
199
- description: Synchronizes i18n translation keys and content with localeapp.com so you don't have to manage translations by hand.
200
- email:
177
+ version_requirements: !ruby/object:Gem::Requirement
178
+ requirements:
179
+ - - '>='
180
+ - !ruby/object:Gem::Version
181
+ version: '0'
182
+ description: Synchronizes i18n translation keys and content with localeapp.com so
183
+ you don't have to manage translations by hand.
184
+ email:
201
185
  - chris@tigrish.com
202
186
  - chris@octopod.info
203
- executables:
187
+ executables:
204
188
  - localeapp
205
189
  extensions: []
206
-
207
190
  extra_rdoc_files: []
208
-
209
- files:
191
+ files:
210
192
  - .autotest
211
193
  - .gitignore
212
194
  - .rspec
@@ -258,6 +240,8 @@ files:
258
240
  - lib/localeapp/rails/2_3_translation_helper_monkeypatch.rb
259
241
  - lib/localeapp/rails/controller.rb
260
242
  - lib/localeapp/rails/flatten.rb
243
+ - lib/localeapp/rails/force_exception_handler_in_translation_helper.rb
244
+ - lib/localeapp/rails/mimic_rails_missing_translation_display.rb
261
245
  - lib/localeapp/routes.rb
262
246
  - lib/localeapp/sender.rb
263
247
  - lib/localeapp/tasks/localeapp.rake
@@ -292,75 +276,28 @@ files:
292
276
  - spec/support/localeapp_integration_data.rb
293
277
  - spec/support/localeapp_synchronization_data.rb
294
278
  homepage: http://www.localeapp.com
295
- licenses:
279
+ licenses:
296
280
  - MIT
281
+ metadata: {}
297
282
  post_install_message:
298
283
  rdoc_options: []
299
-
300
- require_paths:
284
+ require_paths:
301
285
  - lib
302
- required_ruby_version: !ruby/object:Gem::Requirement
303
- none: false
304
- requirements:
305
- - - ">="
306
- - !ruby/object:Gem::Version
307
- hash: 3
308
- segments:
309
- - 0
310
- version: "0"
311
- required_rubygems_version: !ruby/object:Gem::Requirement
312
- none: false
313
- requirements:
314
- - - ">="
315
- - !ruby/object:Gem::Version
316
- hash: 3
317
- segments:
318
- - 0
319
- version: "0"
286
+ required_ruby_version: !ruby/object:Gem::Requirement
287
+ requirements:
288
+ - - '>='
289
+ - !ruby/object:Gem::Version
290
+ version: '0'
291
+ required_rubygems_version: !ruby/object:Gem::Requirement
292
+ requirements:
293
+ - - '>='
294
+ - !ruby/object:Gem::Version
295
+ version: '0'
320
296
  requirements: []
321
-
322
297
  rubyforge_project: localeapp
323
- rubygems_version: 1.8.6
298
+ rubygems_version: 2.2.1
324
299
  signing_key:
325
- specification_version: 3
300
+ specification_version: 4
326
301
  summary: Easy i18n translation management with localeapp.com
327
- test_files:
328
- - features/add.feature
329
- - features/bad_command.feature
330
- - features/help.feature
331
- - features/install.feature
332
- - features/mv.feature
333
- - features/pull.feature
334
- - features/push.feature
335
- - features/rm.feature
336
- - features/step_definitions/cli_steps.rb
337
- - features/support/env.rb
338
- - features/support/hooks.rb
339
- - features/update.feature
340
- - spec/fixtures/empty_log.yml
341
- - spec/fixtures/en.yml
342
- - spec/fixtures/es.yml
343
- - spec/localeapp/api_call_spec.rb
344
- - spec/localeapp/api_caller_spec.rb
345
- - spec/localeapp/cli/add_spec.rb
346
- - spec/localeapp/cli/daemon_spec.rb
347
- - spec/localeapp/cli/install_spec.rb
348
- - spec/localeapp/cli/pull_spec.rb
349
- - spec/localeapp/cli/push_spec.rb
350
- - spec/localeapp/cli/rename_spec.rb
351
- - spec/localeapp/cli/update_spec.rb
352
- - spec/localeapp/configuration_spec.rb
353
- - spec/localeapp/default_value_handler_spec.rb
354
- - spec/localeapp/exception_handler_spec.rb
355
- - spec/localeapp/key_checker_spec.rb
356
- - spec/localeapp/missing_translations_spec.rb
357
- - spec/localeapp/poller_spec.rb
358
- - spec/localeapp/rails/controller_spec.rb
359
- - spec/localeapp/routes_spec.rb
360
- - spec/localeapp/sender_spec.rb
361
- - spec/localeapp/updater_spec.rb
362
- - spec/localeapp_spec.rb
363
- - spec/spec_helper.rb
364
- - spec/support/i18n/missing_translation.rb
365
- - spec/support/localeapp_integration_data.rb
366
- - spec/support/localeapp_synchronization_data.rb
302
+ test_files: []
303
+ has_rdoc: