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.
Files changed (130) hide show
  1. checksums.yaml +4 -4
  2. data/.circleci/config.yml +21 -10
  3. data/.rubocop_todo.yml +13 -43
  4. data/Gemfile +0 -5
  5. data/README.en.md +24 -0
  6. data/docker/docker-compose.yml +16 -0
  7. data/docker/rails/Dockerfile +6 -0
  8. data/docker/rails/TestSite/.browserslistrc +1 -0
  9. data/docker/rails/TestSite/.gitignore +63 -0
  10. data/docker/rails/TestSite/Gemfile +56 -0
  11. data/docker/rails/TestSite/README.md +24 -0
  12. data/docker/rails/TestSite/Rakefile +6 -0
  13. data/docker/rails/TestSite/app/assets/config/manifest.js +2 -0
  14. data/docker/rails/TestSite/app/assets/images/.keep +0 -0
  15. data/docker/rails/TestSite/app/assets/stylesheets/application.css +15 -0
  16. data/docker/rails/TestSite/app/assets/stylesheets/redirects.scss +3 -0
  17. data/docker/rails/TestSite/app/channels/application_cable/channel.rb +4 -0
  18. data/docker/rails/TestSite/app/channels/application_cable/connection.rb +4 -0
  19. data/docker/rails/TestSite/app/controllers/application_controller.rb +2 -0
  20. data/docker/rails/TestSite/app/controllers/concerns/.keep +0 -0
  21. data/docker/rails/TestSite/app/controllers/custom_response_controller.rb +16 -0
  22. data/docker/rails/TestSite/app/controllers/pages_controller.rb +7 -0
  23. data/docker/rails/TestSite/app/controllers/redirects_controller.rb +5 -0
  24. data/docker/rails/TestSite/app/helpers/application_helper.rb +2 -0
  25. data/docker/rails/TestSite/app/helpers/pages_helper.rb +2 -0
  26. data/docker/rails/TestSite/app/helpers/redirects_helper.rb +2 -0
  27. data/docker/rails/TestSite/app/javascript/channels/consumer.js +6 -0
  28. data/docker/rails/TestSite/app/javascript/channels/index.js +5 -0
  29. data/docker/rails/TestSite/app/javascript/packs/application.js +17 -0
  30. data/docker/rails/TestSite/app/jobs/application_job.rb +7 -0
  31. data/docker/rails/TestSite/app/mailers/application_mailer.rb +4 -0
  32. data/docker/rails/TestSite/app/models/application_record.rb +3 -0
  33. data/docker/rails/TestSite/app/models/concerns/.keep +0 -0
  34. data/docker/rails/TestSite/app/views/layouts/application.html.erb +15 -0
  35. data/docker/rails/TestSite/app/views/layouts/mailer.html.erb +13 -0
  36. data/docker/rails/TestSite/app/views/layouts/mailer.text.erb +1 -0
  37. data/docker/rails/TestSite/babel.config.js +72 -0
  38. data/docker/rails/TestSite/bin/bundle +114 -0
  39. data/docker/rails/TestSite/bin/rails +4 -0
  40. data/docker/rails/TestSite/bin/rake +4 -0
  41. data/docker/rails/TestSite/bin/setup +36 -0
  42. data/docker/rails/TestSite/bin/webpack +18 -0
  43. data/docker/rails/TestSite/bin/webpack-dev-server +18 -0
  44. data/docker/rails/TestSite/bin/yarn +11 -0
  45. data/docker/rails/TestSite/config.ru +5 -0
  46. data/docker/rails/TestSite/config/application.rb +26 -0
  47. data/docker/rails/TestSite/config/boot.rb +4 -0
  48. data/docker/rails/TestSite/config/cable.yml +10 -0
  49. data/docker/rails/TestSite/config/credentials.yml.enc +1 -0
  50. data/docker/rails/TestSite/config/database.yml +25 -0
  51. data/docker/rails/TestSite/config/environment.rb +5 -0
  52. data/docker/rails/TestSite/config/environments/development.rb +62 -0
  53. data/docker/rails/TestSite/config/environments/production.rb +112 -0
  54. data/docker/rails/TestSite/config/environments/test.rb +49 -0
  55. data/docker/rails/TestSite/config/initializers/application_controller_renderer.rb +8 -0
  56. data/docker/rails/TestSite/config/initializers/assets.rb +14 -0
  57. data/docker/rails/TestSite/config/initializers/backtrace_silencers.rb +7 -0
  58. data/docker/rails/TestSite/config/initializers/content_security_policy.rb +30 -0
  59. data/docker/rails/TestSite/config/initializers/cookies_serializer.rb +5 -0
  60. data/docker/rails/TestSite/config/initializers/filter_parameter_logging.rb +4 -0
  61. data/docker/rails/TestSite/config/initializers/inflections.rb +16 -0
  62. data/docker/rails/TestSite/config/initializers/mime_types.rb +4 -0
  63. data/docker/rails/TestSite/config/initializers/wrap_parameters.rb +14 -0
  64. data/docker/rails/TestSite/config/locales/en.yml +33 -0
  65. data/docker/rails/TestSite/config/puma.rb +38 -0
  66. data/docker/rails/TestSite/config/routes.rb +5 -0
  67. data/docker/rails/TestSite/config/spring.rb +6 -0
  68. data/docker/rails/TestSite/config/storage.yml +34 -0
  69. data/docker/rails/TestSite/config/webpack/development.js +5 -0
  70. data/docker/rails/TestSite/config/webpack/environment.js +3 -0
  71. data/docker/rails/TestSite/config/webpack/production.js +5 -0
  72. data/docker/rails/TestSite/config/webpack/test.js +5 -0
  73. data/docker/rails/TestSite/config/webpacker.yml +96 -0
  74. data/docker/rails/TestSite/db/seeds.rb +7 -0
  75. data/docker/rails/TestSite/lib/assets/.keep +0 -0
  76. data/docker/rails/TestSite/lib/tasks/.keep +0 -0
  77. data/docker/rails/TestSite/log/.keep +0 -0
  78. data/docker/rails/TestSite/package.json +15 -0
  79. data/docker/rails/TestSite/postcss.config.js +12 -0
  80. data/docker/rails/TestSite/public/index.html +9 -0
  81. data/docker/rails/TestSite/public/page.html +13 -0
  82. data/docker/rails/TestSite/public/pages/files/plaintext_unicode.txt +204 -0
  83. data/docker/rails/TestSite/public/pages/files/simple_css.css +8 -0
  84. data/docker/rails/TestSite/public/pages/files/simple_javascript.js +2 -0
  85. data/docker/rails/TestSite/public/pages/html5test.html +555 -0
  86. data/docker/rails/TestSite/public/pages/oldhtml.html +335 -0
  87. data/docker/rails/TestSite/public/pages/xhtml.xhtml +726 -0
  88. data/docker/rails/TestSite/public/redirection_target.html +10 -0
  89. data/docker/rails/TestSite/public/testdir/testpage-dir.html +9 -0
  90. data/docker/rails/TestSite/public/testdir/testpage-redirect-destination.html +9 -0
  91. data/docker/rails/TestSite/public/testpage.html +9 -0
  92. data/docker/rails/TestSite/public/wovn_index.html +24 -0
  93. data/docker/rails/TestSite/start.sh +13 -0
  94. data/docker/rails/TestSite/storage/.keep +0 -0
  95. data/docker/rails/TestSite/test/application_system_test_case.rb +5 -0
  96. data/docker/rails/TestSite/test/channels/application_cable/connection_test.rb +11 -0
  97. data/docker/rails/TestSite/test/controllers/.keep +0 -0
  98. data/docker/rails/TestSite/test/controllers/pages_controller_test.rb +7 -0
  99. data/docker/rails/TestSite/test/controllers/redirects_controller_test.rb +7 -0
  100. data/docker/rails/TestSite/test/fixtures/.keep +0 -0
  101. data/docker/rails/TestSite/test/fixtures/files/.keep +0 -0
  102. data/docker/rails/TestSite/test/helpers/.keep +0 -0
  103. data/docker/rails/TestSite/test/integration/.keep +0 -0
  104. data/docker/rails/TestSite/test/mailers/.keep +0 -0
  105. data/docker/rails/TestSite/test/models/.keep +0 -0
  106. data/docker/rails/TestSite/test/system/.keep +0 -0
  107. data/docker/rails/TestSite/test/test_helper.rb +13 -0
  108. data/docker/rails/TestSite/yarn.lock +7642 -0
  109. data/lib/wovnrb.rb +1 -3
  110. data/lib/wovnrb/api_translator.rb +1 -1
  111. data/lib/wovnrb/headers.rb +30 -39
  112. data/lib/wovnrb/helpers/nokogumbo_helper.rb +7 -9
  113. data/lib/wovnrb/lang.rb +15 -14
  114. data/lib/wovnrb/railtie.rb +3 -15
  115. data/lib/wovnrb/services/html_converter.rb +11 -7
  116. data/lib/wovnrb/store.rb +7 -10
  117. data/lib/wovnrb/version.rb +1 -1
  118. data/makefile +16 -0
  119. data/test/lib/api_translator_test.rb +3 -4
  120. data/test/lib/lang_test.rb +5 -136
  121. data/test/lib/services/html_converter_test.rb +10 -4
  122. data/test/lib/store_test.rb +1 -1
  123. data/test/lib/wovnrb_test.rb +12 -12
  124. data/wovnrb.gemspec +4 -3
  125. metadata +114 -18
  126. data/.travis.yml +0 -14
  127. data/lib/wovnrb/text_caches/cache_base.rb +0 -53
  128. data/lib/wovnrb/text_caches/memory_cache.rb +0 -51
  129. data/test/lib/text_caches/cache_base_test.rb +0 -31
  130. 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('<html><body><p>' + long_string + '</p></body></html>', supported_langs: %w[en vi])
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&amp;backend=true&amp;currentLang=en&amp;defaultLang=en&amp;urlPattern=query&amp;langCodeAliases={}&amp;langParamName=wovn&amp;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>'
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&amp;backend=true&amp;currentLang=en&amp;defaultLang=en&amp;urlPattern=query&amp;langCodeAliases={}&amp;langParamName=wovn&amp;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><script src="/a"></script><script src="//j.wovn.io/1" async="true"</head></html>')
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&amp;backend=true&amp;currentLang=en&amp;defaultLang=en&amp;urlPattern=query&amp;langCodeAliases={}&amp;langParamName=wovn&amp;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
@@ -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/v0/', store.settings['api_url'])
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
 
@@ -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&amp;backend=true&amp;currentLang=ja&amp;defaultLang=en&amp;urlPattern=subdomain&amp;langCodeAliases={}&amp;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 = true)
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].class == Hash
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 = ['Jeff Sandford', 'Antoine David']
9
- spec.email = ['jeff@wovn.io']
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: 2.5.1
4
+ version: 3.0.3
5
5
  platform: ruby
6
6
  authors:
7
- - Jeff Sandford
8
- - Antoine David
9
- autorequire:
7
+ - Wovn Technologies, Inc.
8
+ autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2021-03-31 00:00:00.000000000 Z
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
- - jeff@wovn.io
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: '0'
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.0.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