human_attribute_values 1.0.1 → 1.1.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (64) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGELOG.md +18 -0
  3. data/README.md +5 -5
  4. data/lib/human_attribute_values/human_attribute_value.rb +14 -12
  5. data/lib/human_attribute_values/version.rb +3 -1
  6. data/lib/human_attribute_values.rb +2 -0
  7. data/test/active_model_test.rb +62 -0
  8. data/test/{human_attribute_values_test.rb → active_record_test.rb} +14 -14
  9. data/test/dummy/Rakefile +3 -1
  10. data/test/dummy/app/controllers/application_controller.rb +2 -0
  11. data/test/dummy/app/helpers/application_helper.rb +2 -0
  12. data/test/dummy/app/models/active_model_child.rb +4 -0
  13. data/test/dummy/app/models/active_model_grand_child.rb +4 -0
  14. data/test/dummy/app/models/active_model_model.rb +7 -0
  15. data/test/dummy/app/models/active_model_parent.rb +7 -0
  16. data/test/dummy/app/models/active_model_sibling.rb +4 -0
  17. data/test/dummy/app/models/boolean_model.rb +2 -0
  18. data/test/dummy/app/models/child.rb +2 -0
  19. data/test/dummy/app/models/enum_model.rb +2 -0
  20. data/test/dummy/app/models/grand_child.rb +2 -0
  21. data/test/dummy/app/models/lexicon.rb +3 -1
  22. data/test/dummy/app/models/numeric_model.rb +2 -0
  23. data/test/dummy/app/models/parent.rb +2 -0
  24. data/test/dummy/app/models/sibling.rb +2 -0
  25. data/test/dummy/app/models/the_answer.rb +3 -0
  26. data/test/dummy/config/application.rb +5 -3
  27. data/test/dummy/config/boot.rb +4 -2
  28. data/test/dummy/config/environment.rb +3 -1
  29. data/test/dummy/config/environments/development.rb +2 -0
  30. data/test/dummy/config/environments/production.rb +2 -0
  31. data/test/dummy/config/environments/test.rb +4 -2
  32. data/test/dummy/config/initializers/backtrace_silencers.rb +2 -0
  33. data/test/dummy/config/initializers/filter_parameter_logging.rb +2 -0
  34. data/test/dummy/config/initializers/inflections.rb +2 -0
  35. data/test/dummy/config/initializers/mime_types.rb +2 -0
  36. data/test/dummy/config/initializers/secret_token.rb +2 -0
  37. data/test/dummy/config/initializers/session_store.rb +2 -0
  38. data/test/dummy/config/initializers/wrap_parameters.rb +2 -0
  39. data/test/dummy/config/locales/en.yml +32 -1
  40. data/test/dummy/config/routes.rb +2 -0
  41. data/test/dummy/config.ru +3 -1
  42. data/test/dummy/db/development.sqlite3 +0 -0
  43. data/test/dummy/db/migrate/20150127220502_create_the_answers.rb +5 -1
  44. data/test/dummy/db/migrate/20150131153819_create_parents.rb +4 -1
  45. data/test/dummy/db/migrate/20150131161322_create_boolean_models.rb +4 -1
  46. data/test/dummy/db/migrate/20150131162551_create_numeric_models.rb +4 -1
  47. data/test/dummy/db/migrate/20150131164609_create_lexicons.rb +4 -3
  48. data/test/dummy/db/migrate/20150131170613_create_enum_models.rb +4 -1
  49. data/test/dummy/db/schema.rb +28 -30
  50. data/test/dummy/db/test.sqlite3 +0 -0
  51. data/test/dummy/log/development.log +364 -0
  52. data/test/dummy/log/test.log +4861 -200
  53. data/test/dummy/test/models/boolean_model_test.rb +2 -0
  54. data/test/dummy/test/models/child_test.rb +2 -0
  55. data/test/dummy/test/models/enum_model_test.rb +2 -0
  56. data/test/dummy/test/models/grand_child_test.rb +2 -0
  57. data/test/dummy/test/models/lexicon_test.rb +2 -0
  58. data/test/dummy/test/models/numeric_model_test.rb +2 -0
  59. data/test/dummy/test/models/sibling_test.rb +2 -0
  60. data/test/dummy/test/models/the_answer_test.rb +2 -0
  61. data/test/test_helper.rb +6 -4
  62. metadata +99 -67
  63. data/Rakefile +0 -32
  64. data/lib/tasks/human_attribute_value_tasks.rake +0 -4
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 5b511814d6b8edff159b9e8acd5fb5fcad20013b
4
- data.tar.gz: 5351303a71b054c005b8baa2b594b740374977c1
2
+ SHA256:
3
+ metadata.gz: e82c7256f6c4b632e16bae01cd454324a95573cdd7a95fc14bb3ad415e592094
4
+ data.tar.gz: 667e49801a7d7c3c096e3b6b51ccf47897d503c319c9297926c7e96fb39ee8df
5
5
  SHA512:
