wovnrb 2.6.0 → 3.1.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/.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/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/config.ru +5 -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/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 +8 -8
- data/lib/wovnrb/store.rb +8 -14
- data/lib/wovnrb/version.rb +1 -1
- data/lib/wovnrb.rb +1 -3
- 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 +14 -14
- data/test/lib/store_test.rb +8 -6
- data/test/lib/wovnrb_test.rb +16 -16
- data/wovnrb.gemspec +5 -4
- metadata +117 -16
- 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
@@ -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
|
@@ -1,31 +0,0 @@
|
|
1
|
-
require 'wovnrb/text_caches/cache_base'
|
2
|
-
require 'minitest/autorun'
|
3
|
-
|
4
|
-
class CacheBaseTest < Minitest::Test
|
5
|
-
def setup
|
6
|
-
Wovnrb::CacheBase.reset_cache
|
7
|
-
end
|
8
|
-
|
9
|
-
def test_build
|
10
|
-
cache = Wovnrb::CacheBase.build({})
|
11
|
-
assert_equal('Wovnrb::MemoryCache', cache.class.name)
|
12
|
-
end
|
13
|
-
|
14
|
-
def test_build_with_invalid_strategy
|
15
|
-
assert_raises RuntimeError do
|
16
|
-
Wovnrb::CacheBase.build(strategy: :invalid)
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
|
-
def test_set_and_get_single
|
21
|
-
Wovnrb::CacheBase.set_single({})
|
22
|
-
cache = Wovnrb::CacheBase.get_single
|
23
|
-
assert_equal('Wovnrb::MemoryCache', cache.class.name)
|
24
|
-
end
|
25
|
-
|
26
|
-
def test_get_single_without_set
|
27
|
-
assert_raises RuntimeError do
|
28
|
-
Wovnrb::CacheBase.get_single
|
29
|
-
end
|
30
|
-
end
|
31
|
-
end
|
@@ -1,91 +0,0 @@
|
|
1
|
-
require 'wovnrb/text_caches/cache_base'
|
2
|
-
require 'wovnrb/text_caches/memory_cache'
|
3
|
-
require 'minitest/autorun'
|
4
|
-
require 'timecop'
|
5
|
-
|
6
|
-
class MemoryCacheTest < Minitest::Test
|
7
|
-
def test_initialize
|
8
|
-
memory = Wovnrb::MemoryCache.new(
|
9
|
-
'cache_megabytes' => 1,
|
10
|
-
'ttl_seconds' => 1
|
11
|
-
)
|
12
|
-
option = memory.options
|
13
|
-
assert_equal(1.megabytes, option[:size])
|
14
|
-
assert_equal(1.megabytes, option[:size])
|
15
|
-
assert_equal(1.seconds, option[:expires_in])
|
16
|
-
end
|
17
|
-
|
18
|
-
def test_initialize_without_cache_megabytes
|
19
|
-
memory = Wovnrb::MemoryCache.new(
|
20
|
-
'ttl_seconds' => 1
|
21
|
-
)
|
22
|
-
option = memory.options
|
23
|
-
assert_equal(200.megabytes, option[:size])
|
24
|
-
assert_equal(1.seconds, option[:expires_in])
|
25
|
-
end
|
26
|
-
|
27
|
-
def test_initialize_without_ttl
|
28
|
-
memory = Wovnrb::MemoryCache.new(
|
29
|
-
'cache_megabytes' => 1
|
30
|
-
)
|
31
|
-
option = memory.options
|
32
|
-
assert_equal(1.megabytes, option[:size])
|
33
|
-
assert_equal(300.seconds, option[:expires_in])
|
34
|
-
end
|
35
|
-
|
36
|
-
def test_initialize_with_no_config
|
37
|
-
memory = Wovnrb::MemoryCache.new({})
|
38
|
-
option = memory.options
|
39
|
-
assert_equal(200.megabytes, option[:size])
|
40
|
-
assert_equal(300.seconds, option[:expires_in])
|
41
|
-
end
|
42
|
-
|
43
|
-
def test_put_without_cache
|
44
|
-
memory = Wovnrb::MemoryCache.new({})
|
45
|
-
memory.put('a', 'b')
|
46
|
-
assert_equal('b', memory.get('a'))
|
47
|
-
end
|
48
|
-
|
49
|
-
def test_put_with_cache
|
50
|
-
memory = Wovnrb::MemoryCache.new({})
|
51
|
-
memory.put('a', 'b')
|
52
|
-
memory.put('a', 'b2')
|
53
|
-
assert_equal('b2', memory.get('a'))
|
54
|
-
end
|
55
|
-
|
56
|
-
def test_get_with_cache
|
57
|
-
memory = Wovnrb::MemoryCache.new({})
|
58
|
-
memory.put('a', 'b')
|
59
|
-
assert_equal('b', memory.get('a'))
|
60
|
-
end
|
61
|
-
|
62
|
-
def test_get_without_cache
|
63
|
-
memory = Wovnrb::MemoryCache.new({})
|
64
|
-
assert_nil(memory.get('a'))
|
65
|
-
|
66
|
-
end
|
67
|
-
|
68
|
-
def test_get_with_timeout
|
69
|
-
memory = Wovnrb::MemoryCache.new({})
|
70
|
-
memory.put('a', 'b')
|
71
|
-
Timecop.travel(1.day.since)
|
72
|
-
assert_nil(memory.get('a'))
|
73
|
-
end
|
74
|
-
|
75
|
-
def test_get_with_over_memory
|
76
|
-
# ActiveSupport::Cache::MemoryStore has 240 bytes overhead per instance
|
77
|
-
memory = Wovnrb::MemoryCache.new(
|
78
|
-
'cache_megabytes' => 400.0 / 1000 / 1000
|
79
|
-
)
|
80
|
-
memory.put('a', 'c')
|
81
|
-
memory.put('b', 'd')
|
82
|
-
assert_nil(memory.get('a'))
|
83
|
-
assert_equal('d', memory.get('b'))
|
84
|
-
end
|
85
|
-
|
86
|
-
def test_get_with_utf8
|
87
|
-
memory = Wovnrb::MemoryCache.new({})
|
88
|
-
memory.put('http://www.example.com', 'あいうえお')
|
89
|
-
assert_equal('あいうえお', memory.get('http://www.example.com'))
|
90
|
-
end
|
91
|
-
end
|