localeapp 0.0.7 → 0.0.8

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 (52) hide show
  1. data/.rvmrc +1 -1
  2. data/bin/localeapp +9 -9
  3. data/features/localeapp_binary.feature +17 -17
  4. data/features/support/env.rb +2 -2
  5. data/init.rb +1 -1
  6. data/lib/{locale_app → localeapp}/api_call.rb +2 -2
  7. data/lib/{locale_app → localeapp}/api_caller.rb +8 -8
  8. data/lib/{locale_app → localeapp}/cli/install.rb +7 -7
  9. data/lib/{locale_app → localeapp}/cli/pull.rb +5 -5
  10. data/lib/{locale_app → localeapp}/cli/push.rb +3 -3
  11. data/lib/{locale_app → localeapp}/cli/update.rb +3 -3
  12. data/lib/{locale_app → localeapp}/configuration.rb +7 -7
  13. data/lib/localeapp/exception_handler.rb +21 -0
  14. data/lib/{locale_app → localeapp}/key_checker.rb +6 -6
  15. data/lib/{locale_app → localeapp}/missing_translations.rb +1 -1
  16. data/lib/{locale_app → localeapp}/poller.rb +7 -7
  17. data/lib/{locale_app → localeapp}/rails/2_3_translation_helper_monkeypatch.rb +2 -2
  18. data/lib/localeapp/rails/controller.rb +34 -0
  19. data/lib/{locale_app → localeapp}/rails/flatten.rb +0 -0
  20. data/lib/{locale_app → localeapp}/rails.rb +11 -11
  21. data/lib/{locale_app → localeapp}/routes.rb +5 -5
  22. data/lib/{locale_app → localeapp}/sender.rb +8 -8
  23. data/lib/{locale_app/tasks/locale_app.rake → localeapp/tasks/localeapp.rake} +2 -2
  24. data/lib/{locale_app → localeapp}/updater.rb +2 -2
  25. data/lib/localeapp/version.rb +3 -0
  26. data/lib/localeapp.rb +98 -1
  27. data/localeapp.gemspec +2 -2
  28. data/run_ci +1 -1
  29. data/spec/{locale_app → localeapp}/api_call_spec.rb +3 -3
  30. data/spec/{locale_app → localeapp}/api_caller_spec.rb +4 -4
  31. data/spec/{locale_app → localeapp}/cli/install_spec.rb +3 -3
  32. data/spec/{locale_app → localeapp}/cli/pull_spec.rb +9 -9
  33. data/spec/{locale_app → localeapp}/cli/push_spec.rb +2 -2
  34. data/spec/localeapp/cli/update_spec.rb +18 -0
  35. data/spec/{locale_app → localeapp}/configuration_spec.rb +6 -6
  36. data/spec/{locale_app → localeapp}/exception_handler_spec.rb +6 -6
  37. data/spec/{locale_app → localeapp}/key_checker_spec.rb +3 -3
  38. data/spec/{locale_app → localeapp}/missing_translations_spec.rb +5 -5
  39. data/spec/{locale_app → localeapp}/poller_spec.rb +5 -5
  40. data/spec/{locale_app → localeapp}/rails/controller_spec.rb +28 -28
  41. data/spec/{locale_app → localeapp}/routes_spec.rb +2 -2
  42. data/spec/{locale_app → localeapp}/sender_spec.rb +6 -6
  43. data/spec/{locale_app → localeapp}/updater_spec.rb +2 -2
  44. data/spec/spec_helper.rb +7 -7
  45. data/spec/support/{locale_app_integration_data.rb → localeapp_integration_data.rb} +1 -1
  46. data/spec/support/{locale_app_synchronization_data.rb → localeapp_synchronization_data.rb} +1 -1
  47. metadata +57 -58
  48. data/lib/locale_app/exception_handler.rb +0 -21
  49. data/lib/locale_app/rails/controller.rb +0 -34
  50. data/lib/locale_app/version.rb +0 -3
  51. data/lib/locale_app.rb +0 -98
  52. data/spec/locale_app/cli/update_spec.rb +0 -18
