weeler 1.4.0 → 1.5.1
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/.travis.yml +13 -3
- data/CHANGELOG.md +24 -0
- data/Rakefile +4 -0
- data/app/controllers/weeler/translations_controller.rb +13 -7
- data/app/views/weeler/translations/_translation.html.haml +2 -2
- data/app/views/weeler/translations/edit.html.haml +3 -3
- data/app/views/weeler/translations/new.html.haml +2 -2
- data/app/views/weeler/translations/usage_stats.html.haml +10 -4
- data/lib/generators/weeler/templates/migrations/create_weeler_locks.rb +14 -0
- data/lib/generators/weeler/templates/migrations/create_weeler_translation_stats.rb +11 -0
- data/lib/i18n/backend/weeler.rb +15 -6
- data/lib/i18n/backend/weeler/lock.rb +78 -0
- data/lib/i18n/backend/weeler/translation_stat.rb +25 -0
- data/lib/i18n/backend/weeler/usage_logger.rb +17 -1
- data/lib/weeler/action_controller/acts/restful.rb +1 -1
- data/lib/weeler/engine.rb +1 -1
- data/lib/weeler/version.rb +2 -2
- data/spec/.gitignore +21 -0
- data/spec/dummy/config/database.yml +2 -24
- data/spec/dummy/db/migrate/20160330161101_create_weeler_locks.rb +14 -0
- data/spec/dummy/db/migrate/20160330192005_create_weeler_translation_stats.rb +11 -0
- data/spec/dummy/db/schema.rb +31 -11
- data/spec/dummy/log/development.log +780 -0
- data/spec/spec_helper.rb +1 -1
- data/spec/weeler/action_controller/acts/restful_spec.rb +1 -1
- data/spec/weeler/i18n/backend/weeler/lock_spec.rb +89 -0
- data/spec/weeler/i18n/backend/weeler/usage_logger_spec.rb +34 -0
- data/spec/weeler/i18n/backend/weeler_spec.rb +22 -0
- data/weeler.gemspec +2 -2
- metadata +18 -8
- data/spec/dummy/db/development.sqlite3 +0 -0
- data/spec/dummy/db/test.sqlite3 +0 -0
data/spec/spec_helper.rb
CHANGED
@@ -127,7 +127,7 @@ describe Weeler::ActionController::Acts::Restful, type: :controller do
|
|
127
127
|
end
|
128
128
|
|
129
129
|
it "warns developer" do
|
130
|
-
warning_message = "[UNPERMITED PARAMS] To
|
130
|
+
warning_message = "[UNPERMITED PARAMS] To permit {\"title\"=>\"Foo lala\", \"body\"=>\"Heila\"} params, add 'permit_params: [:title, :body]' option to 'acts_as_restful'\n"
|
131
131
|
expect { post("create", post: attributes_for(:dummy_post, title: "Foo lala", body: "Heila")) }.to output(warning_message).to_stderr
|
132
132
|
end
|
133
133
|
end
|
@@ -0,0 +1,89 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
describe I18n::Backend::Weeler::Lock do
|
4
|
+
|
5
|
+
before :each do
|
6
|
+
I18n::Backend::Weeler::Lock.destroy_all
|
7
|
+
@reader, @writer = IO.pipe
|
8
|
+
end
|
9
|
+
|
10
|
+
def fork_with_new_connection
|
11
|
+
config = ActiveRecord::Base.remove_connection
|
12
|
+
fork do
|
13
|
+
begin
|
14
|
+
ActiveRecord::Base.establish_connection(config)
|
15
|
+
yield
|
16
|
+
ensure
|
17
|
+
ActiveRecord::Base.remove_connection
|
18
|
+
Process.exit!
|
19
|
+
end
|
20
|
+
end
|
21
|
+
ActiveRecord::Base.establish_connection(config)
|
22
|
+
end
|
23
|
+
|
24
|
+
it 'should synchronize processes on the same lock' do
|
25
|
+
(1..20).each do |i|
|
26
|
+
fork_with_new_connection do
|
27
|
+
@reader.close
|
28
|
+
ActiveRecord::Base.connection.reconnect!
|
29
|
+
I18n::Backend::Weeler::Lock.acquire('lock') do
|
30
|
+
@writer.puts "Started: #{i}"
|
31
|
+
sleep 0.01
|
32
|
+
@writer.puts "Finished: #{i}"
|
33
|
+
end
|
34
|
+
@writer.close
|
35
|
+
end
|
36
|
+
end
|
37
|
+
@writer.close
|
38
|
+
|
39
|
+
# test whether we always get alternating "Started" / "Finished" lines
|
40
|
+
lines = []
|
41
|
+
@reader.each_line { |line| lines << line }
|
42
|
+
|
43
|
+
expect(lines.present?).to eq(true) # it is empty if the processes all crashed due to a typo or similar
|
44
|
+
lines.each_slice(2) do |start, finish|
|
45
|
+
expect(start).to match(/Started: (.*)/)
|
46
|
+
expect(finish).to match(/Finished: (.*)/)
|
47
|
+
expect(/Started: (.*)/.match(start)[1]).to eq(/Finished: (.*)/.match(finish)[1])
|
48
|
+
end
|
49
|
+
|
50
|
+
@reader.close
|
51
|
+
end
|
52
|
+
|
53
|
+
# Fixing / faking coverage
|
54
|
+
# Simplecov doesn't play well with fork.
|
55
|
+
# Tried adding
|
56
|
+
# pid = Process.pid
|
57
|
+
# SimpleCov.at_exit do
|
58
|
+
# SimpleCov.result.format! if Process.pid == pid
|
59
|
+
# end
|
60
|
+
# but that didn't help.
|
61
|
+
it 'fake' do
|
62
|
+
(1..20).each do |i|
|
63
|
+
# fork do
|
64
|
+
# @reader.close
|
65
|
+
# ActiveRecord::Base.connection.reconnect!
|
66
|
+
I18n::Backend::Weeler::Lock.acquire('lock') do
|
67
|
+
@writer.puts "Started: #{i}"
|
68
|
+
sleep 0.01
|
69
|
+
@writer.puts "Finished: #{i}"
|
70
|
+
end
|
71
|
+
# @writer.close
|
72
|
+
# end
|
73
|
+
end
|
74
|
+
@writer.close
|
75
|
+
|
76
|
+
# test whether we always get alternating "Started" / "Finished" lines
|
77
|
+
lines = []
|
78
|
+
@reader.each_line { |line| lines << line }
|
79
|
+
|
80
|
+
expect(lines.present?).to eq(true) # it is empty if the processes all crashed due to a typo or similar
|
81
|
+
lines.each_slice(2) do |start, finish|
|
82
|
+
expect(start).to match(/Started: (.*)/)
|
83
|
+
expect(finish).to match(/Finished: (.*)/)
|
84
|
+
expect(/Started: (.*)/.match(start)[1]).to eq(/Finished: (.*)/.match(finish)[1])
|
85
|
+
end
|
86
|
+
|
87
|
+
@reader.close
|
88
|
+
end
|
89
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
describe I18n::Backend::Weeler::UsageLogger do
|
4
|
+
before(:each) do
|
5
|
+
Settings.log_key_usage = 'true'
|
6
|
+
@backend_cache = I18n.backend.backends[0].i18n_cache
|
7
|
+
end
|
8
|
+
|
9
|
+
describe "1. #log_key_usage" do
|
10
|
+
|
11
|
+
it "logs key to cache store" do
|
12
|
+
I18n.t('random.key.count')
|
13
|
+
expect(@backend_cache.read([:usage_stats, [I18n.locale, 'random.key.count']])).to eq(1)
|
14
|
+
I18n.t('random.key.count')
|
15
|
+
expect(@backend_cache.read([:usage_stats, [I18n.locale, 'random.key.count']])).to eq(2)
|
16
|
+
I18n.t('random.key.count')
|
17
|
+
expect(@backend_cache.read([:usage_stats, [I18n.locale, 'random.key.count']])).to eq(3)
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
21
|
+
|
22
|
+
describe "2. #dump_key_usage" do
|
23
|
+
|
24
|
+
it "dumps stats to database" do
|
25
|
+
I18n.t('random.key_dump')
|
26
|
+
I18n.t('random.key_dump')
|
27
|
+
I18n.t('random.key_dump')
|
28
|
+
Settings.log_key_usage = 'dump'
|
29
|
+
I18n.t('random.key_dump')
|
30
|
+
expect(I18n::Backend::Weeler::TranslationStat.find_by(key: 'random.key_dump').try(:usage_count)).to eq(3)
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
end
|
@@ -287,6 +287,28 @@ describe I18n::Backend::Weeler do
|
|
287
287
|
|
288
288
|
end
|
289
289
|
|
290
|
+
context "usage logging" do
|
291
|
+
|
292
|
+
it "translation stores all translation in each locale" do
|
293
|
+
Settings.log_key_usage = 'true'
|
294
|
+
expect(I18n.backend.backends[0]).to receive(:log_key_usage)
|
295
|
+
I18n.t("random.key")
|
296
|
+
end
|
297
|
+
|
298
|
+
it "doesn't log keys" do
|
299
|
+
Settings.log_key_usage = 'false'
|
300
|
+
expect(I18n.backend.backends[0]).not_to receive(:log_key_usage)
|
301
|
+
I18n.t("random.key")
|
302
|
+
end
|
303
|
+
|
304
|
+
it "dumps logged keys to database" do
|
305
|
+
Settings.log_key_usage = 'dump'
|
306
|
+
expect(I18n.backend.backends[0]).to receive(:dump_key_usage)
|
307
|
+
I18n.t("random.key")
|
308
|
+
end
|
309
|
+
|
310
|
+
end
|
311
|
+
|
290
312
|
end
|
291
313
|
|
292
314
|
end
|
data/weeler.gemspec
CHANGED
@@ -40,9 +40,9 @@ Gem::Specification.new do |spec|
|
|
40
40
|
spec.add_development_dependency 'capybara'
|
41
41
|
spec.add_development_dependency 'factory_girl_rails'
|
42
42
|
if RUBY_PLATFORM == 'java'
|
43
|
-
spec.add_development_dependency 'activerecord-
|
43
|
+
spec.add_development_dependency 'activerecord-jdbcpostgresql-adapter'
|
44
44
|
else
|
45
|
-
spec.add_development_dependency '
|
45
|
+
spec.add_development_dependency 'pg'
|
46
46
|
end
|
47
47
|
spec.add_development_dependency 'database_cleaner'
|
48
48
|
spec.add_development_dependency 'shoulda-matchers'
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: weeler
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.5.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Artūrs Braučs
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2016-
|
12
|
+
date: 2016-03-31 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rails
|
@@ -264,7 +264,7 @@ dependencies:
|
|
264
264
|
- !ruby/object:Gem::Version
|
265
265
|
version: '0'
|
266
266
|
- !ruby/object:Gem::Dependency
|
267
|
-
name:
|
267
|
+
name: pg
|
268
268
|
requirement: !ruby/object:Gem::Requirement
|
269
269
|
requirements:
|
270
270
|
- - ">="
|
@@ -421,8 +421,10 @@ files:
|
|
421
421
|
- lib/generators/weeler/templates/assets/stylesheets/weeler/app/index.css
|
422
422
|
- lib/generators/weeler/templates/controllers/weeler/application_controller.rb
|
423
423
|
- lib/generators/weeler/templates/initializers/weeler.rb
|
424
|
+
- lib/generators/weeler/templates/migrations/create_weeler_locks.rb
|
424
425
|
- lib/generators/weeler/templates/migrations/create_weeler_seos.rb
|
425
426
|
- lib/generators/weeler/templates/migrations/create_weeler_settings.rb
|
427
|
+
- lib/generators/weeler/templates/migrations/create_weeler_translation_stats.rb
|
426
428
|
- lib/generators/weeler/templates/migrations/create_weeler_translations.rb
|
427
429
|
- lib/generators/weeler/templates/migrations/translate_weeler_seos.rb
|
428
430
|
- lib/generators/weeler/templates/views/weeler/.keep
|
@@ -433,7 +435,9 @@ files:
|
|
433
435
|
- lib/i18n/backend/weeler/exporter.rb
|
434
436
|
- lib/i18n/backend/weeler/html_checker.rb
|
435
437
|
- lib/i18n/backend/weeler/importer.rb
|
438
|
+
- lib/i18n/backend/weeler/lock.rb
|
436
439
|
- lib/i18n/backend/weeler/translation.rb
|
440
|
+
- lib/i18n/backend/weeler/translation_stat.rb
|
437
441
|
- lib/i18n/backend/weeler/usage_logger.rb
|
438
442
|
- lib/i18n/humanize_missing_translations.rb
|
439
443
|
- lib/i18n/weeler.rb
|
@@ -449,6 +453,7 @@ files:
|
|
449
453
|
- lib/weeler/engine.rb
|
450
454
|
- lib/weeler/version.rb
|
451
455
|
- spec/.DS_Store
|
456
|
+
- spec/.gitignore
|
452
457
|
- spec/controllers/translations_controller_spec.rb
|
453
458
|
- spec/dummy/README.rdoc
|
454
459
|
- spec/dummy/Rakefile
|
@@ -486,15 +491,15 @@ files:
|
|
486
491
|
- spec/dummy/config/initializers/wrap_parameters.rb
|
487
492
|
- spec/dummy/config/locales/en.yml
|
488
493
|
- spec/dummy/config/routes.rb
|
489
|
-
- spec/dummy/db/development.sqlite3
|
490
494
|
- spec/dummy/db/migrate/20140123083704_create_weeler_seos.rb
|
491
495
|
- spec/dummy/db/migrate/20140123083705_create_weeler_settings.rb
|
492
496
|
- spec/dummy/db/migrate/20140123083706_create_weeler_translations.rb
|
493
497
|
- spec/dummy/db/migrate/20140123083707_translate_weeler_seos.rb
|
494
498
|
- spec/dummy/db/migrate/20140718103237_create_posts.rb
|
495
499
|
- spec/dummy/db/migrate/20140726151210_create_translations.rb
|
500
|
+
- spec/dummy/db/migrate/20160330161101_create_weeler_locks.rb
|
501
|
+
- spec/dummy/db/migrate/20160330192005_create_weeler_translation_stats.rb
|
496
502
|
- spec/dummy/db/schema.rb
|
497
|
-
- spec/dummy/db/test.sqlite3
|
498
503
|
- spec/dummy/lib/assets/.keep
|
499
504
|
- spec/dummy/log/.keep
|
500
505
|
- spec/dummy/log/development.log
|
@@ -519,6 +524,8 @@ files:
|
|
519
524
|
- spec/weeler/i18n/backend/weeler/dedupe_spec.rb
|
520
525
|
- spec/weeler/i18n/backend/weeler/exporter_spec.rb
|
521
526
|
- spec/weeler/i18n/backend/weeler/importer_spec.rb
|
527
|
+
- spec/weeler/i18n/backend/weeler/lock_spec.rb
|
528
|
+
- spec/weeler/i18n/backend/weeler/usage_logger_spec.rb
|
522
529
|
- spec/weeler/i18n/backend/weeler_spec.rb
|
523
530
|
- spec/weeler/i18n/humanize_missing_translations_spec.rb
|
524
531
|
- weeler.gemspec
|
@@ -542,12 +549,13 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
542
549
|
version: '0'
|
543
550
|
requirements: []
|
544
551
|
rubyforge_project:
|
545
|
-
rubygems_version: 2.
|
552
|
+
rubygems_version: 2.6.2
|
546
553
|
signing_key:
|
547
554
|
specification_version: 4
|
548
555
|
summary: CMS for weby.lv projects.
|
549
556
|
test_files:
|
550
557
|
- spec/.DS_Store
|
558
|
+
- spec/.gitignore
|
551
559
|
- spec/controllers/translations_controller_spec.rb
|
552
560
|
- spec/dummy/README.rdoc
|
553
561
|
- spec/dummy/Rakefile
|
@@ -585,15 +593,15 @@ test_files:
|
|
585
593
|
- spec/dummy/config/initializers/wrap_parameters.rb
|
586
594
|
- spec/dummy/config/locales/en.yml
|
587
595
|
- spec/dummy/config/routes.rb
|
588
|
-
- spec/dummy/db/development.sqlite3
|
589
596
|
- spec/dummy/db/migrate/20140123083704_create_weeler_seos.rb
|
590
597
|
- spec/dummy/db/migrate/20140123083705_create_weeler_settings.rb
|
591
598
|
- spec/dummy/db/migrate/20140123083706_create_weeler_translations.rb
|
592
599
|
- spec/dummy/db/migrate/20140123083707_translate_weeler_seos.rb
|
593
600
|
- spec/dummy/db/migrate/20140718103237_create_posts.rb
|
594
601
|
- spec/dummy/db/migrate/20140726151210_create_translations.rb
|
602
|
+
- spec/dummy/db/migrate/20160330161101_create_weeler_locks.rb
|
603
|
+
- spec/dummy/db/migrate/20160330192005_create_weeler_translation_stats.rb
|
595
604
|
- spec/dummy/db/schema.rb
|
596
|
-
- spec/dummy/db/test.sqlite3
|
597
605
|
- spec/dummy/lib/assets/.keep
|
598
606
|
- spec/dummy/log/.keep
|
599
607
|
- spec/dummy/log/development.log
|
@@ -618,5 +626,7 @@ test_files:
|
|
618
626
|
- spec/weeler/i18n/backend/weeler/dedupe_spec.rb
|
619
627
|
- spec/weeler/i18n/backend/weeler/exporter_spec.rb
|
620
628
|
- spec/weeler/i18n/backend/weeler/importer_spec.rb
|
629
|
+
- spec/weeler/i18n/backend/weeler/lock_spec.rb
|
630
|
+
- spec/weeler/i18n/backend/weeler/usage_logger_spec.rb
|
621
631
|
- spec/weeler/i18n/backend/weeler_spec.rb
|
622
632
|
- spec/weeler/i18n/humanize_missing_translations_spec.rb
|
File without changes
|
data/spec/dummy/db/test.sqlite3
DELETED
Binary file
|