better_record 0.8.0 → 0.8.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 (53) hide show
  1. checksums.yaml +4 -4
  2. data/app/models/better_record/base.rb +3 -1
  3. data/app/models/better_record/current.rb +2 -0
  4. data/app/models/better_record/logged_action.rb +2 -0
  5. data/app/models/better_record/table_size.rb +2 -0
  6. data/config/initializers/active_record/money_type.rb +2 -0
  7. data/config/initializers/concerns.rb +2 -0
  8. data/config/initializers/core_ext/boolean.rb +2 -0
  9. data/config/initializers/core_ext/date.rb +2 -0
  10. data/config/initializers/core_ext/integer.rb +2 -0
  11. data/config/initializers/core_ext/string.rb +2 -0
  12. data/config/initializers/dkim.rb +2 -0
  13. data/config/initializers/filter_parameter_logging.rb +2 -0
  14. data/config/initializers/inflections.rb +2 -0
  15. data/config/initializers/jazz_fingers.rb +2 -0
  16. data/config/initializers/mime_types.rb +2 -0
  17. data/config/initializers/redis_store.rb +2 -0
  18. data/config/routes.rb +2 -0
  19. data/lib/better_record.rb +0 -1
  20. data/lib/better_record/batches.rb +2 -0
  21. data/lib/better_record/concerns/active_record_extensions/associations_extensions/association_scope_extensions.rb +2 -0
  22. data/lib/better_record/concerns/active_record_extensions/associations_extensions/belongs_to_polymorphic_extensions.rb +2 -0
  23. data/lib/better_record/concerns/active_record_extensions/associations_extensions/builder_extensions/association_extensions.rb +2 -0
  24. data/lib/better_record/concerns/active_record_extensions/attribute_methods/write.rb +44 -0
  25. data/lib/better_record/concerns/active_record_extensions/base_extensions.rb +4 -1
  26. data/lib/better_record/concerns/active_record_extensions/reflection_extensions.rb +2 -0
  27. data/lib/better_record/concerns/controllers/authenticatable.rb +2 -0
  28. data/lib/better_record/concerns/controllers/sessionable.rb +2 -0
  29. data/lib/better_record/concerns/controllers/uploadable.rb +2 -0
  30. data/lib/better_record/encoder.rb +2 -0
  31. data/lib/better_record/engine.rb +2 -0
  32. data/lib/better_record/fake_redis.rb +2 -0
  33. data/lib/better_record/jwt.rb +2 -0
  34. data/lib/better_record/migration.rb +2 -0
  35. data/lib/better_record/polymorphic_override.rb +2 -0
  36. data/lib/better_record/railtie.rb +2 -0
  37. data/lib/better_record/relation.rb +2 -0
  38. data/lib/better_record/rspec/expectations.rb +2 -0
  39. data/lib/better_record/rspec/expectations/write.rb +2 -0
  40. data/lib/better_record/rspec/extensions.rb +2 -0
  41. data/lib/better_record/rspec/extensions/boolean_column.rb +2 -0
  42. data/lib/better_record/rspec/extensions/has_valid_factory.rb +2 -0
  43. data/lib/better_record/rspec/extensions/optional_column.rb +2 -0
  44. data/lib/better_record/rspec/extensions/required_column.rb +2 -0
  45. data/lib/better_record/version.rb +3 -1
  46. data/lib/generators/better_record/eject_rspec_extensions/eject_rspec_extensions_generator.rb +2 -0
  47. data/lib/generators/better_record/setup/setup_generator.rb +2 -0
  48. data/lib/generators/better_record/setup/templates/current.rb +2 -0
  49. data/lib/generators/better_record/setup/templates/initializer.rb +2 -0
  50. data/lib/templates/active_record/model/model.rb +2 -0
  51. data/lib/templates/rspec/model/model_spec.rb +2 -0
  52. metadata +2 -2
  53. data/lib/better_record/nullify_blank_attributes.rb +0 -8
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 15065e4dbf375d7777148aa24e0a36afde1c7db1ddb458c133fb38cac4b8cb7e
4
- data.tar.gz: af39d1a5bf2bfeb0d16feb26bca64f2d6d2ddd0006d63317d764eb163e650c45
3
+ metadata.gz: 7cc7df8cadc6ee7f40396d5d405c281fc3d08ac10182db8fb8725b14cfb947b0
4
+ data.tar.gz: a000455e51c4008ec65661ddc6de35e44b624e72e73a96f2cea03638119877e6
5
5
  SHA512:
6
- metadata.gz: 20f71fc1960ba2478f065cd8d9d67b3c8cc9123e000c7c4648b7e77c5fccc54e54226e131bf63fb42a6096e7476571c6e73c2c7d307ccc625580b412a3d722ee
7
- data.tar.gz: fd5479dce949e8e0cc5934319244dc4abac74a5945f7e29d1faa751afc1bd14400123fcc307051b8879c999be84eb535317820604871bbabbf3661af2aa20226
6
+ metadata.gz: ad4e3ea2a8e85df2c45725f01c673cd0679766c53ac78d622ccd54f26225aa7ea7ec1905f37d059ba737dc5eed44f902a649803315a5a7ca3d0d08caa49984d1
7
+ data.tar.gz: 9e326014afcae6785bc3d17c8313e4551af0669f0d7653bd766fb31835e3b7fcc9e4abe61de4c2604881dc85a38333fb548101cf0282ef0795cf28eb6e810d78
@@ -26,6 +26,8 @@ module BetterRecord
26
26
  # == Class Methods ========================================================