data/.rvmrc CHANGED
@@ -1 +1 @@
1
- rvm ruby-1.9.2@locale_app
1
+ rvm ruby-1.9.2@localeapp
data/bin/localeapp CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env ruby
2
2
  $LOAD_PATH.unshift(File.expand_path(File.join(File.dirname(__FILE__), '..', 'lib')))
3
3
 
4
- require 'locale_app'
4
+ require 'localeapp'
5
5
 
6
6
  # Don't connect to the net if we're running under cucumber for testing
7
7
  # Use FakeWeb to simulate api.localeapp.com
@@ -19,7 +19,7 @@ args = ARGV.dup
19
19
  command = args.shift.strip rescue nil
20
20
 
21
21
  unless %w{help install}.include?(command)
22
- unless LocaleApp.include_config_file
22
+ unless Localeapp.include_config_file
23
23
  puts "Could not load config file"
24
24
  exit
25
25
  end
@@ -28,23 +28,23 @@ end
28
28
  case command
29
29
  when 'install'
30
30
  key = args.shift.strip rescue nil
31
- installer = LocaleApp::CLI::Install.new
31
+ installer = Localeapp::CLI::Install.new
32
32
  if installer.execute(key)
33
33
  exit 0
34
34
  else
35
35
  exit 1
36
36
  end
37
37
  when 'pull'
38
- LocaleApp::CLI::Pull.new.execute
38
+ Localeapp::CLI::Pull.new.execute
39
39
  when 'push'
40
40
  file = args.shift.strip rescue nil
41
- pusher = LocaleApp::CLI::Push.new
41
+ pusher = Localeapp::CLI::Push.new
42
42
  pusher.execute(file)
43
43
  when 'update'
44
- LocaleApp::CLI::Update.new.execute
44
+ Localeapp::CLI::Update.new.execute
45
45
  when 'daemon'
46
46
  while true do
47
- LocaleApp::CLI::Update.new.execute
47
+ Localeapp::CLI::Update.new.execute
48
48
  sleep 5
49
49
  end
50
50
  else
@@ -53,8 +53,8 @@ Usage: localeapp COMMAND [ARGS]
53
53
 
54
54
  Commands:
55
55
  install <api_key> - Creates new configuration files and confirms key works
56
- pull - Pulls all translations from LocaleApp.com
57
- push <file> - Pushes a translation file to LocaleApp.com
56
+ pull - Pulls all translations from localeapp.com
57
+ push <file> - Pushes a translation file to localeapp.com
58
58
  update - Gets any changes since the last poll and updates the yml files
59
59
  daemon - Simple daemon that checks every 5 seconds for new translations
60
60
  HELP
@@ -9,7 +9,7 @@ Feature: localeapp executable
9
9
 
10
10
  Commands:
11
11
  install <api_key> - Creates new configuration files and confirms key works
12
- pull - Pulls all translations from LocaleApp.com
12
+ pull - Pulls all translations from localeapp.com
13
13
  """
14
14
 
15
15
  Scenario: Running install
@@ -18,7 +18,7 @@ Feature: localeapp executable
18
18
  And I run `localeapp install MYAPIKEY`
19
19
  Then the output should contain:
20
20
  """
21
- LocaleApp Install
21
+ Localeapp Install
22
22
 
23
23
  Checking API key: MYAPIKEY
24
24
  Success!
@@ -34,21 +34,21 @@ Feature: localeapp executable
34
34
  And I run `localeapp install BADAPIKEY`
35
35
  Then the output should contain:
36
36
  """
37
- LocaleApp Install
37
+ Localeapp Install
38
38
 
39
39
  Checking API key: BADAPIKEY
40
40
  ERROR: Project not found
41
41
  """
42
- And a file named "config/initializers/locale_app.rb" should not exist
42
+ And a file named "config/initializers/localeapp.rb" should not exist
43
43
  And the exit status should not be 0
