Skip to content

Commit f3e8ccb

Browse files
committed
Merge branch 'rails_6_i18n_1.6_compat'
2 parents 2182c6e + cf107e1 commit f3e8ccb

33 files changed

+616
-1020
lines changed

.ruby-version

+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
2.5.3
1+
2.5.8

.travis.yml

+3-5
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,11 @@
11
language: ruby
22
rvm:
3-
- 2.3.8
4-
- 2.4.5
5-
- 2.5.3
3+
- 2.5.8
4+
- 2.6.6
65
gemfile:
7-
- gemfiles/rails_4.2.gemfile
8-
- gemfiles/rails_5.0.gemfile
96
- gemfiles/rails_5.1.gemfile
107
- gemfiles/rails_5.2.gemfile
8+
- gemfiles/rails_6.0.gemfile
119
services:
1210
- postgresql
1311
- redis-server

Appraisals

+10-29
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,6 @@
1-
appraise 'rails-4.2' do
2-
source 'https://rubygems.org'
3-
gem 'rails', '~> 4.2.0'
4-
gem 'devise'
5-
gem 'pg', '~> 0.18.4'
6-
gem 'redis'
7-
gem 'capybara'
8-
gem 'database_cleaner'
9-
gem 'test_declarative'
10-
gem 'mocha'
11-
gem 'webmock'
12-
gem 'sass-rails'
13-
gem 'jquery-rails'
14-
gem 'coffee-rails'
15-
gem 'pry-rails'
16-
gem 'test_after_commit'
17-
end
18-
19-
appraise 'rails-5.0' do
1+
appraise 'rails-5.1' do
202
source 'https://rubygems.org'
21-
gem 'rails', '~> 5.0.0'
3+
gem 'rails', '~> 5.1.0'
224
gem 'devise'
235
gem 'pg', '~> 0.21.0'
246
gem 'redis'
@@ -32,14 +14,14 @@ appraise 'rails-5.0' do
3214
gem 'coffee-rails'
3315
gem 'pry-rails'
3416
gem 'rails-controller-testing'
35-
gem 'minitest', '~> 5.10'
17+
gem 'minitest'
3618
end
3719

38-
appraise 'rails-5.1' do
20+
appraise 'rails-5.2' do
3921
source 'https://rubygems.org'
40-
gem 'rails', '~> 5.1.0'
22+
gem 'rails', '~> 5.2.0'
4123
gem 'devise'
42-
gem 'pg', '~> 0.21.0'
24+
gem 'pg', '~> 1.1.3'
4325
gem 'redis'
4426
gem 'capybara'
4527
gem 'database_cleaner'
@@ -54,11 +36,11 @@ appraise 'rails-5.1' do
5436
gem 'minitest'
5537
end
5638

57-
appraise 'rails-5.2' do
39+
appraise 'rails-6.0' do
5840
source 'https://rubygems.org'
59-
gem 'rails', '~> 5.2.0'
41+
gem 'rails', '~> 6.0.0.beta3'
6042
gem 'devise'
61-
gem 'pg', '~> 1.1.3'
43+
gem 'pg', '~> 1.1.4'
6244
gem 'redis'
6345
gem 'capybara'
6446
gem 'database_cleaner'
@@ -71,5 +53,4 @@ appraise 'rails-5.2' do
7153
gem 'pry-rails'
7254
gem 'rails-controller-testing'
7355
gem 'minitest'
74-
end
75-
56+
end

app/controllers/lit/localizations_controller.rb

+1-1
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ def update
2020
# #after_update_operations. So it'll first set :is_changed to true
2121
# and then it will be properly read in the cache setting routine.
2222
@localization.transaction do
23-
after_update_operations if @localization.update_attributes(clear_params)
23+
after_update_operations if @localization.update(clear_params)
2424
end
2525
respond_to do |f|
2626
f.js

app/controllers/lit/sources_controller.rb

+1-1
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ def create
4040
end
4141

4242
def update
43-
if @source.update_attributes(clear_params)
43+
if @source.update(clear_params)
4444
redirect_to @source, notice: 'Source was successfully updated.'
4545
else
4646
render action: 'edit'