27
27
 
28
28
  # == Instance Methods =====================================================
29
-
29
+ def indifferent_attributes
30
+ attributes.with_indifferent_access
31
+ end
30
32
  end
31
33
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module BetterRecord
2
4
  class Current < ActiveSupport::CurrentAttributes
3
5
  attribute :user, :ip_address
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module BetterRecord
2
4
  class LoggedAction < Base
3
5
  # == Constants ============================================================
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module BetterRecord
2
4
  class TableSize < Base
3
5
  # == Constants ============================================================
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class MoneyType < ActiveRecord::Type::Value
2
4
  def cast(value)
3
5
  return nil unless value
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  Dir.glob(BetterRecord::Engine.root.join('lib', 'better_record', 'concerns', '**', '*.rb')).each do |d|
2
4
  require d
3
5
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class Boolean
2
4
  def self.parse(value)
3
5
  ActiveRecord::Type::Boolean.new.cast(value)
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class Date
2
4
  def month_name
3
5
  Date::MONTHNAMES[month]
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class Integer
2
4
  def self.models
3
5
  @@record_models ||= Hash[*Dir[Rails.root.join('app', 'models', '**.rb')].map do |file|
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class String
2
4
  def self.clean_certificate(str)
3
5
  CGI.unescape(str).gsub(/(\n|-----(BEGIN|END) CERTIFICATE-----)/, '').strip
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  if defined?(Dkim) && ENV['DKIM_PATH'] && File.exists?(ENV['DKIM_PATH'])
2
4
  Dkim::domain = ENV.fetch('DKIM_DOMAIN') { BetterRecord.app_domain_name }
3
5
  Dkim::selector = `hostname`.strip.to_sym
@@ -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
  if defined?(JazzFingers)
2
4
  JazzFingers.configure do |config|
3
5
  config.colored_prompt = 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
  # Add new mime types for use in respond_to blocks:
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  if defined?(Redis) && defined?(Redis::Namespace)
2
4
 
3
5
  begin
data/config/routes.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  BetterRecord::Engine.routes.draw do
2
4
  root to: 'table_sizes#index'
3
5
 
data/lib/better_record.rb CHANGED
@@ -63,7 +63,6 @@ ActiveSupport.on_load(:active_record) do
63
63
  include BetterRecord::Migration
64
64
  end
65
65
  end
66
- include BetterRecord::NullifyBlankAttributes
67
66
  end
68
67
  # !centered[## [Men's Results](/assets/pdfs/2018-golf-international-results-male.pdf)--br--[![Mens Results](/assets/images/2018-golf-international-results-male.jpg)](/assets/pdfs/2018-golf-international-results-male.pdf)]
69
68
  # !centered[## [Women's Results](/assets/pdfs/2018-golf-international-results-female.pdf)--br--[![Womens Results](/assets/images/2018-golf-international-results-female.jpg)](/assets/pdfs/2018-golf-international-results-female.pdf)]
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module BetterRecord
2
4
  module Batches
3
5
  def split_batches(options = {}, &block)
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'active_support/concern'
2
4
  require 'active_record/associations'
3
5
  require 'active_record/associations/association_scope'
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'active_support/concern'
2
4
  require 'active_record/associations'
3
5
  require 'active_record/associations/belongs_to_polymorphic_association'
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'active_support/concern'
2
4
  require 'active_record/associations'
3
5
  require 'active_record/associations/builder/association'
@@ -0,0 +1,44 @@
1
+ # frozen_string_literal: true
2
+
3
+ module BetterRecord
4
+ module AttributeMethods
5
+ module Write
6
+ extend ActiveSupport::Concern
7
+
8
+ def _write_attribute(attr_name, value)
9
+ if should_normalize? attr_name
10
+ super(attr_name, normalize_attribute_value(attr_name, value))
11
+ else
12
+ super(attr_name, value)
13
+ end
14
+ end
15
+
16
+ def normalize_attribute_value(attr_name, value)
17
+ case type_for_attribute(attr_name)
18
+ when ActiveRecord::ConnectionAdapters::PostgreSQL::OID::Array
19
+ [value].flatten.select(&:present?)
20
+ when ActiveRecord::ConnectionAdapters::PostgreSQL::OID::Jsonb
21
+ value.presence || {}
22
+ when ActiveRecord::Type::Boolean
23
+ Boolean.parse(value)
24
+ else
25
+ value.presence
26
+ end
27
+ end
28
+
29
+ def should_normalize?(attr_name)
30
+ if !respond_to?(:normalize_columns?) || normalize_columns?
31
+ if respond_to?(:normalized_columns)
32
+ normalized_columns.is_a?(Array) ?
33
+ normalized_columns.include?(attr_name.to_sym) :
34
+ normalized_columns[attr_name]
35
+ else
36
+ true
37
+ end
38
+ else
39
+ false
40
+ end
41
+ end
42
+ end
43
+ end
44
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'active_support/concern'
2
4
  require 'active_record/base'
3
5
 
@@ -6,6 +8,7 @@ module BetterRecord
6
8
  extend ActiveSupport::Concern
7
9
 
8
10
  included do
11
+ include AttributeMethods::Write
9
12
  before_validation :set_booleans
10
13
  end
11
14
 
@@ -22,7 +25,7 @@ module BetterRecord
22
25
  longest_name = 0
23
26
  column_names.each {|nm| longest_name = nm.length if nm.length > longest_name}
24
27
  longest_name += 1
25
- str = ''
28
+ str = ''.dup
26
29
  columns.each do |col|
27
30
  unless col.name == 'id'
28
31
  spaces = "#{' ' * (longest_name - col.name.length)}"
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'active_record/reflection'
2
4
 
3
5
  module ActiveRecord
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'active_support/concern'
2
4
 
3
5
  module BetterRecord
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'active_support/concern'
2
4
 
3
5
  module BetterRecord
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Uploadable
2
4
  extend ActiveSupport::Concern
3
5
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module BetterRecord
2
4
  class Encoder
3
5
  def initialize(str)
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module BetterRecord
2
4
  class Engine < ::Rails::Engine
3
5
  isolate_namespace BetterRecord
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module BetterRecord
2
4
  class FakeRedis
3
5
  def data
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'jwt'
2
4
  require 'jwe'
3
5
  require 'openssl'
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module BetterRecord
2
4
  module Migration
3
5
  def audit_table(table_name, rows = nil, query_text = nil, skip_columns = nil)
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module BetterRecord
2
4
  class PolymorphicOverride
3
5
  def self.polymorphic_value(klass, options = nil)
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module BetterRecord
2
4
  class Railtie < ::Rails::Railtie
3
5
  rake_tasks do
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module BetterRecord
2
4
  module Relation
3
5
  # pluck_in_batches: yields an array of *columns that is at least size
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  Dir.glob("#{File.expand_path(__dir__)}/expectations/*").each do |d|
2
4
  require d
3
5
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'stringio'
2
4
 
3
5
  # Custom matcher to test text written to standard output and standard error
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module BetterRecord
2
4
  module Rspec
3
5
  module Extensions
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module BetterRecord
2
4
  module Rspec
3
5
  module Extensions
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module BetterRecord
2
4
  module Rspec
3
5
  module Extensions
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module BetterRecord
2
4
  module Rspec
3
5
  module Extensions
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module BetterRecord
2
4
  module Rspec
3
5
  module Extensions
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module BetterRecord
2
- VERSION = '0.8.0'
4
+ VERSION = '0.8.1'
3
5
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class BetterRecord::EjectRspecExtensionsGenerator < Rails::Generators::Base
2
4
  source_root File.expand_path('templates', __dir__)
3
5
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'rails/generators/active_record'
2
4
 
3
5
  class BetterRecord::SetupGenerator < ActiveRecord::Generators::Base
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Current
2
4
  # == Constants ============================================================
3
5
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module BetterRecord
2
4
  ##########################################################################
3
5
  # THE FOLLOWING SETTINGS CAN ALSO BE SET THROUGH ENVIRONMENT VARIABLES #
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  <% module_namespacing do -%>
2
4
  class <%= class_name %> < <%= parent_class_name.classify %>
3
5
  # == Constants ============================================================
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  <% module_namespacing do -%>
2
4
  require 'rails_helper'
3
5
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: better_record
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.0
4
+ version: 0.8.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sampson Crowley
@@ -264,6 +264,7 @@ files:
264
264
  - lib/better_record/concerns/active_record_extensions/associations_extensions/association_scope_extensions.rb
265
265
  - lib/better_record/concerns/active_record_extensions/associations_extensions/belongs_to_polymorphic_extensions.rb
266
266
  - lib/better_record/concerns/active_record_extensions/associations_extensions/builder_extensions/association_extensions.rb
267
+ - lib/better_record/concerns/active_record_extensions/attribute_methods/write.rb
267
268
  - lib/better_record/concerns/active_record_extensions/base_extensions.rb
268
269
  - lib/better_record/concerns/active_record_extensions/reflection_extensions.rb
269
270
  - lib/better_record/concerns/controllers/authenticatable.rb
@@ -274,7 +275,6 @@ files:
274
275
  - lib/better_record/fake_redis.rb
275
276
  - lib/better_record/jwt.rb
276
277
  - lib/better_record/migration.rb
277
- - lib/better_record/nullify_blank_attributes.rb
278
278
  - lib/better_record/polymorphic_override.rb
279
279
  - lib/better_record/railtie.rb
280
280
  - lib/better_record/relation.rb
@@ -1,8 +0,0 @@
1
- module BetterRecord
2
- module NullifyBlankAttributes
3
- def write_attribute(attr_name, value)
4
- new_value = value == false ? false : value.presence
5
- super(attr_name, new_value)
6
- end
7
- end
8
- end