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.
Files changed (33) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +13 -3
  3. data/CHANGELOG.md +24 -0
  4. data/Rakefile +4 -0
  5. data/app/controllers/weeler/translations_controller.rb +13 -7
  6. data/app/views/weeler/translations/_translation.html.haml +2 -2
  7. data/app/views/weeler/translations/edit.html.haml +3 -3
  8. data/app/views/weeler/translations/new.html.haml +2 -2
  9. data/app/views/weeler/translations/usage_stats.html.haml +10 -4
  10. data/lib/generators/weeler/templates/migrations/create_weeler_locks.rb +14 -0
  11. data/lib/generators/weeler/templates/migrations/create_weeler_translation_stats.rb +11 -0
  12. data/lib/i18n/backend/weeler.rb +15 -6
  13. data/lib/i18n/backend/weeler/lock.rb +78 -0
  14. data/lib/i18n/backend/weeler/translation_stat.rb +25 -0
  15. data/lib/i18n/backend/weeler/usage_logger.rb +17 -1
  16. data/lib/weeler/action_controller/acts/restful.rb +1 -1
  17. data/lib/weeler/engine.rb +1 -1
  18. data/lib/weeler/version.rb +2 -2
  19. data/spec/.gitignore +21 -0
  20. data/spec/dummy/config/database.yml +2 -24
  21. data/spec/dummy/db/migrate/20160330161101_create_weeler_locks.rb +14 -0
  22. data/spec/dummy/db/migrate/20160330192005_create_weeler_translation_stats.rb +11 -0
  23. data/spec/dummy/db/schema.rb +31 -11
  24. data/spec/dummy/log/development.log +780 -0
  25. data/spec/spec_helper.rb +1 -1
  26. data/spec/weeler/action_controller/acts/restful_spec.rb +1 -1
  27. data/spec/weeler/i18n/backend/weeler/lock_spec.rb +89 -0
  28. data/spec/weeler/i18n/backend/weeler/usage_logger_spec.rb +34 -0
  29. data/spec/weeler/i18n/backend/weeler_spec.rb +22 -0
  30. data/weeler.gemspec +2 -2
  31. metadata +18 -8
  32. data/spec/dummy/db/development.sqlite3 +0 -0
  33. data/spec/dummy/db/test.sqlite3 +0 -0
@@ -36,7 +36,7 @@ RSpec.configure do |config|
36
36
 
37
37
  # FactoryGirl
38
38
  config.include FactoryGirl::Syntax::Methods
39
-
39
+
40
40
  Capybara.javascript_driver = :webkit
41
41
 
42
42
  # disable empty translation creation
@@ -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 permiting {\"title\"=>\"Foo lala\", \"body\"=>\"Heila\"} params, add 'permit_params: [:title, :body]' option to 'acts_as_restful'\n"
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
@@ -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-jdbcsqlite3-adapter'
43
+ spec.add_development_dependency 'activerecord-jdbcpostgresql-adapter'
44
44
  else
45
- spec.add_development_dependency 'sqlite3'
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.0
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-02-02 00:00:00.000000000 Z
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: sqlite3
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.4.5
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
Binary file