app/helpers/lit/frontend_helper.rb

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ def translate(key, options = {})
99
key = scope_key_by_partial(key)
1010
key = pluralized_key(key, count) if count
1111

12-
content = super(key, options)
12+
content = super(key, options.symbolize_keys)
1313
if !options[:skip_lit] && lit_authorized?
1414
content = get_translateable_span(key, content)
1515
end

app/helpers/lit/localizations_helper.rb

+9
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,15 @@ def ejs(val)
99
escape_javascript val.to_s
1010
end
1111

12+
def locale_flag locale
13+
locale = locale.to_s.upcase[0,2]
14+
locale = case locale
15+
when 'EN' then 'GB'
16+
else locale
17+
end
18+
locale.tr('A-Z', "\u{1F1E6}-\u{1F1FF}")
19+
end
20+
1221
def allow_wysiwyg_editor?(key)
1322
Lit.all_translations_are_html_safe || key.to_s =~ /(\b|_|\.)html$/
1423
end

app/models/lit/base.rb

+33-17
Original file line numberDiff line numberDiff line change
@@ -1,38 +1,54 @@
11
class Lit::Base < ActiveRecord::Base
22
self.abstract_class = true
33

4-
before_save :mark_for_retry_on_create, on: :create
5-
before_save :mark_for_retry_on_update, on: :update
4+
before_save :mark_for_retry
65

76
attr_accessor :retried_created, :retried_updated
87

9-
def mark_for_retry_on_create
8+
def mark_for_retry
109
@will_retry_create = true
1110
end
1211

13-
def mark_for_retry_on_update
14-
@will_retry_update = true
12+
after_rollback :retry_lit_model_save
13+
14+
def rolledback_after_insert?
15+
persisted? && @was_saved_with_insert && @was_rolled_back
1516
end
1617

17-
after_rollback :retry_lit_model_save
18+
def rolledback_after_update?
19+
persisted? && @was_saved_with_update && @was_rolled_back
20+
end
1821

1922
private
2023

21-
def retry_lit_model_save
22-
retry_on_create if instance_variable_defined?(:@will_retry_create) && @will_retry_create
23-
retry_on_update if instance_variable_defined?(:@will_retry_update) && @will_retry_update
24+
def create_or_update(*args, &block)
25+
@was_saved_with_insert = true if new_record?
26+
@was_saved_with_update = true if persisted?
27+
28+
super
2429
end
2530

26-
def retry_on_create
27-
return if self.retried_created
28-
self.retried_created = true
29-
self.class.create! attributes.merge(retried_created: true)
31+
def retry_lit_model_save
32+
return if @was_rolled_back
33+
@was_rolled_back = true
34+
do_retry if instance_variable_defined?(:@will_retry_create) && @will_retry_create
3035
end
3136

32-
def retry_on_update
33-
return if self.retried_updated
34-
self.retried_updated = true
35-
update! attributes.merge(retried_updated: true)
37+
def do_retry
38+
if !retried_created
39+
self.retried_created = true
40+
if rolledback_after_insert?
41+
self.class.create! attributes.merge(retried_created: true)
42+
end
43+
elsif !retried_updated
44+
# Why elsif and not just if? Because if a record object was first saved
45+
# with INSERT and then with UPDATE (still being the same Ruby object),
46+
# it makes no sense to retry both create and upadte. Let's only retry create.
47+
self.retried_updated = true
48+
if rolledback_after_update?
49+
update_columns(attributes)
50+
end
51+
end
3652
end
3753

3854
end

app/models/lit/incomming_localization.rb

+2-2
Original file line numberDiff line numberDiff line change
@@ -59,14 +59,14 @@ def localization_has_changed?
5959
end
6060

6161
def update_existing_localization_data
62-
localization.update_attributes!(
62+
localization.update!(
6363
translated_value: translated_value,
6464
is_changed: true
6565
)
6666
end
6767

6868
def update_existing_localization_key_data
69-
localization_key.update_attributes!(
69+
localization_key.update!(
7070
is_deleted: localization_key_is_deleted
7171
)
7272
end

gemfiles/rails_4.2.gemfile

-20
This file was deleted.

0 commit comments

Comments
 (0)