copy_tuner_client 0.8.1 → 0.12.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 +4 -4
- data/.github/workflows/rspec.yml +26 -30
- data/.ruby-version +1 -1
- data/CHANGELOG.md +17 -0
- data/Gemfile +1 -1
- data/Gemfile.lock +162 -139
- data/README.md +7 -4
- data/copy_tuner_client.gemspec +3 -2
- data/gemfiles/5.2.gemfile +1 -3
- data/gemfiles/6.0.gemfile +1 -3
- data/gemfiles/6.1.gemfile +5 -0
- data/gemfiles/main.gemfile +5 -0
- data/lib/copy_tuner_client/configuration.rb +9 -1
- data/lib/copy_tuner_client/engine.rb +5 -30
- data/lib/copy_tuner_client/errors.rb +3 -0
- data/lib/copy_tuner_client/helper_extension.rb +34 -0
- data/lib/copy_tuner_client/i18n_backend.rb +10 -0
- data/lib/copy_tuner_client/i18n_compat.rb +14 -0
- data/lib/copy_tuner_client/translation_log.rb +1 -1
- data/lib/copy_tuner_client/version.rb +1 -1
- data/lib/tasks/copy_tuner_client_tasks.rake +15 -2
- data/spec/copy_tuner_client/helper_extension_spec.rb +40 -0
- data/spec/copy_tuner_client/i18n_backend_spec.rb +7 -0
- data/test.sh +6 -0
- metadata +30 -9
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 02e158d00caa261a1c3cf73b38648bde2307f5160708fcf39e7e84b542c2ecc6
|
|
4
|
+
data.tar.gz: ca6f9c714f15afbace17d89d3ef67a71546d5b414be83ff09e59c6b9b1974958
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: ffb1ebc5fb6f78326f820527646f32eb6fcbf09c622f90d299d61a96778c27ad0954d0c8db784d96a4c93534a5eee0acb01eed824ddd1cbcee0aa5fae5cd35cc
|
|
7
|
+
data.tar.gz: 1ebe88eb8278fee882c0129908c562157b0ca16e6b7ac0181ae9774f53df84e5df3fcd63a843586302ab6010d369bf19d78bae8453cdc28fbf463977b8d7ede7
|
data/.github/workflows/rspec.yml
CHANGED
|
@@ -9,7 +9,7 @@ name: Ruby
|
|
|
9
9
|
|
|
10
10
|
on:
|
|
11
11
|
push:
|
|
12
|
-
branches: [
|
|
12
|
+
branches: [master]
|
|
13
13
|
pull_request:
|
|
14
14
|
|
|
15
15
|
jobs:
|
|
@@ -18,36 +18,32 @@ jobs:
|
|
|
18
18
|
env:
|
|
19
19
|
BUNDLE_JOBS: 4
|
|
20
20
|
BUNDLE_RETRY: 3
|
|
21
|
+
BUNDLE_GEMFILE: ${{ github.workspace }}/gemfiles/${{ matrix.gemfile }}.gemfile
|
|
21
22
|
strategy:
|
|
22
23
|
fail-fast: false
|
|
23
24
|
matrix:
|
|
24
|
-
ruby: [2.6, 2.7]
|
|
25
|
-
gemfile: [
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
25
|
+
ruby: [2.6, 2.7, 3.0]
|
|
26
|
+
gemfile: ["5.2", "6.0", "6.1", "main"]
|
|
27
|
+
exclude:
|
|
28
|
+
- ruby: 2.6
|
|
29
|
+
gemfile: main
|
|
30
|
+
- ruby: 3.0
|
|
31
|
+
gemfile: 5.2
|
|
32
|
+
- ruby: 3.0
|
|
33
|
+
gemfile: "6.0"
|
|
29
34
|
steps:
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
- name: Install dependencies
|
|
46
|
-
run: |
|
|
47
|
-
bundle config path /home/runner/bundle
|
|
48
|
-
bundle config --global gemfile ${{ matrix.gemfile }}
|
|
49
|
-
bundle install
|
|
50
|
-
bundle update
|
|
51
|
-
bundle clean
|
|
52
|
-
- name: Run rspec
|
|
53
|
-
run: bundle exec rspec
|
|
35
|
+
- name: Install packages
|
|
36
|
+
run: |
|
|
37
|
+
sudo apt update -y
|
|
38
|
+
sudo apt install -y libsqlite3-dev
|
|
39
|
+
|
|
40
|
+
- uses: actions/checkout@v2
|
|
41
|
+
|
|
42
|
+
- name: Set up Ruby
|
|
43
|
+
uses: ruby/setup-ruby@v1
|
|
44
|
+
with:
|
|
45
|
+
ruby-version: ${{ matrix.ruby }}
|
|
46
|
+
bundler-cache: true
|
|
47
|
+
|
|
48
|
+
- name: Run rspec
|
|
49
|
+
run: bundle exec rspec
|
data/.ruby-version
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
2.7.
|
|
1
|
+
2.7.4
|
data/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,20 @@
|
|
|
1
|
+
## 0.12.0
|
|
2
|
+
|
|
3
|
+
- Add `config.ignored_keys` and `config.ignored_key_handler`
|
|
4
|
+
|
|
5
|
+
## 0.11.0
|
|
6
|
+
|
|
7
|
+
- Remove deprecated rescue_format option
|
|
8
|
+
- Fix ruby@2.7 keyword warning
|
|
9
|
+
|
|
10
|
+
## 0.10.0
|
|
11
|
+
|
|
12
|
+
- Add copy_tuner:detect_html_incompatible_keys task
|
|
13
|
+
|
|
14
|
+
## 0.9.0
|
|
15
|
+
|
|
16
|
+
- Do not upload invalid type keys
|
|
17
|
+
|
|
1
18
|
## 0.8.1
|
|
2
19
|
|
|
3
20
|
- Fix bug in `CopyrayMiddleware`
|
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
|
@@ -1,227 +1,250 @@
|
|
|
1
1
|
GIT
|
|
2
|
-
remote:
|
|
3
|
-
revision:
|
|
2
|
+
remote: https://github.com/SonicGarden/sgcop.git
|
|
3
|
+
revision: e708293619ea29e2a7a326db3dfaa3be63939c69
|
|
4
4
|
specs:
|
|
5
|
-
sgcop (0.
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
rubocop (~>
|
|
10
|
-
rubocop-
|
|
11
|
-
rubocop-
|
|
12
|
-
rubocop-rspec (~> 1.38.1)
|
|
5
|
+
sgcop (0.4.14)
|
|
6
|
+
haml_lint (~> 0.37.0)
|
|
7
|
+
rubocop (~> 1.21.0)
|
|
8
|
+
rubocop-performance (~> 1.11.5)
|
|
9
|
+
rubocop-rails (~> 2.12.2)
|
|
10
|
+
rubocop-rake (~> 0.6.0)
|
|
11
|
+
rubocop-rspec (~> 2.4.0)
|
|
13
12
|
|
|
14
13
|
PATH
|
|
15
14
|
remote: .
|
|
16
15
|
specs:
|
|
17
|
-
copy_tuner_client (0.
|
|
16
|
+
copy_tuner_client (0.12.0)
|
|
18
17
|
i18n (>= 0.5.0)
|
|
19
18
|
json
|
|
19
|
+
nokogiri
|
|
20
20
|
|
|
21
21
|
GEM
|
|
22
22
|
remote: http://rubygems.org/
|
|
23
23
|
specs:
|
|
24
|
-
actioncable (
|
|
25
|
-
actionpack (=
|
|
24
|
+
actioncable (6.1.4.1)
|
|
25
|
+
actionpack (= 6.1.4.1)
|
|
26
|
+
activesupport (= 6.1.4.1)
|
|
26
27
|
nio4r (~> 2.0)
|
|
27
28
|
websocket-driver (>= 0.6.1)
|
|
28
|
-
|
|
29
|
-
actionpack (=
|
|
30
|
-
|
|
31
|
-
|
|
29
|
+
actionmailbox (6.1.4.1)
|
|
30
|
+
actionpack (= 6.1.4.1)
|
|
31
|
+
activejob (= 6.1.4.1)
|
|
32
|
+
activerecord (= 6.1.4.1)
|
|
33
|
+
activestorage (= 6.1.4.1)
|
|
34
|
+
activesupport (= 6.1.4.1)
|
|
35
|
+
mail (>= 2.7.1)
|
|
36
|
+
actionmailer (6.1.4.1)
|
|
37
|
+
actionpack (= 6.1.4.1)
|
|
38
|
+
actionview (= 6.1.4.1)
|
|
39
|
+
activejob (= 6.1.4.1)
|
|
40
|
+
activesupport (= 6.1.4.1)
|
|
32
41
|
mail (~> 2.5, >= 2.5.4)
|
|
33
42
|
rails-dom-testing (~> 2.0)
|
|
34
|
-
actionpack (
|
|
35
|
-
actionview (=
|
|
36
|
-
activesupport (=
|
|
37
|
-
rack (~> 2.0, >= 2.0.
|
|
43
|
+
actionpack (6.1.4.1)
|
|
44
|
+
actionview (= 6.1.4.1)
|
|
45
|
+
activesupport (= 6.1.4.1)
|
|
46
|
+
rack (~> 2.0, >= 2.0.9)
|
|
38
47
|
rack-test (>= 0.6.3)
|
|
39
48
|
rails-dom-testing (~> 2.0)
|
|
40
|
-
rails-html-sanitizer (~> 1.0, >= 1.0
|
|
41
|
-
|
|
42
|
-
|
|
49
|
+
rails-html-sanitizer (~> 1.0, >= 1.2.0)
|
|
50
|
+
actiontext (6.1.4.1)
|
|
51
|
+
actionpack (= 6.1.4.1)
|
|
52
|
+
activerecord (= 6.1.4.1)
|
|
53
|
+
activestorage (= 6.1.4.1)
|
|
54
|
+
activesupport (= 6.1.4.1)
|
|
55
|
+
nokogiri (>= 1.8.5)
|
|
56
|
+
actionview (6.1.4.1)
|
|
57
|
+
activesupport (= 6.1.4.1)
|
|
43
58
|
builder (~> 3.1)
|
|
44
59
|
erubi (~> 1.4)
|
|
45
60
|
rails-dom-testing (~> 2.0)
|
|
46
|
-
rails-html-sanitizer (~> 1.
|
|
47
|
-
activejob (
|
|
48
|
-
activesupport (=
|
|
61
|
+
rails-html-sanitizer (~> 1.1, >= 1.2.0)
|
|
62
|
+
activejob (6.1.4.1)
|
|
63
|
+
activesupport (= 6.1.4.1)
|
|
49
64
|
globalid (>= 0.3.6)
|
|
50
|
-
activemodel (
|
|
51
|
-
activesupport (=
|
|
52
|
-
activerecord (
|
|
53
|
-
activemodel (=
|
|
54
|
-
activesupport (=
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
activerecord (=
|
|
59
|
-
|
|
60
|
-
|
|
65
|
+
activemodel (6.1.4.1)
|
|
66
|
+
activesupport (= 6.1.4.1)
|
|
67
|
+
activerecord (6.1.4.1)
|
|
68
|
+
activemodel (= 6.1.4.1)
|
|
69
|
+
activesupport (= 6.1.4.1)
|
|
70
|
+
activestorage (6.1.4.1)
|
|
71
|
+
actionpack (= 6.1.4.1)
|
|
72
|
+
activejob (= 6.1.4.1)
|
|
73
|
+
activerecord (= 6.1.4.1)
|
|
74
|
+
activesupport (= 6.1.4.1)
|
|
75
|
+
marcel (~> 1.0.0)
|
|
76
|
+
mini_mime (>= 1.1.0)
|
|
77
|
+
activesupport (6.1.4.1)
|
|
61
78
|
concurrent-ruby (~> 1.0, >= 1.0.2)
|
|
62
|
-
i18n (>=
|
|
63
|
-
minitest (
|
|
64
|
-
tzinfo (~>
|
|
65
|
-
|
|
79
|
+
i18n (>= 1.6, < 2)
|
|
80
|
+
minitest (>= 5.1)
|
|
81
|
+
tzinfo (~> 2.0)
|
|
82
|
+
zeitwerk (~> 2.3)
|
|
83
|
+
addressable (2.8.0)
|
|
66
84
|
public_suffix (>= 2.0.2, < 5.0)
|
|
67
|
-
|
|
68
|
-
ast (2.4.0)
|
|
69
|
-
brakeman (4.8.1)
|
|
70
|
-
brakeman_translate_checkstyle_format (0.0.1)
|
|
71
|
-
thor
|
|
85
|
+
ast (2.4.2)
|
|
72
86
|
builder (3.2.4)
|
|
73
|
-
concurrent-ruby (1.1.
|
|
74
|
-
crack (0.4.
|
|
75
|
-
|
|
87
|
+
concurrent-ruby (1.1.9)
|
|
88
|
+
crack (0.4.5)
|
|
89
|
+
rexml
|
|
76
90
|
crass (1.0.6)
|
|
77
|
-
daemons (1.
|
|
78
|
-
diff-lcs (1.
|
|
79
|
-
erubi (1.
|
|
91
|
+
daemons (1.4.1)
|
|
92
|
+
diff-lcs (1.4.4)
|
|
93
|
+
erubi (1.10.0)
|
|
80
94
|
eventmachine (1.2.7)
|
|
81
|
-
globalid (0.
|
|
82
|
-
activesupport (>=
|
|
83
|
-
haml (5.
|
|
95
|
+
globalid (0.5.2)
|
|
96
|
+
activesupport (>= 5.0)
|
|
97
|
+
haml (5.2.2)
|
|
84
98
|
temple (>= 0.8.0)
|
|
85
99
|
tilt
|
|
86
|
-
haml_lint (0.
|
|
87
|
-
haml (>= 4.0, < 5.
|
|
100
|
+
haml_lint (0.37.1)
|
|
101
|
+
haml (>= 4.0, < 5.3)
|
|
102
|
+
parallel (~> 1.10)
|
|
88
103
|
rainbow
|
|
89
104
|
rubocop (>= 0.50.0)
|
|
90
105
|
sysexits (~> 1.1)
|
|
91
106
|
hashdiff (1.0.1)
|
|
92
|
-
i18n (1.8.
|
|
107
|
+
i18n (1.8.10)
|
|
93
108
|
concurrent-ruby (~> 1.0)
|
|
94
|
-
jaro_winkler (1.5.4)
|
|
95
109
|
json (2.5.1)
|
|
96
|
-
loofah (2.
|
|
110
|
+
loofah (2.12.0)
|
|
97
111
|
crass (~> 1.0.2)
|
|
98
112
|
nokogiri (>= 1.5.9)
|
|
99
113
|
mail (2.7.1)
|
|
100
114
|
mini_mime (>= 0.1.1)
|
|
101
|
-
marcel (0.
|
|
102
|
-
mimemagic (~> 0.3.2)
|
|
115
|
+
marcel (1.0.1)
|
|
103
116
|
method_source (1.0.0)
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
minitest (5.14.0)
|
|
117
|
+
mini_mime (1.1.1)
|
|
118
|
+
mini_portile2 (2.6.1)
|
|
119
|
+
minitest (5.14.4)
|
|
108
120
|
mustermann (1.1.1)
|
|
109
121
|
ruby2_keywords (~> 0.0.1)
|
|
110
|
-
nio4r (2.5.
|
|
111
|
-
nokogiri (1.
|
|
112
|
-
mini_portile2 (~> 2.
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
122
|
+
nio4r (2.5.8)
|
|
123
|
+
nokogiri (1.12.4)
|
|
124
|
+
mini_portile2 (~> 2.6.1)
|
|
125
|
+
racc (~> 1.4)
|
|
126
|
+
parallel (1.21.0)
|
|
127
|
+
parser (3.0.2.0)
|
|
128
|
+
ast (~> 2.4.1)
|
|
129
|
+
public_suffix (4.0.6)
|
|
130
|
+
racc (1.5.2)
|
|
131
|
+
rack (2.2.3)
|
|
132
|
+
rack-protection (2.1.0)
|
|
119
133
|
rack
|
|
120
134
|
rack-test (1.1.0)
|
|
121
135
|
rack (>= 1.0, < 3)
|
|
122
|
-
rails (
|
|
123
|
-
actioncable (=
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
136
|
+
rails (6.1.4.1)
|
|
137
|
+
actioncable (= 6.1.4.1)
|
|
138
|
+
actionmailbox (= 6.1.4.1)
|
|
139
|
+
actionmailer (= 6.1.4.1)
|
|
140
|
+
actionpack (= 6.1.4.1)
|
|
141
|
+
actiontext (= 6.1.4.1)
|
|
142
|
+
actionview (= 6.1.4.1)
|
|
143
|
+
activejob (= 6.1.4.1)
|
|
144
|
+
activemodel (= 6.1.4.1)
|
|
145
|
+
activerecord (= 6.1.4.1)
|
|
146
|
+
activestorage (= 6.1.4.1)
|
|
147
|
+
activesupport (= 6.1.4.1)
|
|
148
|
+
bundler (>= 1.15.0)
|
|
149
|
+
railties (= 6.1.4.1)
|
|
134
150
|
sprockets-rails (>= 2.0.0)
|
|
135
151
|
rails-dom-testing (2.0.3)
|
|
136
152
|
activesupport (>= 4.2.0)
|
|
137
153
|
nokogiri (>= 1.6)
|
|
138
|
-
rails-html-sanitizer (1.
|
|
154
|
+
rails-html-sanitizer (1.4.2)
|
|
139
155
|
loofah (~> 2.3)
|
|
140
|
-
railties (
|
|
141
|
-
actionpack (=
|
|
142
|
-
activesupport (=
|
|
156
|
+
railties (6.1.4.1)
|
|
157
|
+
actionpack (= 6.1.4.1)
|
|
158
|
+
activesupport (= 6.1.4.1)
|
|
143
159
|
method_source
|
|
144
|
-
rake (>= 0.
|
|
145
|
-
thor (
|
|
160
|
+
rake (>= 0.13)
|
|
161
|
+
thor (~> 1.0)
|
|
146
162
|
rainbow (3.0.0)
|
|
147
|
-
rake (13.0.
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
rspec-
|
|
152
|
-
rspec-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
163
|
+
rake (13.0.6)
|
|
164
|
+
regexp_parser (2.1.1)
|
|
165
|
+
rexml (3.2.5)
|
|
166
|
+
rspec (3.10.0)
|
|
167
|
+
rspec-core (~> 3.10.0)
|
|
168
|
+
rspec-expectations (~> 3.10.0)
|
|
169
|
+
rspec-mocks (~> 3.10.0)
|
|
170
|
+
rspec-core (3.10.1)
|
|
171
|
+
rspec-support (~> 3.10.0)
|
|
172
|
+
rspec-expectations (3.10.1)
|
|
156
173
|
diff-lcs (>= 1.2.0, < 2.0)
|
|
157
|
-
rspec-support (~> 3.
|
|
158
|
-
rspec-mocks (3.
|
|
174
|
+
rspec-support (~> 3.10.0)
|
|
175
|
+
rspec-mocks (3.10.2)
|
|
159
176
|
diff-lcs (>= 1.2.0, < 2.0)
|
|
160
|
-
rspec-support (~> 3.
|
|
161
|
-
rspec-support (3.
|
|
162
|
-
rubocop (
|
|
163
|
-
jaro_winkler (~> 1.5.1)
|
|
177
|
+
rspec-support (~> 3.10.0)
|
|
178
|
+
rspec-support (3.10.2)
|
|
179
|
+
rubocop (1.21.0)
|
|
164
180
|
parallel (~> 1.10)
|
|
165
|
-
parser (>=
|
|
181
|
+
parser (>= 3.0.0.0)
|
|
166
182
|
rainbow (>= 2.2.2, < 4.0)
|
|
183
|
+
regexp_parser (>= 1.8, < 3.0)
|
|
167
184
|
rexml
|
|
185
|
+
rubocop-ast (>= 1.9.1, < 2.0)
|
|
168
186
|
ruby-progressbar (~> 1.7)
|
|
169
|
-
unicode-display_width (>= 1.4.0, <
|
|
170
|
-
rubocop-
|
|
171
|
-
|
|
172
|
-
rubocop-
|
|
173
|
-
|
|
187
|
+
unicode-display_width (>= 1.4.0, < 3.0)
|
|
188
|
+
rubocop-ast (1.11.0)
|
|
189
|
+
parser (>= 3.0.1.1)
|
|
190
|
+
rubocop-performance (1.11.5)
|
|
191
|
+
rubocop (>= 1.7.0, < 2.0)
|
|
192
|
+
rubocop-ast (>= 0.4.0)
|
|
193
|
+
rubocop-rails (2.12.2)
|
|
194
|
+
activesupport (>= 4.2.0)
|
|
174
195
|
rack (>= 1.1)
|
|
175
|
-
rubocop (>=
|
|
176
|
-
rubocop-
|
|
177
|
-
rubocop (
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
196
|
+
rubocop (>= 1.7.0, < 2.0)
|
|
197
|
+
rubocop-rake (0.6.0)
|
|
198
|
+
rubocop (~> 1.0)
|
|
199
|
+
rubocop-rspec (2.4.0)
|
|
200
|
+
rubocop (~> 1.0)
|
|
201
|
+
rubocop-ast (>= 1.1.0)
|
|
202
|
+
ruby-progressbar (1.11.0)
|
|
203
|
+
ruby2_keywords (0.0.5)
|
|
181
204
|
sham_rack (1.4.1)
|
|
182
205
|
rack
|
|
183
|
-
sinatra (2.0
|
|
206
|
+
sinatra (2.1.0)
|
|
184
207
|
mustermann (~> 1.0)
|
|
185
|
-
rack (~> 2.
|
|
186
|
-
rack-protection (= 2.0
|
|
208
|
+
rack (~> 2.2)
|
|
209
|
+
rack-protection (= 2.1.0)
|
|
187
210
|
tilt (~> 2.0)
|
|
188
|
-
sprockets (4.0.
|
|
211
|
+
sprockets (4.0.2)
|
|
189
212
|
concurrent-ruby (~> 1.0)
|
|
190
213
|
rack (> 1, < 3)
|
|
191
|
-
sprockets-rails (3.2.
|
|
214
|
+
sprockets-rails (3.2.2)
|
|
192
215
|
actionpack (>= 4.0)
|
|
193
216
|
activesupport (>= 4.0)
|
|
194
217
|
sprockets (>= 3.0.0)
|
|
195
218
|
sqlite3 (1.4.2)
|
|
196
219
|
sysexits (1.2.0)
|
|
197
220
|
temple (0.8.2)
|
|
198
|
-
thin (1.
|
|
221
|
+
thin (1.8.1)
|
|
199
222
|
daemons (~> 1.0, >= 1.0.9)
|
|
200
223
|
eventmachine (~> 1.0, >= 1.0.4)
|
|
201
224
|
rack (>= 1, < 3)
|
|
202
|
-
thor (1.0
|
|
203
|
-
thread_safe (0.3.6)
|
|
225
|
+
thor (1.1.0)
|
|
204
226
|
tilt (2.0.10)
|
|
205
|
-
tzinfo (
|
|
206
|
-
|
|
207
|
-
unicode-display_width (1.
|
|
208
|
-
webmock (3.
|
|
209
|
-
addressable (>= 2.
|
|
227
|
+
tzinfo (2.0.4)
|
|
228
|
+
concurrent-ruby (~> 1.0)
|
|
229
|
+
unicode-display_width (2.1.0)
|
|
230
|
+
webmock (3.14.0)
|
|
231
|
+
addressable (>= 2.8.0)
|
|
210
232
|
crack (>= 0.3.2)
|
|
211
233
|
hashdiff (>= 0.4.0, < 2.0.0)
|
|
212
|
-
websocket-driver (0.7.
|
|
234
|
+
websocket-driver (0.7.5)
|
|
213
235
|
websocket-extensions (>= 0.1.0)
|
|
214
|
-
websocket-extensions (0.1.
|
|
215
|
-
yard (0.9.
|
|
236
|
+
websocket-extensions (0.1.5)
|
|
237
|
+
yard (0.9.26)
|
|
238
|
+
zeitwerk (2.4.2)
|
|
216
239
|
|
|
217
240
|
PLATFORMS
|
|
218
241
|
ruby
|
|
219
242
|
|
|
220
243
|
DEPENDENCIES
|
|
221
244
|
copy_tuner_client!
|
|
222
|
-
rails (~>
|
|
245
|
+
rails (~> 6.1)
|
|
223
246
|
rake
|
|
224
|
-
rspec
|
|
247
|
+
rspec
|
|
225
248
|
sgcop!
|
|
226
249
|
sham_rack
|
|
227
250
|
sinatra
|
data/README.md
CHANGED
|
@@ -61,12 +61,15 @@ $ npm run build # Compile to a <script> containing a self-executing function
|
|
|
61
61
|
|
|
62
62
|
### default spec
|
|
63
63
|
|
|
64
|
-
|
|
64
|
+
```
|
|
65
|
+
$ bundle exec rspec
|
|
66
|
+
```
|
|
65
67
|
|
|
66
|
-
###
|
|
68
|
+
### testing against all target rails versions
|
|
67
69
|
|
|
68
|
-
|
|
69
|
-
|
|
70
|
+
```
|
|
71
|
+
$ ./test.sh
|
|
72
|
+
```
|
|
70
73
|
|
|
71
74
|
## release gem
|
|
72
75
|
|
data/copy_tuner_client.gemspec
CHANGED
|
@@ -6,9 +6,10 @@ Gem::Specification.new do |s|
|
|
|
6
6
|
s.required_ruby_version = '>= 2.5.0'
|
|
7
7
|
s.add_dependency 'i18n', '>= 0.5.0'
|
|
8
8
|
s.add_dependency 'json'
|
|
9
|
-
s.
|
|
9
|
+
s.add_dependency 'nokogiri'
|
|
10
|
+
s.add_development_dependency 'rails', '~> 6.1'
|
|
10
11
|
s.add_development_dependency 'rake'
|
|
11
|
-
s.add_development_dependency 'rspec'
|
|
12
|
+
s.add_development_dependency 'rspec'
|
|
12
13
|
s.add_development_dependency 'sham_rack'
|
|
13
14
|
s.add_development_dependency 'sinatra'
|
|
14
15
|
s.add_development_dependency 'sqlite3'
|
data/gemfiles/5.2.gemfile
CHANGED
data/gemfiles/6.0.gemfile
CHANGED
|
@@ -19,7 +19,7 @@ module CopyTunerClient
|
|
|
19
19
|
:proxy_port, :proxy_user, :secure, :polling_delay, :sync_interval,
|
|
20
20
|
:sync_interval_staging, :sync_ignore_path_regex, :logger,
|
|
21
21
|
:framework, :middleware, :disable_middleware, :disable_test_translation,
|
|
22
|
-
:ca_file, :exclude_key_regexp, :s3_host, :locales].freeze
|
|
22
|
+
:ca_file, :exclude_key_regexp, :s3_host, :locales, :ignored_keys, :ignored_key_handler].freeze
|
|
23
23
|
|
|
24
24
|
# @return [String] The API key for your project, found on the project edit form.
|
|
25
25
|
attr_accessor :api_key
|
|
@@ -131,6 +131,12 @@ module CopyTunerClient
|
|
|
131
131
|
# @return [Boolean] Html escape
|
|
132
132
|
attr_accessor :html_escape
|
|
133
133
|
|
|
134
|
+
# @return [Array<String>] A list of ignored keys
|
|
135
|
+
attr_accessor :ignored_keys
|
|
136
|
+
|
|
137
|
+
# @return [Proc]
|
|
138
|
+
attr_accessor :ignored_key_handler
|
|
139
|
+
|
|
134
140
|
alias_method :secure?, :secure
|
|
135
141
|
|
|
136
142
|
# Instantiated from {CopyTunerClient.configure}. Sets defaults.
|
|
@@ -152,6 +158,8 @@ module CopyTunerClient
|
|
|
152
158
|
self.s3_host = 'copy-tuner-data-prod.s3.amazonaws.com'
|
|
153
159
|
self.disable_copyray_comment_injection = false
|
|
154
160
|
self.html_escape = false
|
|
161
|
+
self.ignored_keys = []
|
|
162
|
+
self.ignored_key_handler = -> (e) { raise e }
|
|
155
163
|
|
|
156
164
|
@applied = false
|
|
157
165
|
end
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
require 'copy_tuner_client/copyray'
|
|
2
2
|
require 'copy_tuner_client/translation_log'
|
|
3
|
+
require 'copy_tuner_client/helper_extension'
|
|
3
4
|
|
|
4
5
|
module CopyTunerClient
|
|
5
6
|
# Connects to integration points for Rails 3 applications
|
|
@@ -10,36 +11,10 @@ module CopyTunerClient
|
|
|
10
11
|
|
|
11
12
|
initializer :initialize_copy_tuner_hook_methods, :after => :load_config_initializers do |app|
|
|
12
13
|
ActiveSupport.on_load(:action_view) do
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
if CopyTunerClient.configuration.disable_copyray_comment_injection || options[:rescue_format] == :text
|
|
18
|
-
if options[:rescue_format] == :text
|
|
19
|
-
ActiveSupport::Deprecation.warn('rescue_format option is deprecated in copy_tuner_client@0.6.0')
|
|
20
|
-
end
|
|
21
|
-
source
|
|
22
|
-
else
|
|
23
|
-
separator = options[:separator] || I18n.default_separator
|
|
24
|
-
scope = options[:scope]
|
|
25
|
-
normalized_key =
|
|
26
|
-
if key.to_s.first == '.'
|
|
27
|
-
scope_key_by_partial(key)
|
|
28
|
-
else
|
|
29
|
-
I18n.normalize_keys(nil, key, scope, separator).join(separator)
|
|
30
|
-
end
|
|
31
|
-
CopyTunerClient::Copyray.augment_template(source, normalized_key)
|
|
32
|
-
end
|
|
33
|
-
end
|
|
34
|
-
if CopyTunerClient.configuration.enable_middleware?
|
|
35
|
-
alias_method :translate_without_copyray_comment, :translate
|
|
36
|
-
alias_method :translate, :translate_with_copyray_comment
|
|
37
|
-
alias :t :translate
|
|
38
|
-
alias :tt :translate_without_copyray_comment
|
|
39
|
-
else
|
|
40
|
-
alias :tt :translate
|
|
41
|
-
end
|
|
42
|
-
end
|
|
14
|
+
CopyTunerClient::HelperExtension.hook_translation_helper(
|
|
15
|
+
ActionView::Helpers::TranslationHelper,
|
|
16
|
+
middleware_enabled: CopyTunerClient.configuration.enable_middleware?
|
|
17
|
+
)
|
|
43
18
|
end
|
|
44
19
|
|
|
45
20
|
if CopyTunerClient.configuration.enable_middleware?
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
module CopyTunerClient
|
|
2
|
+
module HelperExtension
|
|
3
|
+
class << self
|
|
4
|
+
def hook_translation_helper(mod, middleware_enabled:)
|
|
5
|
+
mod.class_eval do
|
|
6
|
+
def translate_with_copyray_comment(key, **options)
|
|
7
|
+
source = translate_without_copyray_comment(key, **options)
|
|
8
|
+
if CopyTunerClient.configuration.disable_copyray_comment_injection
|
|
9
|
+
source
|
|
10
|
+
else
|
|
11
|
+
separator = options[:separator] || I18n.default_separator
|
|
12
|
+
scope = options[:scope]
|
|
13
|
+
normalized_key =
|
|
14
|
+
if key.to_s.first == '.'
|
|
15
|
+
scope_key_by_partial(key)
|
|
16
|
+
else
|
|
17
|
+
I18n.normalize_keys(nil, key, scope, separator).join(separator)
|
|
18
|
+
end
|
|
19
|
+
CopyTunerClient::Copyray.augment_template(source, normalized_key)
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
if middleware_enabled
|
|
23
|
+
alias_method :translate_without_copyray_comment, :translate
|
|
24
|
+
alias_method :translate, :translate_with_copyray_comment
|
|
25
|
+
alias :t :translate
|
|
26
|
+
alias :tt :translate_without_copyray_comment
|
|
27
|
+
else
|
|
28
|
+
alias :tt :translate
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
@@ -61,8 +61,16 @@ module CopyTunerClient
|
|
|
61
61
|
private
|
|
62
62
|
|
|
63
63
|
def lookup(locale, key, scope = [], options = {})
|
|
64
|
+
return nil if !key.is_a?(String) && !key.is_a?(Symbol)
|
|
65
|
+
|
|
64
66
|
parts = I18n.normalize_keys(locale, key, scope, options[:separator])
|
|
65
67
|
key_with_locale = parts.join('.')
|
|
68
|
+
key_without_locale = parts[1..].join('.')
|
|
69
|
+
|
|
70
|
+
if CopyTunerClient::configuration.ignored_keys.include?(key_without_locale)
|
|
71
|
+
CopyTunerClient::configuration.ignored_key_handler.call(IgnoredKey.new("Ignored key: #{key_without_locale}"))
|
|
72
|
+
end
|
|
73
|
+
|
|
66
74
|
content = cache[key_with_locale] || super
|
|
67
75
|
cache[key_with_locale] = nil if content.nil?
|
|
68
76
|
content
|
|
@@ -86,6 +94,8 @@ module CopyTunerClient
|
|
|
86
94
|
|
|
87
95
|
def default(locale, object, subject, options = {})
|
|
88
96
|
content = super(locale, object, subject, options)
|
|
97
|
+
return content if !object.is_a?(String) && !object.is_a?(Symbol)
|
|
98
|
+
|
|
89
99
|
if content.respond_to?(:to_str)
|
|
90
100
|
parts = I18n.normalize_keys(locale, object, options[:scope], options[:separator])
|
|
91
101
|
# NOTE: ActionView::Helpers::TranslationHelper#translate wraps default String in an Array
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
require 'nokogiri'
|
|
2
|
+
|
|
3
|
+
module CopyTunerClient
|
|
4
|
+
module I18nCompat
|
|
5
|
+
def select_html_incompatible_blurbs(blurbs)
|
|
6
|
+
non_html_key_blurbs = blurbs.reject { |key| key.ends_with?('.html') || key.ends_with?('_html') }
|
|
7
|
+
html_blurbs = non_html_key_blurbs.select do |key, content|
|
|
8
|
+
Nokogiri::HTML.fragment(content).children.any? { |node| node.name != 'text' }
|
|
9
|
+
end
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
module_function :select_html_incompatible_blurbs
|
|
13
|
+
end
|
|
14
|
+
end
|
|
@@ -19,7 +19,7 @@ module CopyTunerClient
|
|
|
19
19
|
def self.install_hook
|
|
20
20
|
I18n.class_eval do
|
|
21
21
|
class << self
|
|
22
|
-
def translate_with_copy_tuner_hook(key, **options)
|
|
22
|
+
def translate_with_copy_tuner_hook(key = nil, **options)
|
|
23
23
|
scope = options[:scope]
|
|
24
24
|
scope = scope.dup if scope.is_a?(Array) || scope.is_a?(String)
|
|
25
25
|
result = translate_without_copy_tuner_hook(key, **options)
|
|
@@ -25,8 +25,21 @@ namespace :copy_tuner do
|
|
|
25
25
|
if conflict_keys.empty?
|
|
26
26
|
puts 'All success'
|
|
27
27
|
else
|
|
28
|
-
|
|
29
|
-
|
|
28
|
+
puts conflict_keys.sort.join("\n")
|
|
29
|
+
exit 1
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
desc "Detect html incompatible keys."
|
|
34
|
+
task :detect_html_incompatible_keys => :environment do
|
|
35
|
+
require 'copy_tuner_client/i18n_compat'
|
|
36
|
+
html_incompatible_blurbs = CopyTunerClient::I18nCompat.select_html_incompatible_blurbs(CopyTunerClient.cache.blurbs)
|
|
37
|
+
|
|
38
|
+
if html_incompatible_blurbs.empty?
|
|
39
|
+
puts 'All success'
|
|
40
|
+
else
|
|
41
|
+
puts html_incompatible_blurbs.keys.sort.join("\n")
|
|
42
|
+
exit 1
|
|
30
43
|
end
|
|
31
44
|
end
|
|
32
45
|
end
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
require 'copy_tuner_client/helper_extension'
|
|
3
|
+
require 'copy_tuner_client/copyray'
|
|
4
|
+
|
|
5
|
+
describe CopyTunerClient::HelperExtension do
|
|
6
|
+
# rails <= 6.0.x
|
|
7
|
+
module HashArgumentHelper
|
|
8
|
+
def translate(key, options = {})
|
|
9
|
+
"Hello, #{options[:name]}"
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
# rails >= 6.1.x
|
|
14
|
+
module KeywordArgumentsHelper
|
|
15
|
+
def translate(key, **options)
|
|
16
|
+
"Hello, #{options[:name]}"
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
class HashArgumentView
|
|
21
|
+
include HashArgumentHelper
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
class KeywordArgumentsView
|
|
25
|
+
include KeywordArgumentsHelper
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
CopyTunerClient::HelperExtension.hook_translation_helper(HashArgumentHelper, middleware_enabled: true)
|
|
29
|
+
CopyTunerClient::HelperExtension.hook_translation_helper(KeywordArgumentsHelper, middleware_enabled: true)
|
|
30
|
+
|
|
31
|
+
it 'works with hash argument method' do
|
|
32
|
+
view = HashArgumentView.new
|
|
33
|
+
expect(view.translate('some.key', name: 'World')).to eq '<!--COPYRAY some.key-->Hello, World'
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
it 'works with keyword argument method' do
|
|
37
|
+
view = KeywordArgumentsView.new
|
|
38
|
+
expect(view.translate('some.key', name: 'World')).to eq '<!--COPYRAY some.key-->Hello, World'
|
|
39
|
+
end
|
|
40
|
+
end
|
|
@@ -139,6 +139,13 @@ describe CopyTunerClient::I18nBackend do
|
|
|
139
139
|
end
|
|
140
140
|
end
|
|
141
141
|
|
|
142
|
+
context 'non-string key' do
|
|
143
|
+
it 'Not to be registered in the cache' do
|
|
144
|
+
expect { subject.translate('en', {}) }.to throw_symbol(:exception)
|
|
145
|
+
expect(cache).not_to have_key 'en.{}'
|
|
146
|
+
end
|
|
147
|
+
end
|
|
148
|
+
|
|
142
149
|
describe "with stored translations" do
|
|
143
150
|
subject { build_backend }
|
|
144
151
|
|
data/test.sh
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
#!/bin/sh
|
|
2
|
+
|
|
3
|
+
BUNDLE_GEMFILE=gemfiles/5.2.gemfile bundle install && BUNDLE_GEMFILE=gemfiles/5.2.gemfile bundle exec rspec spec
|
|
4
|
+
BUNDLE_GEMFILE=gemfiles/6.0.gemfile bundle install && BUNDLE_GEMFILE=gemfiles/6.0.gemfile bundle exec rspec spec
|
|
5
|
+
BUNDLE_GEMFILE=gemfiles/6.1.gemfile bundle install && BUNDLE_GEMFILE=gemfiles/6.1.gemfile bundle exec rspec spec
|
|
6
|
+
BUNDLE_GEMFILE=gemfiles/main.gemfile bundle install && BUNDLE_GEMFILE=gemfiles/main.gemfile bundle exec rspec spec
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: copy_tuner_client
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.12.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- SonicGarden
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2021-
|
|
11
|
+
date: 2021-11-12 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: i18n
|
|
@@ -38,20 +38,34 @@ dependencies:
|
|
|
38
38
|
- - ">="
|
|
39
39
|
- !ruby/object:Gem::Version
|
|
40
40
|
version: '0'
|
|
41
|
+
- !ruby/object:Gem::Dependency
|
|
42
|
+
name: nokogiri
|
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
|
44
|
+
requirements:
|
|
45
|
+
- - ">="
|
|
46
|
+
- !ruby/object:Gem::Version
|
|
47
|
+
version: '0'
|
|
48
|
+
type: :runtime
|
|
49
|
+
prerelease: false
|
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
51
|
+
requirements:
|
|
52
|
+
- - ">="
|
|
53
|
+
- !ruby/object:Gem::Version
|
|
54
|
+
version: '0'
|
|
41
55
|
- !ruby/object:Gem::Dependency
|
|
42
56
|
name: rails
|
|
43
57
|
requirement: !ruby/object:Gem::Requirement
|
|
44
58
|
requirements:
|
|
45
59
|
- - "~>"
|
|
46
60
|
- !ruby/object:Gem::Version
|
|
47
|
-
version:
|
|
61
|
+
version: '6.1'
|
|
48
62
|
type: :development
|
|
49
63
|
prerelease: false
|
|
50
64
|
version_requirements: !ruby/object:Gem::Requirement
|
|
51
65
|
requirements:
|
|
52
66
|
- - "~>"
|
|
53
67
|
- !ruby/object:Gem::Version
|
|
54
|
-
version:
|
|
68
|
+
version: '6.1'
|
|
55
69
|
- !ruby/object:Gem::Dependency
|
|
56
70
|
name: rake
|
|
57
71
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -70,16 +84,16 @@ dependencies:
|
|
|
70
84
|
name: rspec
|
|
71
85
|
requirement: !ruby/object:Gem::Requirement
|
|
72
86
|
requirements:
|
|
73
|
-
- -
|
|
87
|
+
- - ">="
|
|
74
88
|
- !ruby/object:Gem::Version
|
|
75
|
-
version:
|
|
89
|
+
version: '0'
|
|
76
90
|
type: :development
|
|
77
91
|
prerelease: false
|
|
78
92
|
version_requirements: !ruby/object:Gem::Requirement
|
|
79
93
|
requirements:
|
|
80
|
-
- -
|
|
94
|
+
- - ">="
|
|
81
95
|
- !ruby/object:Gem::Version
|
|
82
|
-
version:
|
|
96
|
+
version: '0'
|
|
83
97
|
- !ruby/object:Gem::Dependency
|
|
84
98
|
name: sham_rack
|
|
85
99
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -188,6 +202,8 @@ files:
|
|
|
188
202
|
- copy_tuner_client.gemspec
|
|
189
203
|
- gemfiles/5.2.gemfile
|
|
190
204
|
- gemfiles/6.0.gemfile
|
|
205
|
+
- gemfiles/6.1.gemfile
|
|
206
|
+
- gemfiles/main.gemfile
|
|
191
207
|
- lib/copy_tuner_client.rb
|
|
192
208
|
- lib/copy_tuner_client/cache.rb
|
|
193
209
|
- lib/copy_tuner_client/client.rb
|
|
@@ -197,7 +213,9 @@ files:
|
|
|
197
213
|
- lib/copy_tuner_client/dotted_hash.rb
|
|
198
214
|
- lib/copy_tuner_client/engine.rb
|
|
199
215
|
- lib/copy_tuner_client/errors.rb
|
|
216
|
+
- lib/copy_tuner_client/helper_extension.rb
|
|
200
217
|
- lib/copy_tuner_client/i18n_backend.rb
|
|
218
|
+
- lib/copy_tuner_client/i18n_compat.rb
|
|
201
219
|
- lib/copy_tuner_client/poller.rb
|
|
202
220
|
- lib/copy_tuner_client/prefixed_logger.rb
|
|
203
221
|
- lib/copy_tuner_client/process_guard.rb
|
|
@@ -216,6 +234,7 @@ files:
|
|
|
216
234
|
- spec/copy_tuner_client/configuration_spec.rb
|
|
217
235
|
- spec/copy_tuner_client/copyray_spec.rb
|
|
218
236
|
- spec/copy_tuner_client/dotted_hash_spec.rb
|
|
237
|
+
- spec/copy_tuner_client/helper_extension_spec.rb
|
|
219
238
|
- spec/copy_tuner_client/i18n_backend_spec.rb
|
|
220
239
|
- spec/copy_tuner_client/poller_spec.rb
|
|
221
240
|
- spec/copy_tuner_client/prefixed_logger_spec.rb
|
|
@@ -239,6 +258,7 @@ files:
|
|
|
239
258
|
- src/main.js
|
|
240
259
|
- src/specimen.js
|
|
241
260
|
- src/util.js
|
|
261
|
+
- test.sh
|
|
242
262
|
- ui/views/copytuner/index.html.erb
|
|
243
263
|
- ui/views/layouts/copytuner_default.html.erb
|
|
244
264
|
homepage: https://github.com/SonicGarden/copy-tuner-ruby-client
|
|
@@ -259,7 +279,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
259
279
|
- !ruby/object:Gem::Version
|
|
260
280
|
version: '0'
|
|
261
281
|
requirements: []
|
|
262
|
-
rubygems_version: 3.1.
|
|
282
|
+
rubygems_version: 3.1.6
|
|
263
283
|
signing_key:
|
|
264
284
|
specification_version: 4
|
|
265
285
|
summary: Client for the CopyTuner copy management service
|
|
@@ -269,6 +289,7 @@ test_files:
|
|
|
269
289
|
- spec/copy_tuner_client/configuration_spec.rb
|
|
270
290
|
- spec/copy_tuner_client/copyray_spec.rb
|
|
271
291
|
- spec/copy_tuner_client/dotted_hash_spec.rb
|
|
292
|
+
- spec/copy_tuner_client/helper_extension_spec.rb
|
|
272
293
|
- spec/copy_tuner_client/i18n_backend_spec.rb
|
|
273
294
|
- spec/copy_tuner_client/poller_spec.rb
|
|
274
295
|
- spec/copy_tuner_client/prefixed_logger_spec.rb
|