zmeygo_sync 0.2 → 0.21
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/.gitignore +1 -0
- data/Gemfile +1 -0
- data/Rakefile +11 -2
- data/TODO +3 -4
- data/lib/generators/zmeygo_sync/templates/script +2 -2
- data/lib/zmeygo_sync/cache.rb +12 -25
- data/lib/zmeygo_sync/client.rb +6 -5
- data/lib/zmeygo_sync/command.rb +12 -4
- data/lib/zmeygo_sync/configuration.rb +2 -2
- data/lib/zmeygo_sync/constant.rb +6 -6
- data/lib/zmeygo_sync/i18n_backend.rb +17 -17
- data/lib/zmeygo_sync/version.rb +1 -1
- data/test/ext_i18n_test.rb +15 -12
- data/test/pull_test.rb +28 -0
- data/test/push_test.rb +27 -0
- data/test/test_helper.rb +21 -0
- metadata +4 -2
data/.gitignore
CHANGED
data/Gemfile
CHANGED
data/Rakefile
CHANGED
data/TODO
CHANGED
data/lib/zmeygo_sync/cache.rb
CHANGED
@@ -1,24 +1,22 @@
|
|
1
1
|
# encoding: UTF-8
|
2
|
+
require 'fileutils'
|
2
3
|
|
3
4
|
module ZmeygoSync
|
4
|
-
# Cache is responsable to gather missing keys from I18n.t/I18n.translate
|
5
|
-
# calls and once in a while send them to server.
|
6
|
-
# Server where keys will be sent is configured in config file Zmeygo.config['server']
|
5
|
+
# Cache is responsable to gather missing keys from I18n.t/I18n.translate calls
|
7
6
|
class Cache
|
8
7
|
def initialize
|
9
|
-
@config =
|
8
|
+
@config = ZmeygoSync.config
|
10
9
|
@missing_keys = {}
|
11
10
|
@cache_file_path = "#{Rails.root}/tmp/zmeygo_sync_cache"
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
11
|
+
dir = File.dirname(@cache_file_path)
|
12
|
+
unless File.exists?(dir)
|
13
|
+
FileUtils.mkdir_p(dir)
|
14
|
+
end
|
15
|
+
FileUtils.touch(@cache_file_path)
|
17
16
|
end
|
18
17
|
|
19
18
|
def get_cache
|
20
|
-
|
21
|
-
@missing_keys[proj]
|
19
|
+
@missing_keys
|
22
20
|
end
|
23
21
|
|
24
22
|
def empty?
|
@@ -26,9 +24,8 @@ module ZmeygoSync
|
|
26
24
|
end
|
27
25
|
|
28
26
|
def add_to_cache(key)
|
29
|
-
|
30
|
-
@missing_keys[
|
31
|
-
@missing_keys[proj][key] = true
|
27
|
+
@missing_keys ||= {}
|
28
|
+
@missing_keys[key] = true
|
32
29
|
File.open(@cache_file_path,'w') do |f|
|
33
30
|
f.write(Marshal.dump(@missing_keys))
|
34
31
|
end
|
@@ -49,20 +46,10 @@ module ZmeygoSync
|
|
49
46
|
end
|
50
47
|
|
51
48
|
def clear_cache
|
52
|
-
|
53
|
-
@missing_keys[proj].clear
|
49
|
+
@missing_keys.clear
|
54
50
|
File.truncate(@cache_file_path,0)
|
55
51
|
end
|
56
52
|
|
57
|
-
def validate_config!
|
58
|
-
proj = @config['project']
|
59
|
-
if proj.blank?
|
60
|
-
raise "Please provide default project name in"
|
61
|
-
end
|
62
|
-
@missing_keys[proj] ||= {}
|
63
|
-
proj
|
64
|
-
end
|
65
|
-
|
66
53
|
end # Cache
|
67
54
|
end # Zmeygo
|
68
55
|
|
data/lib/zmeygo_sync/client.rb
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
require 'ya2yaml'
|
3
3
|
|
4
|
-
module
|
4
|
+
module ZmeygoSync
|
5
5
|
class Client
|
6
6
|
|
7
7
|
attr_accessor :config, :options
|
8
8
|
|
9
9
|
def initialize(options={})
|
10
10
|
self.options = options
|
11
|
-
self.config =
|
11
|
+
self.config = ZmeygoSync.config
|
12
12
|
end
|
13
13
|
|
14
14
|
def push
|
@@ -16,7 +16,7 @@ module ZmeygoSyncSync
|
|
16
16
|
puts "No cache" if options[:verbose]
|
17
17
|
return
|
18
18
|
end
|
19
|
-
url = "http://
|
19
|
+
url = "http://zmeygo.com/api/pushmissing?api_token=#{config['api_token']}"
|
20
20
|
keys = []
|
21
21
|
hash = ZmeygoSync.load_cache
|
22
22
|
puts "cache=#{hash}" if options[:verbose]
|
@@ -38,7 +38,8 @@ module ZmeygoSyncSync
|
|
38
38
|
exit
|
39
39
|
end
|
40
40
|
if response.code == 200
|
41
|
-
reply = JSON.parse(response.body)
|
41
|
+
#reply = JSON.parse(response.body)
|
42
|
+
#do nothing on success
|
42
43
|
elsif response.code == 401
|
43
44
|
puts "Invalid api_token given."
|
44
45
|
elsif response.code == 500
|
@@ -159,7 +160,7 @@ module ZmeygoSyncSync
|
|
159
160
|
end
|
160
161
|
|
161
162
|
def http_connect(path)
|
162
|
-
url = "#{config['server'] || 'http://
|
163
|
+
url = "#{config['server'] || 'http://zmeygo.com'}/api/#{path}?api_token=#{config['api_token']}"
|
163
164
|
begin
|
164
165
|
puts "GET #{url}" if options[:verbose]
|
165
166
|
response = RestClient.get(url)
|
data/lib/zmeygo_sync/command.rb
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
require 'daemons'
|
3
3
|
require 'optparse'
|
4
4
|
|
5
|
-
module
|
5
|
+
module ZmeygoSync
|
6
6
|
class Command
|
7
7
|
|
8
8
|
attr_accessor :options, :client
|
@@ -11,7 +11,7 @@ module ZmeygoSyncSync
|
|
11
11
|
@options = {
|
12
12
|
:verbose => false,
|
13
13
|
:pid_dir => "#{Rails.root}/tmp/pids",
|
14
|
-
:sleep_delay =>
|
14
|
+
:sleep_delay => 60,
|
15
15
|
:debug => false # when debug is false - it will daomonize, otherwise - it won't
|
16
16
|
}
|
17
17
|
|
@@ -47,13 +47,21 @@ module ZmeygoSyncSync
|
|
47
47
|
unless defined?(Rails)
|
48
48
|
raise "This is not rails app???"
|
49
49
|
end
|
50
|
+
step = 0
|
50
51
|
loop do
|
51
52
|
self.client.push
|
52
|
-
|
53
|
+
# once in 5 minutes download locales from server
|
54
|
+
if step % 10 == 0
|
55
|
+
self.client.pull
|
56
|
+
end
|
57
|
+
step += 1
|
58
|
+
if step > 1_000
|
59
|
+
step = 0
|
60
|
+
end
|
53
61
|
sleep(@options[:sleep_delay])
|
54
62
|
end
|
55
63
|
rescue => e
|
56
|
-
|
64
|
+
# Rails.logger.fatal e
|
57
65
|
STDERR.puts e.message
|
58
66
|
exit 1
|
59
67
|
end
|
@@ -8,10 +8,10 @@ module ZmeygoSync
|
|
8
8
|
attr_accessor :server, :api_token, :locale_dir, :project
|
9
9
|
|
10
10
|
def initialize
|
11
|
-
conf_file = File.join(Rails.root,'config','
|
11
|
+
conf_file = File.join(Rails.root,'config','zmeygo_sync.yml')
|
12
12
|
conf_all = YAML.load_file(File.expand_path(conf_file))
|
13
13
|
conf = conf_all[Rails.env]
|
14
|
-
conf['server'] = 'http://zmeygo.com'
|
14
|
+
# conf['server'] = 'http://zmeygo.com'
|
15
15
|
self.api_token = conf['api_token']
|
16
16
|
self.project = conf['project']
|
17
17
|
end
|
data/lib/zmeygo_sync/constant.rb
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
#
|
3
|
-
module ZmeygoSync
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
end
|
3
|
+
# module ZmeygoSync
|
4
|
+
# class Constant
|
5
|
+
# DEFAULT_CONFIG_FILE = "#{Rails.root}/config/zmeygo.yml"
|
6
|
+
# CACHE_FILE = "#{Rails.root}/tmp/zmeygo_sync_cache"
|
7
|
+
# end
|
8
|
+
# end
|
@@ -1,20 +1,20 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
|
3
|
-
module ZmeygoSync
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
end
|
3
|
+
# module ZmeygoSync
|
4
|
+
# class I18nBackend
|
5
|
+
#
|
6
|
+
# attr_accessor :client
|
7
|
+
#
|
8
|
+
# def initialize(options={})
|
9
|
+
# @collection = {}
|
10
|
+
# @options = options
|
11
|
+
# Zmeygo.configure
|
12
|
+
# self.client = Zmeygo::Client.new(options)
|
13
|
+
# end
|
14
|
+
#
|
15
|
+
# def translate(locale, key, options = {})
|
16
|
+
# client.translate(nil,locale,key)
|
17
|
+
# end
|
18
|
+
# end
|
19
|
+
# end
|
20
20
|
|
data/lib/zmeygo_sync/version.rb
CHANGED
data/test/ext_i18n_test.rb
CHANGED
@@ -1,31 +1,34 @@
|
|
1
1
|
require File.join(File.dirname(__FILE__),'/test_helper')
|
2
|
-
require File.join(File.dirname(__FILE__),'../lib/
|
2
|
+
require File.join(File.dirname(__FILE__),'../lib/zmeygo_sync')
|
3
3
|
|
4
4
|
class ExtI18nTest < Test::Unit::TestCase
|
5
5
|
# check if i18n.t method indeed populates Zmeygo.missing_keys
|
6
|
+
|
7
|
+
include ZmeygoSync
|
8
|
+
|
6
9
|
def setup
|
10
|
+
common_setup
|
11
|
+
end
|
7
12
|
|
13
|
+
def teardown
|
14
|
+
common_teardown
|
8
15
|
end
|
16
|
+
|
9
17
|
def test_assert_i18n_translate
|
10
|
-
|
11
|
-
assert_equal 0, Zmeygo.get_cache.size
|
18
|
+
assert_equal 0, ZmeygoSync.get_cache.size
|
12
19
|
I18n.t :key1
|
13
20
|
I18n.t :key2
|
14
|
-
assert_equal 2,
|
15
|
-
assert
|
16
|
-
assert
|
21
|
+
assert_equal 2, ZmeygoSync.get_cache.size
|
22
|
+
assert ZmeygoSync.get_cache.include?(:key1)
|
23
|
+
assert ZmeygoSync.get_cache.include?(:key2)
|
17
24
|
end
|
18
25
|
|
19
|
-
# c
|
20
26
|
def test_if_i18n_correctly_populates_cache
|
21
|
-
|
22
|
-
assert_equal 0, Zmeygo.get_cache.size
|
27
|
+
assert_equal 0, ZmeygoSync.get_cache.size
|
23
28
|
I18n.t :some_key
|
24
29
|
I18n.t :other_key
|
25
30
|
I18n.t 'text.signin'
|
26
|
-
cache =
|
27
|
-
proj = Zmeygo.get_cache_proj
|
28
|
-
assert_equal Zmeygo.config['default_project'],proj
|
31
|
+
cache = ZmeygoSync.get_cache.clone
|
29
32
|
assert cache.include?(:some_key)
|
30
33
|
assert cache.include?(:other_key)
|
31
34
|
assert cache.include?('text.signin')
|
data/test/pull_test.rb
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__),'/test_helper')
|
2
|
+
require File.join(File.dirname(__FILE__),'../lib/zmeygo_sync')
|
3
|
+
|
4
|
+
# Test push functionality
|
5
|
+
class PushTest < Test::Unit::TestCase
|
6
|
+
# check if i18n.t method indeed populates Zmeygo.missing_keys
|
7
|
+
|
8
|
+
include ZmeygoSync
|
9
|
+
|
10
|
+
def setup
|
11
|
+
common_setup
|
12
|
+
end
|
13
|
+
|
14
|
+
def teardown
|
15
|
+
common_teardown
|
16
|
+
end
|
17
|
+
|
18
|
+
def test_if_pull_request_correct_link
|
19
|
+
response_body = {'message' => 'OK', 'data' => ''}.to_json
|
20
|
+
stub_request(:get, "http://zmeygo.com/api/available_locales/fake_proj").
|
21
|
+
with(:query => {:api_token => '1234'}).
|
22
|
+
to_return(:body => response_body, :status => 200 )
|
23
|
+
I18n.t :key1
|
24
|
+
command = Command.new(["start","-d"])
|
25
|
+
command.client.pull
|
26
|
+
end
|
27
|
+
|
28
|
+
end
|
data/test/push_test.rb
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__),'/test_helper')
|
2
|
+
require File.join(File.dirname(__FILE__),'../lib/zmeygo_sync')
|
3
|
+
|
4
|
+
# Test push functionality
|
5
|
+
class PushTest < Test::Unit::TestCase
|
6
|
+
# check if i18n.t method indeed populates Zmeygo.missing_keys
|
7
|
+
|
8
|
+
include ZmeygoSync
|
9
|
+
|
10
|
+
def setup
|
11
|
+
common_setup
|
12
|
+
end
|
13
|
+
|
14
|
+
def teardown
|
15
|
+
common_teardown
|
16
|
+
end
|
17
|
+
|
18
|
+
def test_if_push_request_correct_link
|
19
|
+
stub_request(:post, "http://zmeygo.com/api/pushmissing").
|
20
|
+
with(:query => {:api_token => '1234'}).
|
21
|
+
to_return(:body => "OK", :status => 200 )
|
22
|
+
I18n.t :key1
|
23
|
+
command = Command.new(["start","-d"])
|
24
|
+
command.client.push
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
data/test/test_helper.rb
CHANGED
@@ -1 +1,22 @@
|
|
1
|
+
require 'mocha'
|
1
2
|
require 'test/unit'
|
3
|
+
require 'webmock/test_unit'
|
4
|
+
require 'json'
|
5
|
+
|
6
|
+
class Rails
|
7
|
+
def self.root
|
8
|
+
File.dirname(__FILE__)
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
def common_setup
|
13
|
+
Configuration.stubs(:new)
|
14
|
+
Logger.stubs(:new)
|
15
|
+
ZmeygoSync.stubs(:config).returns({'project' => 'fake_proj','api_token'=>'1234'})
|
16
|
+
ZmeygoSync.configure
|
17
|
+
ZmeygoSync.clear_cache
|
18
|
+
end
|
19
|
+
|
20
|
+
def common_teardown
|
21
|
+
ZmeygoSync.clear_cache
|
22
|
+
end
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: zmeygo_sync
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: "0.
|
5
|
+
version: "0.21"
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Eugen Ciur
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2011-10-
|
13
|
+
date: 2011-10-18 00:00:00 +03:00
|
14
14
|
default_executable:
|
15
15
|
dependencies: []
|
16
16
|
|
@@ -44,6 +44,8 @@ files:
|
|
44
44
|
- lib/zmeygo_sync/i18n_backend.rb
|
45
45
|
- lib/zmeygo_sync/version.rb
|
46
46
|
- test/ext_i18n_test.rb
|
47
|
+
- test/pull_test.rb
|
48
|
+
- test/push_test.rb
|
47
49
|
- test/test_helper.rb
|
48
50
|
- zmeygo_sync.gemspec
|
49
51
|
has_rdoc: true
|