wovnrb 2.5.1 → 3.0.3
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/.circleci/config.yml +21 -10
- data/.rubocop_todo.yml +13 -43
- data/Gemfile +0 -5
- data/README.en.md +24 -0
- data/docker/docker-compose.yml +16 -0
- data/docker/rails/Dockerfile +6 -0
- data/docker/rails/TestSite/.browserslistrc +1 -0
- data/docker/rails/TestSite/.gitignore +63 -0
- data/docker/rails/TestSite/Gemfile +56 -0
- data/docker/rails/TestSite/README.md +24 -0
- data/docker/rails/TestSite/Rakefile +6 -0
- data/docker/rails/TestSite/app/assets/config/manifest.js +2 -0
- data/docker/rails/TestSite/app/assets/images/.keep +0 -0
- data/docker/rails/TestSite/app/assets/stylesheets/application.css +15 -0
- data/docker/rails/TestSite/app/assets/stylesheets/redirects.scss +3 -0
- data/docker/rails/TestSite/app/channels/application_cable/channel.rb +4 -0
- data/docker/rails/TestSite/app/channels/application_cable/connection.rb +4 -0
- data/docker/rails/TestSite/app/controllers/application_controller.rb +2 -0
- data/docker/rails/TestSite/app/controllers/concerns/.keep +0 -0
- data/docker/rails/TestSite/app/controllers/custom_response_controller.rb +16 -0
- data/docker/rails/TestSite/app/controllers/pages_controller.rb +7 -0
- data/docker/rails/TestSite/app/controllers/redirects_controller.rb +5 -0
- data/docker/rails/TestSite/app/helpers/application_helper.rb +2 -0
- data/docker/rails/TestSite/app/helpers/pages_helper.rb +2 -0
- data/docker/rails/TestSite/app/helpers/redirects_helper.rb +2 -0
- data/docker/rails/TestSite/app/javascript/channels/consumer.js +6 -0
- data/docker/rails/TestSite/app/javascript/channels/index.js +5 -0
- data/docker/rails/TestSite/app/javascript/packs/application.js +17 -0
- data/docker/rails/TestSite/app/jobs/application_job.rb +7 -0
- data/docker/rails/TestSite/app/mailers/application_mailer.rb +4 -0
- data/docker/rails/TestSite/app/models/application_record.rb +3 -0
- data/docker/rails/TestSite/app/models/concerns/.keep +0 -0
- data/docker/rails/TestSite/app/views/layouts/application.html.erb +15 -0
- data/docker/rails/TestSite/app/views/layouts/mailer.html.erb +13 -0
- data/docker/rails/TestSite/app/views/layouts/mailer.text.erb +1 -0
- data/docker/rails/TestSite/babel.config.js +72 -0
- data/docker/rails/TestSite/bin/bundle +114 -0
- data/docker/rails/TestSite/bin/rails +4 -0
- data/docker/rails/TestSite/bin/rake +4 -0
- data/docker/rails/TestSite/bin/setup +36 -0
- data/docker/rails/TestSite/bin/webpack +18 -0
- data/docker/rails/TestSite/bin/webpack-dev-server +18 -0
- data/docker/rails/TestSite/bin/yarn +11 -0
- data/docker/rails/TestSite/config.ru +5 -0
- data/docker/rails/TestSite/config/application.rb +26 -0
- data/docker/rails/TestSite/config/boot.rb +4 -0
- data/docker/rails/TestSite/config/cable.yml +10 -0
- data/docker/rails/TestSite/config/credentials.yml.enc +1 -0
- data/docker/rails/TestSite/config/database.yml +25 -0
- data/docker/rails/TestSite/config/environment.rb +5 -0
- data/docker/rails/TestSite/config/environments/development.rb +62 -0
- data/docker/rails/TestSite/config/environments/production.rb +112 -0
- data/docker/rails/TestSite/config/environments/test.rb +49 -0
- data/docker/rails/TestSite/config/initializers/application_controller_renderer.rb +8 -0
- data/docker/rails/TestSite/config/initializers/assets.rb +14 -0
- data/docker/rails/TestSite/config/initializers/backtrace_silencers.rb +7 -0
- data/docker/rails/TestSite/config/initializers/content_security_policy.rb +30 -0
- data/docker/rails/TestSite/config/initializers/cookies_serializer.rb +5 -0
- data/docker/rails/TestSite/config/initializers/filter_parameter_logging.rb +4 -0
- data/docker/rails/TestSite/config/initializers/inflections.rb +16 -0
- data/docker/rails/TestSite/config/initializers/mime_types.rb +4 -0
- data/docker/rails/TestSite/config/initializers/wrap_parameters.rb +14 -0
- data/docker/rails/TestSite/config/locales/en.yml +33 -0
- data/docker/rails/TestSite/config/puma.rb +38 -0
- data/docker/rails/TestSite/config/routes.rb +5 -0
- data/docker/rails/TestSite/config/spring.rb +6 -0
- data/docker/rails/TestSite/config/storage.yml +34 -0
- data/docker/rails/TestSite/config/webpack/development.js +5 -0
- data/docker/rails/TestSite/config/webpack/environment.js +3 -0
- data/docker/rails/TestSite/config/webpack/production.js +5 -0
- data/docker/rails/TestSite/config/webpack/test.js +5 -0
- data/docker/rails/TestSite/config/webpacker.yml +96 -0
- data/docker/rails/TestSite/db/seeds.rb +7 -0
- data/docker/rails/TestSite/lib/assets/.keep +0 -0
- data/docker/rails/TestSite/lib/tasks/.keep +0 -0
- data/docker/rails/TestSite/log/.keep +0 -0
- data/docker/rails/TestSite/package.json +15 -0
- data/docker/rails/TestSite/postcss.config.js +12 -0
- data/docker/rails/TestSite/public/index.html +9 -0
- data/docker/rails/TestSite/public/page.html +13 -0
- data/docker/rails/TestSite/public/pages/files/plaintext_unicode.txt +204 -0
- data/docker/rails/TestSite/public/pages/files/simple_css.css +8 -0
- data/docker/rails/TestSite/public/pages/files/simple_javascript.js +2 -0
- data/docker/rails/TestSite/public/pages/html5test.html +555 -0
- data/docker/rails/TestSite/public/pages/oldhtml.html +335 -0
- data/docker/rails/TestSite/public/pages/xhtml.xhtml +726 -0
- data/docker/rails/TestSite/public/redirection_target.html +10 -0
- data/docker/rails/TestSite/public/testdir/testpage-dir.html +9 -0
- data/docker/rails/TestSite/public/testdir/testpage-redirect-destination.html +9 -0
- data/docker/rails/TestSite/public/testpage.html +9 -0
- data/docker/rails/TestSite/public/wovn_index.html +24 -0
- data/docker/rails/TestSite/start.sh +13 -0
- data/docker/rails/TestSite/storage/.keep +0 -0
- data/docker/rails/TestSite/test/application_system_test_case.rb +5 -0
- data/docker/rails/TestSite/test/channels/application_cable/connection_test.rb +11 -0
- data/docker/rails/TestSite/test/controllers/.keep +0 -0
- data/docker/rails/TestSite/test/controllers/pages_controller_test.rb +7 -0
- data/docker/rails/TestSite/test/controllers/redirects_controller_test.rb +7 -0
- data/docker/rails/TestSite/test/fixtures/.keep +0 -0
- data/docker/rails/TestSite/test/fixtures/files/.keep +0 -0
- data/docker/rails/TestSite/test/helpers/.keep +0 -0
- data/docker/rails/TestSite/test/integration/.keep +0 -0
- data/docker/rails/TestSite/test/mailers/.keep +0 -0
- data/docker/rails/TestSite/test/models/.keep +0 -0
- data/docker/rails/TestSite/test/system/.keep +0 -0
- data/docker/rails/TestSite/test/test_helper.rb +13 -0
- data/docker/rails/TestSite/yarn.lock +7642 -0
- data/lib/wovnrb.rb +1 -3
- data/lib/wovnrb/api_translator.rb +1 -1
- data/lib/wovnrb/headers.rb +30 -39
- data/lib/wovnrb/helpers/nokogumbo_helper.rb +7 -9
- data/lib/wovnrb/lang.rb +15 -14
- data/lib/wovnrb/railtie.rb +3 -15
- data/lib/wovnrb/services/html_converter.rb +11 -7
- data/lib/wovnrb/store.rb +7 -10
- data/lib/wovnrb/version.rb +1 -1
- data/makefile +16 -0
- data/test/lib/api_translator_test.rb +3 -4
- data/test/lib/lang_test.rb +5 -136
- data/test/lib/services/html_converter_test.rb +10 -4
- data/test/lib/store_test.rb +1 -1
- data/test/lib/wovnrb_test.rb +12 -12
- data/wovnrb.gemspec +4 -3
- metadata +114 -18
- data/.travis.yml +0 -14
- data/lib/wovnrb/text_caches/cache_base.rb +0 -53
- data/lib/wovnrb/text_caches/memory_cache.rb +0 -51
- data/test/lib/text_caches/cache_base_test.rb +0 -31
- data/test/lib/text_caches/memory_cache_test.rb +0 -91
@@ -25,10 +25,10 @@ module Wovnrb
|
|
25
25
|
|
26
26
|
def test_build_api_compatible_html_not_fail_for_big_content
|
27
27
|
long_string = 'a' * 60_000
|
28
|
-
converter = prepare_html_converter(
|
28
|
+
converter = prepare_html_converter("<html><body><p>#{long_string}</p></body></html>", supported_langs: %w[en vi])
|
29
29
|
converted_html, = converter.build_api_compatible_html
|
30
30
|
|
31
|
-
expected_html = "<html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><script src=\"//j.wovn.io/1\" async=\"true\" data-wovnio=\"key=123456&backend=true&currentLang=en&defaultLang=en&urlPattern=query&langCodeAliases={}&langParamName=wovn&version=WOVN.rb_#{VERSION}\" data-wovnio-type=\"fallback_snippet\"></script><link rel=\"alternate\" hreflang=\"en\" href=\"http://my-site.com/\"><link rel=\"alternate\" hreflang=\"vi\" href=\"http://my-site.com/?wovn=vi\"></head><body><p
|
31
|
+
expected_html = "<html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><script src=\"//j.wovn.io/1\" async=\"true\" data-wovnio=\"key=123456&backend=true&currentLang=en&defaultLang=en&urlPattern=query&langCodeAliases={}&langParamName=wovn&version=WOVN.rb_#{VERSION}\" data-wovnio-type=\"fallback_snippet\"></script><link rel=\"alternate\" hreflang=\"en\" href=\"http://my-site.com/\"><link rel=\"alternate\" hreflang=\"vi\" href=\"http://my-site.com/?wovn=vi\"></head><body><p>#{long_string}</p></body></html>"
|
32
32
|
assert_equal(expected_html, converted_html)
|
33
33
|
end
|
34
34
|
|
@@ -154,11 +154,17 @@ module Wovnrb
|
|
154
154
|
end
|
155
155
|
|
156
156
|
def test_replace_snippet
|
157
|
-
converter = prepare_html_converter('<html><head
|
157
|
+
converter = prepare_html_converter('<html><head>
|
158
|
+
<script src="/a"></script>
|
159
|
+
<script src="//j.wovn.io/1" async="true">
|
160
|
+
<script src="//j.wovn.io/1" data-wovnio="key=2wpv0n" async></script>
|
161
|
+
<script src="https//cdn.wovn.io/" data-wovnio="key=2wpv0n async></script>
|
162
|
+
<script src="https://wovn.global.ssl.fastly.net/widget/abcdef></script>
|
163
|
+
</head></html>')
|
158
164
|
converter.send(:replace_snippet)
|
159
165
|
|
160
166
|
expected_html = "<html><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><script src=\"//j.wovn.io/1\" async=\"true\" data-wovnio=\"key=123456&backend=true&currentLang=en&defaultLang=en&urlPattern=query&langCodeAliases={}&langParamName=wovn&version=WOVN.rb_#{VERSION}\" data-wovnio-type=\"fallback_snippet\"></script><script src=\"/a\"></script></head><body></body></html>"
|
161
|
-
assert_equal(expected_html, converter.send(:html))
|
167
|
+
assert_equal(expected_html.gsub(/\s+/, ''), converter.send(:html).gsub(/\s+/, ''))
|
162
168
|
end
|
163
169
|
|
164
170
|
def test_replace_hreflangs
|
data/test/lib/store_test.rb
CHANGED
@@ -133,7 +133,7 @@ module Wovnrb
|
|
133
133
|
|
134
134
|
assert(store.dev_mode?)
|
135
135
|
assert_equal('dev-wovn.io', store.wovn_host)
|
136
|
-
assert_equal('http://dev-wovn.io:3001
|
136
|
+
assert_equal('http://dev-wovn.io:3001', store.settings['api_url'])
|
137
137
|
assert_equal(3, store.settings['api_timeout_seconds'])
|
138
138
|
end
|
139
139
|
|
data/test/lib/wovnrb_test.rb
CHANGED
@@ -24,7 +24,7 @@ class WovnrbTest < Minitest::Test
|
|
24
24
|
'</body></html>'
|
25
25
|
].join
|
26
26
|
|
27
|
-
assert_switch_lang('en', 'ja', body, expected_body, true)
|
27
|
+
assert_switch_lang('en', 'ja', body, expected_body, api_expected: true)
|
28
28
|
end
|
29
29
|
|
30
30
|
def test_switch_lang_with_input_tags
|
@@ -52,14 +52,14 @@ class WovnrbTest < Minitest::Test
|
|
52
52
|
'</body></html>'
|
53
53
|
].join
|
54
54
|
|
55
|
-
assert_switch_lang('en', 'ja', body, expected_body, true)
|
55
|
+
assert_switch_lang('en', 'ja', body, expected_body, api_expected: true)
|
56
56
|
end
|
57
57
|
|
58
58
|
def test_switch_lang_of_html_fragment_with_japanese_translations
|
59
59
|
bodies = ['<span>Hello</span>'].join
|
60
60
|
expected_bodies = ['<span><!--wovn-src:Hello-->こんにちは</span>'].join
|
61
61
|
|
62
|
-
assert_switch_lang('en', 'ja', bodies, expected_bodies, true)
|
62
|
+
assert_switch_lang('en', 'ja', bodies, expected_bodies, api_expected: true)
|
63
63
|
end
|
64
64
|
|
65
65
|
def test_switch_lang_splitted_body
|
@@ -68,7 +68,7 @@ class WovnrbTest < Minitest::Test
|
|
68
68
|
'</body></html>'].join
|
69
69
|
expected_bodies = ["<html><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><script src=\"//j.wovn.io/1\" async=\"true\" data-wovnio=\"key=123456&backend=true&currentLang=ja&defaultLang=en&urlPattern=subdomain&langCodeAliases={}&version=WOVN.rb_#{Wovnrb::VERSION}\" data-wovnio-type=\"fallback_snippet\"></script><link rel=\"alternate\" hreflang=\"en\" href=\"http://page.com/\"></head><body><h1>Mr. Belvedere Fan Club</h1><div><p>Hello</p></div></body></html>"].join
|
70
70
|
|
71
|
-
assert_switch_lang('en', 'ja', bodies, expected_bodies, true)
|
71
|
+
assert_switch_lang('en', 'ja', bodies, expected_bodies, api_expected: true)
|
72
72
|
end
|
73
73
|
|
74
74
|
def test_switch_lang_of_html_fragment_in_splitted_body
|
@@ -76,7 +76,7 @@ class WovnrbTest < Minitest::Test
|
|
76
76
|
'<option value="2">2</option></select>'].join
|
77
77
|
expected_body = ['<select name="test"><option value="1">1</option><option value="2">2</option></select>'].join
|
78
78
|
|
79
|
-
assert_switch_lang('en', 'ja', body, expected_body, true)
|
79
|
+
assert_switch_lang('en', 'ja', body, expected_body, api_expected: true)
|
80
80
|
end
|
81
81
|
|
82
82
|
def test_switch_lang_missing_values
|
@@ -88,7 +88,7 @@ class WovnrbTest < Minitest::Test
|
|
88
88
|
</body></html>
|
89
89
|
"
|
90
90
|
|
91
|
-
assert_switch_lang('en', 'ja', body, expected_body, true)
|
91
|
+
assert_switch_lang('en', 'ja', body, expected_body, api_expected: true)
|
92
92
|
end
|
93
93
|
|
94
94
|
def test_switch_lang_on_fragment_with_translate_fragment_false
|
@@ -96,7 +96,7 @@ class WovnrbTest < Minitest::Test
|
|
96
96
|
<div><p>Hello</p></div>"
|
97
97
|
|
98
98
|
Wovnrb::Store.instance.settings['translate_fragment'] = false
|
99
|
-
assert_switch_lang('en', 'ja', body, body, false)
|
99
|
+
assert_switch_lang('en', 'ja', body, body, api_expected: false)
|
100
100
|
end
|
101
101
|
|
102
102
|
def test_switch_lang_on_fragment_with_translate_fragment_true
|
@@ -106,7 +106,7 @@ class WovnrbTest < Minitest::Test
|
|
106
106
|
<div><p><!--wovn-src:Hello-->こんにちは</p></div>"
|
107
107
|
|
108
108
|
Wovnrb::Store.instance.settings['translate_fragment'] = true
|
109
|
-
assert_switch_lang('en', 'ja', body, expected_body, true)
|
109
|
+
assert_switch_lang('en', 'ja', body, expected_body, api_expected: true)
|
110
110
|
end
|
111
111
|
|
112
112
|
def test_switch_lang_ignores_amp
|
@@ -120,7 +120,7 @@ class WovnrbTest < Minitest::Test
|
|
120
120
|
</html>
|
121
121
|
HTML
|
122
122
|
|
123
|
-
assert_switch_lang('en', 'ja', body, body, false)
|
123
|
+
assert_switch_lang('en', 'ja', body, body, api_expected: false)
|
124
124
|
end
|
125
125
|
|
126
126
|
def test_switch_lang_ignores_amp_defined_with_symbol_attribute
|
@@ -133,7 +133,7 @@ HTML
|
|
133
133
|
</html>
|
134
134
|
HTML
|
135
135
|
|
136
|
-
assert_switch_lang('en', 'ja', body, body, false)
|
136
|
+
assert_switch_lang('en', 'ja', body, body, api_expected: false)
|
137
137
|
end
|
138
138
|
|
139
139
|
def test_call_without_path_ignored_should_change_environment
|
@@ -249,7 +249,7 @@ HTML
|
|
249
249
|
assert_equal(unaffected_env != app_mock.env, affected)
|
250
250
|
end
|
251
251
|
|
252
|
-
def assert_switch_lang(original_lang, target_lang, body, expected_body, api_expected
|
252
|
+
def assert_switch_lang(original_lang, target_lang, body, expected_body, api_expected: true)
|
253
253
|
subdomain = target_lang == original_lang ? '' : "#{target_lang}."
|
254
254
|
interceptor = Wovnrb::Interceptor.new(get_app)
|
255
255
|
|
@@ -303,7 +303,7 @@ HTML
|
|
303
303
|
|
304
304
|
def initialize(opts = {})
|
305
305
|
@params = {}
|
306
|
-
if opts.key?(:params) && opts[:params].
|
306
|
+
if opts.key?(:params) && opts[:params].instance_of?(Hash)
|
307
307
|
opts[:params].each do |key, val|
|
308
308
|
@params[key] = val
|
309
309
|
end
|
data/wovnrb.gemspec
CHANGED
@@ -5,12 +5,13 @@ require 'wovnrb/version'
|
|
5
5
|
Gem::Specification.new do |spec|
|
6
6
|
spec.name = 'wovnrb'
|
7
7
|
spec.version = Wovnrb::VERSION
|
8
|
-
spec.authors = ['
|
9
|
-
spec.email = ['
|
8
|
+
spec.authors = ['Wovn Technologies, Inc.']
|
9
|
+
spec.email = ['dev@wovn.io']
|
10
10
|
spec.summary = 'Gem for WOVN.io'
|
11
11
|
spec.description = 'Ruby gem for WOVN backend on Rack.'
|
12
|
-
spec.homepage = ''
|
12
|
+
spec.homepage = 'https://wovn.io'
|
13
13
|
spec.license = 'MIT'
|
14
|
+
spec.required_ruby_version = '>= 2.5'
|
14
15
|
|
15
16
|
files = `git ls-files -z`.split("\x0")
|
16
17
|
files.delete('BEFORE_PUSHING')
|
metadata
CHANGED
@@ -1,15 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: wovnrb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 3.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
|
-
-
|
8
|
-
|
9
|
-
autorequire:
|
7
|
+
- Wovn Technologies, Inc.
|
8
|
+
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date: 2021-
|
11
|
+
date: 2021-07-28 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: activesupport
|
@@ -397,7 +396,7 @@ dependencies:
|
|
397
396
|
version: 2.3.2
|
398
397
|
description: Ruby gem for WOVN backend on Rack.
|
399
398
|
email:
|
400
|
-
-
|
399
|
+
- dev@wovn.io
|
401
400
|
executables: []
|
402
401
|
extensions: []
|
403
402
|
extra_rdoc_files: []
|
@@ -406,7 +405,6 @@ files:
|
|
406
405
|
- ".gitignore"
|
407
406
|
- ".rubocop.yml"
|
408
407
|
- ".rubocop_todo.yml"
|
409
|
-
- ".travis.yml"
|
410
408
|
- Gemfile
|
411
409
|
- LICENSE.txt
|
412
410
|
- PULL_REQUEST_TEMPLATE
|
@@ -414,6 +412,109 @@ files:
|
|
414
412
|
- README.ja.md
|
415
413
|
- README.md
|
416
414
|
- Rakefile
|
415
|
+
- docker/docker-compose.yml
|
416
|
+
- docker/rails/Dockerfile
|
417
|
+
- docker/rails/TestSite/.browserslistrc
|
418
|
+
- docker/rails/TestSite/.gitignore
|
419
|
+
- docker/rails/TestSite/Gemfile
|
420
|
+
- docker/rails/TestSite/README.md
|
421
|
+
- docker/rails/TestSite/Rakefile
|
422
|
+
- docker/rails/TestSite/app/assets/config/manifest.js
|
423
|
+
- docker/rails/TestSite/app/assets/images/.keep
|
424
|
+
- docker/rails/TestSite/app/assets/stylesheets/application.css
|
425
|
+
- docker/rails/TestSite/app/assets/stylesheets/redirects.scss
|
426
|
+
- docker/rails/TestSite/app/channels/application_cable/channel.rb
|
427
|
+
- docker/rails/TestSite/app/channels/application_cable/connection.rb
|
428
|
+
- docker/rails/TestSite/app/controllers/application_controller.rb
|
429
|
+
- docker/rails/TestSite/app/controllers/concerns/.keep
|
430
|
+
- docker/rails/TestSite/app/controllers/custom_response_controller.rb
|
431
|
+
- docker/rails/TestSite/app/controllers/pages_controller.rb
|
432
|
+
- docker/rails/TestSite/app/controllers/redirects_controller.rb
|
433
|
+
- docker/rails/TestSite/app/helpers/application_helper.rb
|
434
|
+
- docker/rails/TestSite/app/helpers/pages_helper.rb
|
435
|
+
- docker/rails/TestSite/app/helpers/redirects_helper.rb
|
436
|
+
- docker/rails/TestSite/app/javascript/channels/consumer.js
|
437
|
+
- docker/rails/TestSite/app/javascript/channels/index.js
|
438
|
+
- docker/rails/TestSite/app/javascript/packs/application.js
|
439
|
+
- docker/rails/TestSite/app/jobs/application_job.rb
|
440
|
+
- docker/rails/TestSite/app/mailers/application_mailer.rb
|
441
|
+
- docker/rails/TestSite/app/models/application_record.rb
|
442
|
+
- docker/rails/TestSite/app/models/concerns/.keep
|
443
|
+
- docker/rails/TestSite/app/views/layouts/application.html.erb
|
444
|
+
- docker/rails/TestSite/app/views/layouts/mailer.html.erb
|
445
|
+
- docker/rails/TestSite/app/views/layouts/mailer.text.erb
|
446
|
+
- docker/rails/TestSite/babel.config.js
|
447
|
+
- docker/rails/TestSite/bin/bundle
|
448
|
+
- docker/rails/TestSite/bin/rails
|
449
|
+
- docker/rails/TestSite/bin/rake
|
450
|
+
- docker/rails/TestSite/bin/setup
|
451
|
+
- docker/rails/TestSite/bin/webpack
|
452
|
+
- docker/rails/TestSite/bin/webpack-dev-server
|
453
|
+
- docker/rails/TestSite/bin/yarn
|
454
|
+
- docker/rails/TestSite/config.ru
|
455
|
+
- docker/rails/TestSite/config/application.rb
|
456
|
+
- docker/rails/TestSite/config/boot.rb
|
457
|
+
- docker/rails/TestSite/config/cable.yml
|
458
|
+
- docker/rails/TestSite/config/credentials.yml.enc
|
459
|
+
- docker/rails/TestSite/config/database.yml
|
460
|
+
- docker/rails/TestSite/config/environment.rb
|
461
|
+
- docker/rails/TestSite/config/environments/development.rb
|
462
|
+
- docker/rails/TestSite/config/environments/production.rb
|
463
|
+
- docker/rails/TestSite/config/environments/test.rb
|
464
|
+
- docker/rails/TestSite/config/initializers/application_controller_renderer.rb
|
465
|
+
- docker/rails/TestSite/config/initializers/assets.rb
|
466
|
+
- docker/rails/TestSite/config/initializers/backtrace_silencers.rb
|
467
|
+
- docker/rails/TestSite/config/initializers/content_security_policy.rb
|
468
|
+
- docker/rails/TestSite/config/initializers/cookies_serializer.rb
|
469
|
+
- docker/rails/TestSite/config/initializers/filter_parameter_logging.rb
|
470
|
+
- docker/rails/TestSite/config/initializers/inflections.rb
|
471
|
+
- docker/rails/TestSite/config/initializers/mime_types.rb
|
472
|
+
- docker/rails/TestSite/config/initializers/wrap_parameters.rb
|
473
|
+
- docker/rails/TestSite/config/locales/en.yml
|
474
|
+
- docker/rails/TestSite/config/puma.rb
|
475
|
+
- docker/rails/TestSite/config/routes.rb
|
476
|
+
- docker/rails/TestSite/config/spring.rb
|
477
|
+
- docker/rails/TestSite/config/storage.yml
|
478
|
+
- docker/rails/TestSite/config/webpack/development.js
|
479
|
+
- docker/rails/TestSite/config/webpack/environment.js
|
480
|
+
- docker/rails/TestSite/config/webpack/production.js
|
481
|
+
- docker/rails/TestSite/config/webpack/test.js
|
482
|
+
- docker/rails/TestSite/config/webpacker.yml
|
483
|
+
- docker/rails/TestSite/db/seeds.rb
|
484
|
+
- docker/rails/TestSite/lib/assets/.keep
|
485
|
+
- docker/rails/TestSite/lib/tasks/.keep
|
486
|
+
- docker/rails/TestSite/log/.keep
|
487
|
+
- docker/rails/TestSite/package.json
|
488
|
+
- docker/rails/TestSite/postcss.config.js
|
489
|
+
- docker/rails/TestSite/public/index.html
|
490
|
+
- docker/rails/TestSite/public/page.html
|
491
|
+
- docker/rails/TestSite/public/pages/files/plaintext_unicode.txt
|
492
|
+
- docker/rails/TestSite/public/pages/files/simple_css.css
|
493
|
+
- docker/rails/TestSite/public/pages/files/simple_javascript.js
|
494
|
+
- docker/rails/TestSite/public/pages/html5test.html
|
495
|
+
- docker/rails/TestSite/public/pages/oldhtml.html
|
496
|
+
- docker/rails/TestSite/public/pages/xhtml.xhtml
|
497
|
+
- docker/rails/TestSite/public/redirection_target.html
|
498
|
+
- docker/rails/TestSite/public/testdir/testpage-dir.html
|
499
|
+
- docker/rails/TestSite/public/testdir/testpage-redirect-destination.html
|
500
|
+
- docker/rails/TestSite/public/testpage.html
|
501
|
+
- docker/rails/TestSite/public/wovn_index.html
|
502
|
+
- docker/rails/TestSite/start.sh
|
503
|
+
- docker/rails/TestSite/storage/.keep
|
504
|
+
- docker/rails/TestSite/test/application_system_test_case.rb
|
505
|
+
- docker/rails/TestSite/test/channels/application_cable/connection_test.rb
|
506
|
+
- docker/rails/TestSite/test/controllers/.keep
|
507
|
+
- docker/rails/TestSite/test/controllers/pages_controller_test.rb
|
508
|
+
- docker/rails/TestSite/test/controllers/redirects_controller_test.rb
|
509
|
+
- docker/rails/TestSite/test/fixtures/.keep
|
510
|
+
- docker/rails/TestSite/test/fixtures/files/.keep
|
511
|
+
- docker/rails/TestSite/test/helpers/.keep
|
512
|
+
- docker/rails/TestSite/test/integration/.keep
|
513
|
+
- docker/rails/TestSite/test/mailers/.keep
|
514
|
+
- docker/rails/TestSite/test/models/.keep
|
515
|
+
- docker/rails/TestSite/test/system/.keep
|
516
|
+
- docker/rails/TestSite/test/test_helper.rb
|
517
|
+
- docker/rails/TestSite/yarn.lock
|
417
518
|
- lib/wovnrb.rb
|
418
519
|
- lib/wovnrb/api_translator.rb
|
419
520
|
- lib/wovnrb/headers.rb
|
@@ -426,9 +527,8 @@ files:
|
|
426
527
|
- lib/wovnrb/services/wovn_logger.rb
|
427
528
|
- lib/wovnrb/settings.rb
|
428
529
|
- lib/wovnrb/store.rb
|
429
|
-
- lib/wovnrb/text_caches/cache_base.rb
|
430
|
-
- lib/wovnrb/text_caches/memory_cache.rb
|
431
530
|
- lib/wovnrb/version.rb
|
531
|
+
- makefile
|
432
532
|
- test/fixtures/html/test.html
|
433
533
|
- test/fixtures/html/test_translated.html
|
434
534
|
- test/lib/api_translator_test.rb
|
@@ -439,16 +539,14 @@ files:
|
|
439
539
|
- test/lib/services/html_replace_marker_test.rb
|
440
540
|
- test/lib/services/wovn_logger_test.rb
|
441
541
|
- test/lib/store_test.rb
|
442
|
-
- test/lib/text_caches/cache_base_test.rb
|
443
|
-
- test/lib/text_caches/memory_cache_test.rb
|
444
542
|
- test/lib/wovnrb_test.rb
|
445
543
|
- test/test_helper.rb
|
446
544
|
- wovnrb.gemspec
|
447
|
-
homepage:
|
545
|
+
homepage: https://wovn.io
|
448
546
|
licenses:
|
449
547
|
- MIT
|
450
548
|
metadata: {}
|
451
|
-
post_install_message:
|
549
|
+
post_install_message:
|
452
550
|
rdoc_options: []
|
453
551
|
require_paths:
|
454
552
|
- lib
|
@@ -456,15 +554,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
456
554
|
requirements:
|
457
555
|
- - ">="
|
458
556
|
- !ruby/object:Gem::Version
|
459
|
-
version: '
|
557
|
+
version: '2.5'
|
460
558
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
461
559
|
requirements:
|
462
560
|
- - ">="
|
463
561
|
- !ruby/object:Gem::Version
|
464
562
|
version: '0'
|
465
563
|
requirements: []
|
466
|
-
rubygems_version: 3.
|
467
|
-
signing_key:
|
564
|
+
rubygems_version: 3.1.4
|
565
|
+
signing_key:
|
468
566
|
specification_version: 4
|
469
567
|
summary: Gem for WOVN.io
|
470
568
|
test_files:
|
@@ -478,7 +576,5 @@ test_files:
|
|
478
576
|
- test/lib/services/html_replace_marker_test.rb
|
479
577
|
- test/lib/services/wovn_logger_test.rb
|
480
578
|
- test/lib/store_test.rb
|
481
|
-
- test/lib/text_caches/cache_base_test.rb
|
482
|
-
- test/lib/text_caches/memory_cache_test.rb
|
483
579
|
- test/lib/wovnrb_test.rb
|
484
580
|
- test/test_helper.rb
|
data/.travis.yml
DELETED
@@ -1,14 +0,0 @@
|
|
1
|
-
language: ruby
|
2
|
-
cache: bundler
|
3
|
-
rvm:
|
4
|
-
# Supported versions are
|
5
|
-
# > Ruby version:2.2 or later
|
6
|
-
# https://wovn.io/support/ruby-library/
|
7
|
-
- 2.5.0
|
8
|
-
- 2.4.3
|
9
|
-
- 2.3.6
|
10
|
-
- 2.2.9
|
11
|
-
# There is no support for 2.1 officially, but test for now.
|
12
|
-
- 2.1.10
|
13
|
-
before_install:
|
14
|
-
- gem update bundler --no-document
|
@@ -1,53 +0,0 @@
|
|
1
|
-
require 'active_support/inflector'
|
2
|
-
|
3
|
-
module Wovnrb
|
4
|
-
class CacheBase
|
5
|
-
@@strategy_map = {
|
6
|
-
memory: :memory_cache
|
7
|
-
}
|
8
|
-
|
9
|
-
@@default_base_config = {
|
10
|
-
strategy: :memory
|
11
|
-
}
|
12
|
-
|
13
|
-
@@singleton_cache = nil
|
14
|
-
def self.get_single
|
15
|
-
raise 'cache is not initialized' unless @@singleton_cache
|
16
|
-
|
17
|
-
@@singleton_cache
|
18
|
-
end
|
19
|
-
|
20
|
-
def self.set_single(config)
|
21
|
-
@@singleton_cache = build(config)
|
22
|
-
end
|
23
|
-
|
24
|
-
def self.reset_cache
|
25
|
-
@@singleton_cache = nil
|
26
|
-
end
|
27
|
-
|
28
|
-
def self.build(config)
|
29
|
-
@config = @@default_base_config.merge config
|
30
|
-
|
31
|
-
strategy = @@strategy_map[@config[:strategy]]
|
32
|
-
raise "Invalid strategy: #{strategy}" unless strategy
|
33
|
-
|
34
|
-
strategy_sym = strategy.to_sym
|
35
|
-
begin
|
36
|
-
require "wovnrb/text_caches/#{strategy_sym}"
|
37
|
-
rescue LoadError => e
|
38
|
-
raise "Could not find #{strategy_sym} (#{e})"
|
39
|
-
end
|
40
|
-
|
41
|
-
strategy_class = Wovnrb.const_get(ActiveSupport::Inflector.camelize(strategy_sym))
|
42
|
-
strategy_class.new(config)
|
43
|
-
end
|
44
|
-
|
45
|
-
def put(key, value)
|
46
|
-
raise NotImplementedError.new('put is not defined')
|
47
|
-
end
|
48
|
-
|
49
|
-
def get(key)
|
50
|
-
raise NotImplementedError.new('put is not defined')
|
51
|
-
end
|
52
|
-
end
|
53
|
-
end
|
@@ -1,51 +0,0 @@
|
|
1
|
-
require 'active_support/cache'
|
2
|
-
require 'lz4-ruby'
|
3
|
-
|
4
|
-
module Wovnrb
|
5
|
-
class MemoryCache < CacheBase
|
6
|
-
@@default_memory_cache_config = {
|
7
|
-
cache_megabytes: 200,
|
8
|
-
ttl_seconds: 300
|
9
|
-
}
|
10
|
-
|
11
|
-
def initialize(config)
|
12
|
-
@config = merge_setting(@@default_memory_cache_config, config)
|
13
|
-
cache_size = @config[:cache_megabytes].to_f
|
14
|
-
ttl = @config[:ttl_seconds].to_i
|
15
|
-
@cache_store = ActiveSupport::Cache::MemoryStore.new(expires_in: ttl.seconds, size: cache_size.megabytes)
|
16
|
-
end
|
17
|
-
|
18
|
-
def put(key, value)
|
19
|
-
@cache_store.write(key, compress(value))
|
20
|
-
end
|
21
|
-
|
22
|
-
def get(key)
|
23
|
-
stored_value =@cache_store.fetch(key)
|
24
|
-
decompress(stored_value) if stored_value
|
25
|
-
end
|
26
|
-
|
27
|
-
def options
|
28
|
-
@cache_store.options.clone
|
29
|
-
end
|
30
|
-
|
31
|
-
private
|
32
|
-
def merge_setting(original_config, merging_config)
|
33
|
-
config = original_config.clone
|
34
|
-
config.keys.each do |key|
|
35
|
-
key_string = key.to_s
|
36
|
-
if merging_config.has_key?(key_string) && merging_config[key_string].present?
|
37
|
-
config[key] = merging_config[key_string]
|
38
|
-
end
|
39
|
-
end
|
40
|
-
config
|
41
|
-
end
|
42
|
-
|
43
|
-
def compress(value)
|
44
|
-
LZ4.compress(value)
|
45
|
-
end
|
46
|
-
|
47
|
-
def decompress(value)
|
48
|
-
LZ4.decompress(value, value.bytesize, 'UTF-8')
|
49
|
-
end
|
50
|
-
end
|
51
|
-
end
|