6
- metadata.gz: a801ec88c14d57a13e3374d2eba50eed81a05cb1832c2882804f0f3b7f0f1a553f411c332e5d579a910146738ee929ca5a5121c704deb49abf4c8ec22b69d2ed
7
- data.tar.gz: 62568afd93995bed07c524387038b543c1c1d98aca96d235f81fba6dea11207506dc80b6dc9b703c0825e59feac43300bf6980b11c2994be732b63131ae6fc02
6
+ metadata.gz: 8285916ea63486f87af3a94dba83eac908a98c29fcbfe3400810ba5dc1960ef4865f7ecb38299106865e13b422c905f2e908df21d39e1b4a51db4e19442d92a0
7
+ data.tar.gz: 83bccfa4da4094ce37bcad422390d53d9cab425f79c2f03a0aeaa252b7f139af9162f0c7cb27069acacd8a2a6af064ded063a22f91cc41015a7612b778ace56f
data/CHANGELOG.md ADDED
@@ -0,0 +1,18 @@
1
+ # Changelog
2
+ All notable changes to this project will be documented in this file.
3
+
4
+ Please keep to the changelog format described on [keepachangelog.com](http://keepachangelog.com).
5
+
6
+ This project adheres to [Semantic Versioning](http://semver.org/).
7
+
8
+ ## [Unreleased]
9
+
10
+ ### Added
11
+ - Added a changelog.
12
+ - Also include HumanAttributeValues into ActiveModel::Model.
13
+
14
+ ### Changed
15
+ - Instead of aborting and returning '' for associations of ActiveRecord::Base the lookup now proceeds with `assoc_attribute.to_s` as key (not meant to be done anyways).
16
+
17
+ ### Removed
18
+ - Drop support for rails 4.1.8, including HumanAttributeValues into ActiveModel::Model does not add class method.
data/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
  [![Build Status](https://travis-ci.org/RST-J/human_attribute_values.svg?branch=master)](https://travis-ci.org/RST-J/human_attribute_values)
3
3
  [![Gem Version](https://badge.fury.io/rb/human_attribute_values.svg)](http://badge.fury.io/rb/human_attribute_values)
4
4
 
5
- human_attribute_values is a Rails plugin which provides translation for model attribute values using the Rails I18n API (analogously to [human_attribute_name](http://apidock.com/rails/v4.1.8/ActiveModel/Translation/human_attribute_name)).
5
+ human_attribute_values is a Rails plugin which provides translation for model attribute values using the Rails I18n API (analogously to [human_attribute_name](https://apidock.com/rails/v4.2.7/ActiveModel/Translation/human_attribute_name)).
6
6
 
7
7
  ## Installation
8
8
  ```
@@ -10,12 +10,12 @@ gem install human_attribute_values
10
10
  ```
11
11
 
12
12
  ## Supported versions
13
- * Rails: >= 4.1.8
14
- * Ruby: MRI >= 2.0 and Rubinius (JRuby should also work though)
13
+ * Rails: >= 4.2.10
14
+ * Ruby: MRI >= 2.0
15
15
 
16
16
  ## Usage
17
- The gem defines ``human_attribute_value`` on each model, both as instance and as class method.
18
- To translate a value it uses the I18n API. The translations are looked up from the current locale file under the key ``'activerecord.values.model_name.attribute_name.value'`` by default.
17
+ The gem defines ``human_attribute_value`` as instance and class method on ``ActiveRecord::Base`` and ``ActiveModel::Model``.
18
+ To translate a value it uses the I18n API. The translations are looked up from the current locale file under the key ``'activerecord.values.model_name.attribute_name.value'`` respectively ``'activemodel.values.model_name.attribute_name.value'`` by default.
19
19
 
20
20
  Locale:
21
21
  ```yml
@@ -1,25 +1,25 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module HumanAttributeValues
2
4
  extend ActiveSupport::Concern
3
5
 
4
- included {}
5
-
6
6
  def human_attribute_value(attribute, options = {})
7
- value = self.send attribute
7
+ value = public_send(attribute)
8
8
  self.class.human_attribute_value(attribute, value, options)
9
9
  end
10
10
 
11
11
  module ClassMethods
12
12
  def human_attribute_value(attribute, value, options = {})
13
- return '' if value.nil?
14
- # do not translate values of associations
15
- return '' if reflect_on_all_associations.any? { |assoc| assoc.name == attribute.to_sym }
16
- options = { count: 1 }.merge!(options)
17
- parts = attribute.to_s.split(".")
13
+ return '' if value.nil? || value == ''
14
+ options = {count: 1}.merge!(options)
15
+ parts = attribute.to_s.split('.')
18
16
  attribute = parts.pop
19
- namespace = parts.join("/") unless parts.empty?
20
- value_scope = "#{self.i18n_scope}.values"
17
+ namespace = parts.join('/') unless parts.empty?
18
+ value_scope = "#{i18n_scope}.values"
19
+
21
20
  # dots would mean a new nesting level in YAML files
22
- key = value.is_a?(Numeric) ? value.to_s.gsub('.', '_') : value
21
+ key = value.is_a?(Numeric) ? value.to_s.tr('.', '_') : value
22
+
23
23
  if namespace
24
24
  defaults = lookup_ancestors.map do |klass|
25
25
  :"#{value_scope}.#{klass.model_name.i18n_key}/#{namespace}.#{attribute}.#{key}"
@@ -30,14 +30,16 @@ module HumanAttributeValues
30
30
  :"#{value_scope}.#{klass.model_name.i18n_key}.#{attribute}.#{key}"
31
31
  end
32
32
  end
33
+
33
34
  defaults << :"values.#{attribute}.#{key}"
34
35
  defaults << options.delete(:default) if options[:default]
35
36
  defaults << value.to_s
37
+
36
38
  options[:default] = defaults
37
39
  I18n.translate(defaults.shift, options)
38
40
  end
39
41
  end
40
42
  end
41
43
 
42
-
43
44
  ActiveRecord::Base.send :include, HumanAttributeValues
45
+ ActiveModel::Model.send :include, HumanAttributeValues
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module HumanAttributeValues
2
- VERSION = "1.0.1"
4
+ VERSION = "1.1.1"
3
5
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'human_attribute_values/human_attribute_value'
2
4
 
3
5
  module HumanAttributeValues
@@ -0,0 +1,62 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'test_helper'
4
+
5
+ class ActiveModelTest < ActiveSupport::TestCase
6
+ test 'value with count config' do
7
+ instance = ActiveModelModel.new
8
+ instance.string_attr = 'goose'
9
+ assert_equal('one goose', instance.human_attribute_value(:string_attr), 'should use the mapping for count option 1 by default')
10
+ assert_equal('one goose', instance.human_attribute_value(:string_attr, count: 1), 'should use the mapping for count option 1 when explicitly specified')
11
+ assert_equal('some geese', instance.human_attribute_value(:string_attr, count: 2), 'should use the mapping for count other if count is not 1')
12
+ end
13
+
14
+ test 'value without count config' do
15
+ instance = ActiveModelModel.new
16
+ instance.integer_attr = 2
17
+ assert_equal('odd prime', instance.human_attribute_value(:integer_attr), 'should successfully translate without a count option')
18
+ assert_equal('odd prime', instance.human_attribute_value(:integer_attr, count: 1), 'should successfully translate with count option 1')
19
+ assert_equal('odd prime', instance.human_attribute_value(:integer_attr, count: 2), 'should successfully translate with count option 2')
20
+ end
21
+
22
+ test 'hierarchy resolution for STI models' do
23
+ grandchild = ActiveModelGrandChild.new
24
+ grandchild.inherited_attr = :one
25
+ assert_equal('active model grandchild value 1', grandchild.human_attribute_value(:inherited_attr), 'should use value for the actual class if present')
26
+
27
+ grandchild.inherited_attr = :two
28
+ assert_equal('active model child value 2', grandchild.human_attribute_value(:inherited_attr), 'should use value for the direct ancestor if it has a mapping')
29
+
30
+ grandchild.inherited_attr = :three
31
+ assert_equal('active model parent value 3', grandchild.human_attribute_value(:inherited_attr), 'should use value for the first parent class which has a mapping for the value')
32
+
33
+ grandchild.inherited_attr = :four
34
+ assert_equal('four', grandchild.human_attribute_value(:inherited_attr), 'should yield the value if there is no mapping in the type hierarchy')
35
+ end
36
+
37
+ test 'resolution of boolean values' do
38
+ instance = ActiveModelModel.new
39
+ instance.boolean_attr = false
40
+ assert_equal('This is false', instance.human_attribute_value(:boolean_attr), 'should translate boolean false')
41
+
42
+ instance.boolean_attr = true
43
+ assert_equal('true', instance.human_attribute_value(:boolean_attr), 'should return the stringified boolean if there is no mapping')
44
+ end
45
+
46
+ test 'resolution for numeric values' do
47
+ instance = ActiveModelModel.new
48
+ instance.decimal_attr = '2.71'.to_d
49
+ instance.float_attr = 3.14
50
+ instance.integer_attr = 9001
51
+ assert_equal('e', instance.human_attribute_value(:decimal_attr), 'should translate a decimal')
52
+ assert_equal('Pi', instance.human_attribute_value(:float_attr), 'should translate a float')
53
+ assert_equal('over 9000', instance.human_attribute_value(:integer_attr), 'should translate an integer')
54
+
55
+ instance.decimal_attr = '9.99'.to_d
56
+ instance.float_attr = 1.5
57
+ instance.integer_attr = 1001
58
+ assert_equal('9.99', instance.human_attribute_value(:decimal_attr), 'should return the stringified decimal if there is no mapping')
59
+ assert_equal('1.5', instance.human_attribute_value(:float_attr), 'should return the stringified float if there is no mapping')
60
+ assert_equal('1001', instance.human_attribute_value(:integer_attr), 'should return the stringified integer if there is no mapping')
61
+ end
62
+ end
@@ -1,25 +1,23 @@
1
- require 'test_helper'
1
+ # frozen_string_literal: true
2
2
 
3
- class HumanAttributeValuesTest < ActiveSupport::TestCase
4
- test "truth" do
5
- assert_kind_of Module, HumanAttributeValues
6
- end
3
+ require 'test_helper'
7
4
 
8
- test "attribute with count config" do
5
+ class ActiveRecordTest < ActiveSupport::TestCase
6
+ test 'attribute with count config' do
9
7
  answer = TheAnswer.new(ultimate_truth: '42')
10
8
  assert_equal('was calculated by Deep Thought', answer.human_attribute_value(:ultimate_truth), 'should use the mapping for count option 1 by default')
11
9
  assert_equal('was calculated by Deep Thought', answer.human_attribute_value(:ultimate_truth, count: 1), 'should use the mapping for count option 1 when explicitly specified')
12
10
  assert_equal('there is only one ultimate answer', answer.human_attribute_value(:ultimate_truth, count: 2), 'should use the mapping for count other if count is not 1')
13
11
  end
14
12
 
15
- test "attribute without count config" do
13
+ test 'attribute without count config' do
16
14
  answer = TheAnswer.new(ultimate_truth: 'wissen ist Nacht')
17
15
  assert_equal('coined by Prof. Dr. Abdul Nachtigaller', answer.human_attribute_value(:ultimate_truth), 'should successfully translate without a count option')
18
16
  assert_equal('coined by Prof. Dr. Abdul Nachtigaller', answer.human_attribute_value(:ultimate_truth, count: 1), 'should successfully translate with count option 1')
19
17
  assert_equal('coined by Prof. Dr. Abdul Nachtigaller', answer.human_attribute_value(:ultimate_truth, count: 2), 'should successfully translate with count option 2')
20
18
  end
21
19
 
22
- test "hierarchy resolution for STI models" do
20
+ test 'hierarchy resolution for STI models' do
23
21
  grandchild = GrandChild.new(field: '1')
24
22
  assert_equal('grandchild value 1', grandchild.human_attribute_value(:field), 'should use value for the actual class if present')
25
23
 
@@ -33,7 +31,7 @@ class HumanAttributeValuesTest < ActiveSupport::TestCase
33
31
  assert_equal('4', grandchild.human_attribute_value(:field), 'should yield the value if there is no mapping in the type hierarchy')
34
32
  end
35
33
 
36
- test "resolution of boolean values" do
34
+ test 'resolution of boolean values' do
37
35
  boolean_model = BooleanModel.new(boolean_field: true)
38
36
  assert_equal('This is true', boolean_model.human_attribute_value(:boolean_field), 'should translate boolean true')
39
37
 
@@ -41,7 +39,7 @@ class HumanAttributeValuesTest < ActiveSupport::TestCase
41
39
  assert_equal('false', boolean_model.human_attribute_value(:boolean_field), 'should return the stringified boolean if there is no mapping')
42
40
  end
43
41
 
44
- test "resolution for numeric values" do
42
+ test 'resolution for numeric values' do
45
43
  numeric_model = NumericModel.new(integer_field: 1, decimal_field: 1.0)
46
44
  assert_equal('One', numeric_model.human_attribute_value(:integer_field), 'should translate an integer')
47
45
  assert_equal('One point zero', numeric_model.human_attribute_value(:decimal_field), 'should translate a decimal')
@@ -52,12 +50,14 @@ class HumanAttributeValuesTest < ActiveSupport::TestCase
52
50
  assert_equal('2.0', numeric_model.human_attribute_value(:decimal_field), 'should return the stringified decimal if there is no mapping')
53
51
  end
54
52
 
55
- test "resolution for associations" do
56
- lexicon = Lexicon.new(the_answer: TheAnswer.new)
57
- assert_equal('', lexicon.human_attribute_value(:the_answer), 'should return empty string for associations')
53
+ test 'resolution for associations' do
54
+ lexicon = Lexicon.new
55
+ the_answer = TheAnswer.new(lexicon: lexicon)
56
+ assert_equal(lexicon.to_s, the_answer.human_attribute_value(:lexicon), 'should return .to_s for associations 1')
57
+ assert_equal(lexicon.the_answers.to_s, lexicon.human_attribute_value(:the_answers), 'should return .to_s for associations 2')
58
58
  end
59
59
 
60
- test "resolution for enums" do
60
+ test 'resolution for enums' do
61
61
  enum_model = EnumModel.new(status: :dead_and_alive)
62
62
  assert_equal('The box has not been opened yet', enum_model.human_attribute_value(:status), 'should use the enumerated values for lookup')
63
63
 
data/test/dummy/Rakefile CHANGED
@@ -1,6 +1,8 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # Add your own tasks in files placed in lib/tasks ending in .rake,
2
4
  # for example lib/tasks/capistrano.rake, and they will automatically be available to Rake.
3
5
 
4
- require File.expand_path('../config/application', __FILE__)
6
+ require File.expand_path('config/application', __dir__)
5
7
 
6
8
  Dummy::Application.load_tasks
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class ApplicationController < ActionController::Base
2
4
  # Prevent CSRF attacks by raising an exception.
3
5
  # For APIs, you may want to use :null_session instead.
@@ -1,2 +1,4 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module ApplicationHelper
2
4
  end
@@ -0,0 +1,4 @@
1
+ # frozen_string_literal: true
2
+
3
+ class ActiveModelChild < ActiveModelParent
4
+ end
@@ -0,0 +1,4 @@
1
+ # frozen_string_literal: true
2
+
3
+ class ActiveModelGrandChild < ActiveModelChild
4
+ end
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ class ActiveModelModel
4
+ include ActiveModel::Model
5
+
6
+ attr_accessor :boolean_attr, :decimal_attr, :integer_attr, :float_attr, :string_attr
7
+ end
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ class ActiveModelParent
4
+ include ActiveModel::Model
5
+
6
+ attr_accessor :inherited_attr
7
+ end
@@ -0,0 +1,4 @@
1
+ # frozen_string_literal: true
2
+
3
+ class ActiveModelSibling < ActiveModelParent
4
+ end
@@ -1,2 +1,4 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class BooleanModel < ActiveRecord::Base
2
4
  end
@@ -1,2 +1,4 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class Child < Parent
2
4
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class EnumModel < ActiveRecord::Base
2
4
  enum status: {dead_and_alive: 0, alive: 1, dead: 2}
3
5
  end
@@ -1,2 +1,4 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class GrandChild < Child
2
4
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class Lexicon < ActiveRecord::Base
2
- belongs_to :the_answer
4
+ has_many :the_answers
3
5
  end
@@ -1,2 +1,4 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class NumericModel < ActiveRecord::Base
2
4
  end
@@ -1,2 +1,4 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class Parent < ActiveRecord::Base
2
4
  end
@@ -1,2 +1,4 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class Sibling < Parent
2
4
  end
@@ -1,2 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class TheAnswer < ActiveRecord::Base
4
+ belongs_to :lexicon
2
5
  end
@@ -1,9 +1,11 @@
1
- require File.expand_path('../boot', __FILE__)
1
+ # frozen_string_literal: true
2
+
3
+ require File.expand_path('boot', __dir__)
2
4
 
3
5
  require 'rails/all'
4
6
 
5
7
  Bundler.require(*Rails.groups)
6
- require "human_attribute_values"
8
+ require 'human_attribute_values'
7
9
 
8
10
  module Dummy
9
11
  class Application < Rails::Application
@@ -18,6 +20,6 @@ module Dummy
18
20
  # The default locale is :en and all translations from config/locales/*.rb,yml are auto loaded.
19
21
  # config.i18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}').to_s]
20
22
  # config.i18n.default_locale = :de
23
+ config.active_record.sqlite3.represent_boolean_as_integer = true if config.active_record.sqlite3.respond_to?(:represent_boolean_as_integer)
21
24
  end
22
25
  end
23
-
@@ -1,5 +1,7 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # Set up gems listed in the Gemfile.
2
- ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../../../Gemfile', __FILE__)
4
+ ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../../Gemfile', __dir__)
3
5
 
4
6
  require 'bundler/setup' if File.exist?(ENV['BUNDLE_GEMFILE'])
5
- $LOAD_PATH.unshift File.expand_path('../../../../lib', __FILE__)
7
+ $LOAD_PATH.unshift File.expand_path('../../../lib', __dir__)
@@ -1,5 +1,7 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # Load the Rails application.
2
- require File.expand_path('../application', __FILE__)
4
+ require File.expand_path('application', __dir__)
3
5
 
4
6
  # Initialize the Rails application.
5
7
  Dummy::Application.initialize!
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  Dummy::Application.configure do
2
4
  # Settings specified here will take precedence over those in config/application.rb.
3
5
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  Dummy::Application.configure do
2
4
  # Settings specified here will take precedence over those in config/application.rb.
3
5
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  Dummy::Application.configure do
2
4
  # Settings specified here will take precedence over those in config/application.rb.
3
5
 
@@ -13,8 +15,8 @@ Dummy::Application.configure do
13
15
  config.eager_load = false
14
16
 
15
17
  # Configure static asset server for tests with Cache-Control for performance.
16
- config.serve_static_files = true
17
- config.static_cache_control = "public, max-age=3600"
18
+ config.serve_static_files = true
19
+ config.static_cache_control = 'public, max-age=3600'
18
20
 
19
21
  # Show full error reports and disable caching.
20
22
  config.consider_all_requests_local = true
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # Be sure to restart your server when you modify this file.
2
4
 
3
5
  # You can add backtrace silencers for libraries that you're using but don't wish to see in your backtraces.
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # Be sure to restart your server when you modify this file.
2
4
 
3
5
  # Configure sensitive parameters which will be filtered from the log file.
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # Be sure to restart your server when you modify this file.
2
4
 
3
5
  # Add new inflection rules using the following format. Inflections
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # Be sure to restart your server when you modify this file.
2
4
 
3
5
  # Add new mime types for use in respond_to blocks:
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # Be sure to restart your server when you modify this file.
2
4
 
3
5
  # Your secret key is used for verifying the integrity of signed cookies.
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # Be sure to restart your server when you modify this file.
2
4
 
3
5
  Dummy::Application.config.session_store :cookie_store, key: '_dummy_session'
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # Be sure to restart your server when you modify this file.
2
4
 
3
5
  # This file contains settings for ActionController::ParamsWrapper which
@@ -1,5 +1,36 @@
1
1
  en:
2
- activerecord:
2
+ activemodel:
3
+ values:
4
+ active_model_model:
5
+ boolean_attr:
6
+ 'false': 'This is false'
7
+ decimal_attr:
8
+ '2_71': e
9
+ float_attr:
10
+ '3_14': Pi
11
+ integer_attr:
12
+ '2': odd prime
13
+ '9001': 'over 9000'
14
+ string_attr:
15
+ 'goose':
16
+ one: one goose
17
+ other: some geese
18
+ active_model_parent:
19
+ inherited_attr:
20
+ one: 'active model parent value 1'
21
+ two: 'active model parent value 2'
22
+ three: 'active model parent value 3'
23
+ active_model_child:
24
+ inherited_attr:
25
+ one: 'active model child value 1'
26
+ two: 'active model child value 2'
27
+ active_model_sibling:
28
+ inherited_attr:
29
+ four: 'active model sibling value 4'
30
+ active_model_grand_child:
31
+ inherited_attr:
32
+ one: 'active model grandchild value 1'
33
+ activerecord:
3
34
  models:
4
35
  the_answer: The ultimate Answer
5
36
  attributes:
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  Dummy::Application.routes.draw do
2
4
  # The priority is based upon order of creation: first created -> highest priority.
3
5
  # See how all your routes lay out with "rake routes".
data/test/dummy/config.ru CHANGED
@@ -1,4 +1,6 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # This file is used by Rack-based servers to start the application.
2
4
 
3
- require ::File.expand_path('../config/environment', __FILE__)
5
+ require ::File.expand_path('config/environment', __dir__)
4
6
  run Rails.application
Binary file
@@ -1,7 +1,11 @@
1
- class CreateTheAnswers < ActiveRecord::Migration
1
+ superclass = ActiveRecord::Migration
2
+ superclass = ActiveRecord::Migration[5.1] if superclass.respond_to?(:[])
3
+
4
+ class CreateTheAnswers < superclass
2
5
  def change
3
6
  create_table :the_answers do |t|
4
7
  t.string :ultimate_truth
8
+ t.references :lexicon, index: true
5
9
 
6
10
  t.timestamps
7
11
  end
@@ -1,4 +1,7 @@
1
- class CreateParents < ActiveRecord::Migration
1
+ superclass = ActiveRecord::Migration
2
+ superclass = ActiveRecord::Migration[5.1] if superclass.respond_to?(:[])
3
+
4
+ class CreateParents < superclass
2
5
  def change
3
6
  create_table :parents do |t|
4
7
  t.string :type
@@ -1,4 +1,7 @@
1
- class CreateBooleanModels < ActiveRecord::Migration
1
+ superclass = ActiveRecord::Migration
2
+ superclass = ActiveRecord::Migration[5.1] if superclass.respond_to?(:[])
3
+
4
+ class CreateBooleanModels < superclass
2
5
  def change
3
6
  create_table :boolean_models do |t|
4
7
  t.boolean :boolean_field
@@ -1,4 +1,7 @@
1
- class CreateNumericModels < ActiveRecord::Migration
1
+ superclass = ActiveRecord::Migration
2
+ superclass = ActiveRecord::Migration[5.1] if superclass.respond_to?(:[])
3
+
4
+ class CreateNumericModels < superclass
2
5
  def change
3
6
  create_table :numeric_models do |t|
4
7
  t.integer :integer_field
@@ -1,8 +1,9 @@
1
- class CreateLexicons < ActiveRecord::Migration
1
+ superclass = ActiveRecord::Migration
2
+ superclass = ActiveRecord::Migration[5.1] if superclass.respond_to?(:[])
3
+
4
+ class CreateLexicons < superclass
2
5
  def change
3
6
  create_table :lexicons do |t|
4
- t.references :the_answer, index: true
5
-
6
7
  t.timestamps
7
8
  end
8
9
  end
@@ -1,4 +1,7 @@
1
- class CreateEnumModels < ActiveRecord::Migration
1
+ superclass = ActiveRecord::Migration
2
+ superclass = ActiveRecord::Migration[5.1] if superclass.respond_to?(:[])
3
+
4
+ class CreateEnumModels < superclass
2
5
  def change
3
6
  create_table :enum_models do |t|
4
7
  t.integer :status