44
44
 
45
45
  Scenario: Running pull
46
46
  In order to retreive my translations
47
47
  Given I have a translations on localeapp.com for the project with api key "MYAPIKEY"
48
- And a file named "config/initializers/locale_app.rb" with:
48
+ And a file named "config/initializers/localeapp.rb" with:
49
49
  """
50
- require 'locale_app/rails'
51
- LocaleApp.configure do |config|
50
+ require 'localeapp/rails'
51
+ Localeapp.configure do |config|
52
52
  config.api_key = 'MYAPIKEY'
53
53
  end
54
54
  """
@@ -56,7 +56,7 @@ Feature: localeapp executable
56
56
  When I run `localeapp pull`
57
57
  Then the output should contain:
58
58
  """
59
- LocaleApp Pull
59
+ Localeapp Pull
60
60
 
61
61
  Fetching translations:
62
62
  Success!
@@ -68,10 +68,10 @@ Feature: localeapp executable
68
68
  Scenario: Running push
69
69
  In order to send my translations
70
70
  When I have a valid project on localeapp.com with api key "MYAPIKEY"
71
- And a file named "config/initializers/locale_app.rb" with:
71
+ And a file named "config/initializers/localeapp.rb" with:
72
72
  """
73
- require 'locale_app/rails'
74
- LocaleApp.configure do |config|
73
+ require 'localeapp/rails'
74
+ Localeapp.configure do |config|
75
75
  config.api_key = 'MYAPIKEY'
76
76
  end
77
77
  """
@@ -79,7 +79,7 @@ Feature: localeapp executable
79
79
  When I run `localeapp push config/locales/en.yml`
80
80
  Then the output should contain:
81
81
  """
82
- LocaleApp Push
82
+ Localeapp Push
83
83
 
84
84
  Pushing file:
85
85
  Success!
@@ -90,14 +90,14 @@ Feature: localeapp executable
90
90
  Scenario: Running update
91
91
  In order to receive the translations that have been updated since the last check
92
92
  When I have a valid project on localeapp.com with api key "MYAPIKEY"
93
- And a file named "config/initializers/locale_app.rb" with:
93
+ And a file named "config/initializers/localeapp.rb" with:
94
94
  """
95
- require 'locale_app/rails'
96
- LocaleApp.configure do |config|
95
+ require 'localeapp/rails'
96
+ Localeapp.configure do |config|
97
97
  config.api_key = 'MYAPIKEY'
98
98
  end
99
99
  """
100
- And a file named "log/locale_app.yml" with:
100
+ And a file named "log/localeapp.yml" with:
101
101
  """
102
102
  ---
103
103
  :updated_at: 120
@@ -108,7 +108,7 @@ Feature: localeapp executable
108
108
  When I run `localeapp update`
109
109
  Then the output should contain:
110
110
  """
111
- LocaleApp update: checking for translations since 120
111
+ Localeapp update: checking for translations since 120
112
112
  Found and updated new translations
113
113
  """
114
114
  And a file named "config/locales/en.yml" should exist
@@ -1,6 +1,6 @@
1
1
  require 'aruba/cucumber'
2
- require File.expand_path(File.join(File.dirname(__FILE__), '../../spec/support/locale_app_integration_data'))
3
- World(LocaleAppIntegrationData)
2
+ require File.expand_path(File.join(File.dirname(__FILE__), '../../spec/support/localeapp_integration_data'))
3
+ World(LocaleappIntegrationData)
4
4
 
5
5
  ENV['PATH'] = "#{File.expand_path(File.dirname(__FILE__) + '/../../bin')}#{File::PATH_SEPARATOR}#{ENV['PATH']}"
6
6
 
data/init.rb CHANGED
@@ -1 +1 @@
1
- require 'locale_app'
1
+ require 'localeapp'
@@ -1,8 +1,8 @@
1
- module LocaleApp
1
+ module Localeapp
2
2
  module ApiCall
3
3
  # creates an object to perform the call
4
4
  def api_call(endpoint, options = {})
5
- api_caller = LocaleApp::ApiCaller.new(endpoint, options)
5
+ api_caller = Localeapp::ApiCaller.new(endpoint, options)
6
6
  api_caller.call(self)
7
7
  end
8
8
  end
@@ -1,6 +1,6 @@
1
- module LocaleApp
1
+ module Localeapp
2
2
  class ApiCaller
3
- include ::LocaleApp::Routes
3
+ include ::Localeapp::Routes
4
4
 
5
5
  NonHTTPResponse = Struct.new(:code)
6
6
 
@@ -20,16 +20,16 @@ module LocaleApp
20
20
 
21
21
  def call(obj)
22
22
  method, url = send("#{endpoint}_endpoint", options[:url_options] || {})
23
- LocaleApp.debug("API CALL: #{method} #{url}")
23
+ Localeapp.debug("API CALL: #{method} #{url}")
24
24
  success = false
25
25
  while connection_attempts < max_connection_attempts
26
26
  sleep_if_retrying
27
27
  response = make_call(method, url)
28
- LocaleApp.debug("RESPONSE: #{response.code}")
28
+ Localeapp.debug("RESPONSE: #{response.code}")
29
29
  valid_response_codes = (200..207).to_a
30
30
  if valid_response_codes.include?(response.code.to_i)
31
31
  if options[:success]
32
- LocaleApp.debug("CALLING SUCCESS HANDLER: #{options[:success]}")
32
+ Localeapp.debug("CALLING SUCCESS HANDLER: #{options[:success]}")
33
33
  obj.send(options[:success], response)
34
34
  end
35
35
  success = true
@@ -46,7 +46,7 @@ module LocaleApp
46
46
  def make_call(method, url)
47
47
  begin
48
48
  @connection_attempts += 1
49
- LocaleApp.debug("ATTEMPT #{@connection_attempts}")
49
+ Localeapp.debug("ATTEMPT #{@connection_attempts}")
50
50
  request_options = options[:request_options] || {}
51
51
  if method == :post
52
52
  RestClient.send(method, url, options[:payload], request_options)
@@ -61,7 +61,7 @@ module LocaleApp
61
61
  RestClient::GatewayTimeout => error
62
62
  return error.response
63
63
  rescue Errno::ECONNREFUSED => error
64
- LocaleApp.debug("ERROR: Connection Refused")
64
+ Localeapp.debug("ERROR: Connection Refused")
65
65
  return NonHTTPResponse.new(-1)
66
66
  end
67
67
  end
@@ -69,7 +69,7 @@ module LocaleApp
69
69
  def sleep_if_retrying
70
70
  if @connection_attempts > 0
71
71
  time = @connection_attempts * 5
72
- LocaleApp.debug("Sleeping for #{time} before retrying")
72
+ Localeapp.debug("Sleeping for #{time} before retrying")
73
73
  sleep time
74
74
  end
75
75
  end
@@ -1,8 +1,8 @@
1
- module LocaleApp
1
+ module Localeapp
2
2
  module CLI
3
3
  class Install
4
4
  def execute(key, output = $stdout)
5
- output.puts "LocaleApp Install"
5
+ output.puts "Localeapp Install"
6
6
  output.puts ""
7
7
  output.puts "Checking API key: #{key}"
8
8
  if key.nil?
@@ -13,9 +13,9 @@ module LocaleApp
13
13
  if valid_key
14
14
  output.puts "Success!"
15
15
  output.puts "Project: #{project_data['name']}"
16
- locale_app_default_code = project_data['default_locale']['code']
17
- output.puts "Default Locale: #{locale_app_default_code} (#{project_data['default_locale']['name']})"
18
- if I18n.default_locale.to_s != locale_app_default_code
16
+ localeapp_default_code = project_data['default_locale']['code']
17
+ output.puts "Default Locale: #{localeapp_default_code} (#{project_data['default_locale']['name']})"
18
+ if I18n.default_locale.to_s != localeapp_default_code
19
19
  output.puts "WARNING: I18n.default_locale is #{I18n.default_locale}, change in config/environment.rb (Rails 2) or config/application.rb (Rails 3)"
20
20
  end
21
21
  config_file_path = "config/initializers/localeapp.rb"
@@ -30,11 +30,11 @@ module LocaleApp
30
30
 
31
31
  private
32
32
  def check_key(key)
33
- LocaleApp::KeyChecker.new.check(key)
33
+ Localeapp::KeyChecker.new.check(key)
34
34
  end
35
35
 
36
36
  def write_configuration_file(path)
37
- LocaleApp.configuration.write_initial(path)
37
+ Localeapp.configuration.write_initial(path)
38
38
  end
39
39
  end
40
40
  end
@@ -1,14 +1,14 @@
1
- module LocaleApp
1
+ module Localeapp
2
2
  module CLI
3
3
  class Pull
4
- include ::LocaleApp::ApiCall
4
+ include ::Localeapp::ApiCall
5
5
 
6
6
  def initialize(output = $stdout)
7
7
  @output = output
8
8
  end
9
9
 
10
10
  def execute
11
- @output.puts "LocaleApp Pull"
11
+ @output.puts "Localeapp Pull"
12
12
  @output.puts ""
13
13
 
14
14
  @output.puts "Fetching translations:"
@@ -21,9 +21,9 @@ module LocaleApp
21
21
  def update_backend(response)
22
22
  @output.puts "Success!"
23
23
  @output.puts "Updating backend:"
24
- LocaleApp.updater.update(JSON.parse(response))
24
+ Localeapp.updater.update(JSON.parse(response))
25
25
  @output.puts "Success!"
26
- LocaleApp.poller.write_synchronization_data!(Time.now.to_i, Time.now.to_i)
26
+ Localeapp.poller.write_synchronization_data!(Time.now.to_i, Time.now.to_i)
27
27
  end
28
28
 
29
29
  def report_failure(response)
@@ -1,14 +1,14 @@
1
- module LocaleApp
1
+ module Localeapp
2
2
  module CLI
3
3
  class Push
4
- include ::LocaleApp::ApiCall
4
+ include ::Localeapp::ApiCall
5
5
 
6
6
  def initialize(output = $stdout)
7
7
  @output = output
8
8
  end
9
9
 
10
10
  def execute(file_path = nil)
11
- @output.puts "LocaleApp Push"
11
+ @output.puts "Localeapp Push"
12
12
  @output.puts ""
13
13
 
14
14
  @file_path = file_path
@@ -1,4 +1,4 @@
1
- module LocaleApp
1
+ module Localeapp
2
2
  module CLI
3
3
  class Update
4
4
  def initialize(output = $stdout)
@@ -6,8 +6,8 @@ module LocaleApp
6
6
  end
7
7
 
8
8
  def execute
9
- poller = LocaleApp::Poller.new
10
- @output.puts("LocaleApp update: checking for translations since #{poller.updated_at}")
9
+ poller = Localeapp::Poller.new
10
+ @output.puts("Localeapp update: checking for translations since #{poller.updated_at}")
11
11
  if poller.poll!
12
12
  @output.puts "Found and updated new translations"
13
13
  else
@@ -1,4 +1,4 @@
1
- module LocaleApp
1
+ module Localeapp
2
2
  class Configuration
3
3
 
4
4
  # The API key for your project, found on the project edit form
@@ -32,7 +32,7 @@ module LocaleApp
32
32
  # 'test', 'cucumber', 'production')
33
33
  attr_accessor :disabled_polling_environments
34
34
 
35
- # The logger used by LocaleApp
35
+ # The logger used by Localeapp
36
36
  attr_accessor :logger
37
37
 
38
38
  # The number of seconds to wait before asking the service for new
@@ -40,8 +40,8 @@ module LocaleApp
40
40
  attr_accessor :poll_interval
41
41
 
42
42
  # The complete path to the data file where we store synchronization
43
- # information (defaults to ./locale_app.yml) local_app/rails overwrites
44
- # this to RAILS_ROOT/log/locale_app.yml
43
+ # information (defaults to ./localeapp.yml) local_app/rails overwrites
44
+ # this to RAILS_ROOT/log/localeapp.yml
45
45
  attr_accessor :synchronization_data_file
46
46
 
47
47
  # The complete path to the directory where translations are stored
@@ -54,7 +54,7 @@ module LocaleApp
54
54
  @disabled_reloading_environments = %w(test cucumber production)
55
55
  @disabled_polling_environments = %w(test cucumber production)
56
56
  @poll_interval = 0
57
- @synchronization_data_file = File.join('log', 'locale_app.yml')
57
+ @synchronization_data_file = File.join('log', 'localeapp.yml')
58
58
  @translation_data_directory = File.join('config', 'locales')
59
59
  if ENV['DEBUG']
60
60
  require 'logger'
@@ -79,9 +79,9 @@ module LocaleApp
79
79
  FileUtils.mkdir_p(dir)
80
80
  File.open(path, 'w+') do |file|
81
81
  file.write <<-CONTENT
82
- require 'locale_app/rails'
82
+ require 'localeapp/rails'
83
83
 
84
- LocaleApp.configure do |config|
84
+ Localeapp.configure do |config|
85
85
  config.api_key = '#{@api_key}'
86
86
  config.host = '#{@host}'
87
87
  config.port = #{@port}
@@ -0,0 +1,21 @@
1
+ module Localeapp
2
+ class ExceptionHandler
3
+ def self.call(exception, locale, key, options)
4
+ Localeapp.log(exception.message)
5
+ if I18n::MissingTranslationData === exception
6
+ Localeapp.log("Detected missing translation for key(s) #{key.inspect}")
7
+
8
+ [*key].each do |key|
9
+ Localeapp.missing_translations.add(locale, key, options)
10
+ end
11
+
12
+ [locale, key].join(', ')
13
+ else
14
+ Localeapp.log('Raising exception')
15
+ raise
16
+ end
17
+ end
18
+ end
19
+ end
20
+
21
+ I18n.exception_handler = Localeapp::ExceptionHandler
@@ -2,16 +2,16 @@ require 'yaml'
2
2
  require 'rest-client'
3
3
  require 'time'
4
4
 
5
- module LocaleApp
5
+ module Localeapp
6
6
  class KeyChecker
7
- include ::LocaleApp::ApiCall
7
+ include ::Localeapp::ApiCall
8
8
 
9
9
  def check(key)
10
- if LocaleApp.configuration.nil? # no config file yet
11
- LocaleApp.configuration = LocaleApp::Configuration.new
12
- LocaleApp.configuration.host = ENV['LA_TEST_HOST'] if ENV['LA_TEST_HOST']
10
+ if Localeapp.configuration.nil? # no config file yet
11
+ Localeapp.configuration = Localeapp::Configuration.new
12
+ Localeapp.configuration.host = ENV['LA_TEST_HOST'] if ENV['LA_TEST_HOST']
13
13
  end
14
- LocaleApp.configuration.api_key = key
14
+ Localeapp.configuration.api_key = key
15
15
  api_call :project,
16
16
  :success => :handle_success,
17
17
  :failure => :handle_failure,
@@ -1,4 +1,4 @@
1
- module LocaleApp
1
+ module Localeapp
2
2
  MissingTranslationRecord = Struct.new(:key, :locale, :options)
3
3
 
4
4
  class MissingTranslations
@@ -2,9 +2,9 @@ require 'yaml'
2
2
  require 'rest-client'
3
3
  require 'time'
4
4
 
5
- module LocaleApp
5
+ module Localeapp
6
6
  class Poller
7
- include ::LocaleApp::ApiCall
7
+ include ::Localeapp::ApiCall
8
8
 
9
9
  # when we last asked the service for updates
10
10
  attr_accessor :polled_at
@@ -18,21 +18,21 @@ module LocaleApp
18
18
  end
19
19
 
20
20
  def synchronization_data
21
- if File.exists?(LocaleApp.configuration.synchronization_data_file)
22
- YAML.load_file(LocaleApp.configuration.synchronization_data_file)
21
+ if File.exists?(Localeapp.configuration.synchronization_data_file)
22
+ YAML.load_file(Localeapp.configuration.synchronization_data_file)
23
23
  else
24
24
  {}
25
25
  end
26
26
  end
27
27
 
28
28
  def write_synchronization_data!(polled_at, updated_at)
29
- File.open(LocaleApp.configuration.synchronization_data_file, 'w+') do |f|
29
+ File.open(Localeapp.configuration.synchronization_data_file, 'w+') do |f|
30
30
  f.write({:polled_at => polled_at, :updated_at => updated_at}.to_yaml)
31
31
  end
32
32
  end
33
33
 
34
34
  def needs_polling?
35
- synchronization_data[:polled_at] < (Time.now.to_i - LocaleApp.configuration.poll_interval)
35
+ synchronization_data[:polled_at] < (Time.now.to_i - Localeapp.configuration.poll_interval)
36
36
  end
37
37
 
38
38
  def needs_reloading?
@@ -50,7 +50,7 @@ module LocaleApp
50
50
 
51
51
  def handle_success(response)
52
52
  @success = true
53
- LocaleApp.updater.update(JSON.parse(response))
53
+ Localeapp.updater.update(JSON.parse(response))
54
54
  write_synchronization_data!(Time.now.to_i, Time.parse(response.headers[:date]).to_i)
55
55
  end
56
56
 
@@ -2,7 +2,7 @@
2
2
  # This means the exception handler will be called and missing translations get sent to
3
3
  # localeapp. It's ugly but there's no other way to do it :(
4
4
 
5
- module LocaleApp::TranslationHelperMonkeyPatch
5
+ module Localeapp::TranslationHelperMonkeyPatch
6
6
  # Delegates to I18n#translate but also performs two additional functions. First, it'll catch MissingTranslationData exceptions
7
7
  # and turn them into inline spans that contains the missing key, such that you can see in a view what is missing where.
8
8
  #
@@ -33,4 +33,4 @@ module LocaleApp::TranslationHelperMonkeyPatch
33
33
  alias :t :translate
34
34
  end
35
35
 
36
- ActionView::Base.send(:include, ::LocaleApp::TranslationHelperMonkeyPatch)
36
+ ActionView::Base.send(:include, ::Localeapp::TranslationHelperMonkeyPatch)
@@ -0,0 +1,34 @@
1
+ module Localeapp
2
+ module Rails
3
+ module Controller
4
+ def self.included(base)
5
+ base.before_filter :handle_translation_updates
6
+ base.after_filter :send_missing_translations
7
+ end
8
+
9
+ def handle_translation_updates
10
+ unless ::Localeapp.configuration.polling_disabled?
11
+ ::Localeapp.log Time.now.to_i.to_s << '-- Handling translation updates'
12
+ if ::Localeapp.poller.needs_polling?
13
+ ::Localeapp.log Time.now.to_i.to_s << ' - polling'
14
+ ::Localeapp.poller.poll!
15
+ end
16
+ end
17
+
18
+ unless ::Localeapp.configuration.reloading_disabled?
19
+ if ::Localeapp.poller.needs_reloading?
20
+ ::Localeapp.log Time.now.to_i.to_s << '- reloading I18n'
21
+ I18n.reload!
22
+ ::Localeapp.poller.updated_at = ::Localeapp.poller.synchronization_data[:updated_at]
23
+ end
24
+ end
25
+ end
26
+
27
+ def send_missing_translations
28
+ return if ::Localeapp.configuration.sending_disabled?
29
+
30
+ ::Localeapp.sender.post_missing_translations
31
+ end
32
+ end
33
+ end
34
+ end
File without changes
@@ -1,4 +1,4 @@
1
- module LocaleApp
1
+ module Localeapp
2
2
  module Rails
3
3
  def self.initialize
4
4
  if defined?(::Rails.logger)
@@ -19,25 +19,25 @@ module LocaleApp
19
19
  rails_root = RAILS_ROOT
20
20
  end
21
21
 
22
- ActionController::Base.send(:include, LocaleApp::Rails::Controller)
22
+ ActionController::Base.send(:include, Localeapp::Rails::Controller)
23
23
 
24
24
  if ::Rails::VERSION::MAJOR == 2 && ::Rails::VERSION::MINOR >= 3 # TODO: Check previous rails versions if required
25
- require 'locale_app/rails/2_3_translation_helper_monkeypatch'
25
+ require 'localeapp/rails/2_3_translation_helper_monkeypatch'
26
26
  end
27
27
 
28
- LocaleApp.configure do |config|
28
+ Localeapp.configure do |config|
29
29
  config.logger = rails_logger
30
30
  config.environment_name = rails_env
31
31
  config.project_root = rails_root
32
- config.synchronization_data_file = File.join([rails_root, 'log', 'locale_app.yml'])
32
+ config.synchronization_data_file = File.join([rails_root, 'log', 'localeapp.yml'])
33
33
  config.translation_data_directory = File.join([rails_root, 'config', 'locales'])
34
34
  end
35
35
  initialize_synchronization_data_file
36
36
  end
37
37
 
38
38
  def self.initialize_synchronization_data_file
39
- if !File.exists?(LocaleApp.configuration.synchronization_data_file)
40
- File.open(LocaleApp.configuration.synchronization_data_file, 'w') do |f|
39
+ if !File.exists?(Localeapp.configuration.synchronization_data_file)
40
+ File.open(Localeapp.configuration.synchronization_data_file, 'w') do |f|
41
41
  f.write({:polled_at => Time.now.to_i, :updated_at => Time.now.to_i}.to_yaml)
42
42
  end
43
43
  end
@@ -46,8 +46,8 @@ module LocaleApp
46
46
  end
47
47
 
48
48
  if defined?(Rails)
49
- require 'locale_app/rails/controller'
50
- require 'locale_app/exception_handler'
51
- LocaleApp::Rails.initialize
52
- LocaleApp.log('Loaded locale_app/rails')
49
+ require 'localeapp/rails/controller'
50
+ require 'localeapp/exception_handler'
51
+ Localeapp::Rails.initialize
52
+ Localeapp.log('Loaded localeapp/rails')
53
53
  end
@@ -1,4 +1,4 @@
1
- module LocaleApp
1
+ module Localeapp
2
2
  module Routes
3
3
  VERSION = 'v1'
4
4
 
@@ -48,15 +48,15 @@ module LocaleApp
48
48
  private
49
49
 
50
50
  def base_options
51
- options = {:host => LocaleApp.configuration.host, :port => LocaleApp.configuration.port}
52
- if LocaleApp.configuration.http_auth_username
53
- options[:userinfo] = "#{LocaleApp.configuration.http_auth_username}:#{LocaleApp.configuration.http_auth_password}"
51
+ options = {:host => Localeapp.configuration.host, :port => Localeapp.configuration.port}
52
+ if Localeapp.configuration.http_auth_username
53
+ options[:userinfo] = "#{Localeapp.configuration.http_auth_username}:#{Localeapp.configuration.http_auth_password}"
54
54
  end
55
55
  options
56
56
  end
57
57
 
58
58
  def project_path(format = nil)
59
- path = "/#{VERSION}/projects/#{LocaleApp.configuration.api_key}"
59
+ path = "/#{VERSION}/projects/#{Localeapp.configuration.api_key}"
60
60
  path << ".#{format}" if format
61
61
  path
62
62
  end