better_record 0.8.0 → 0.8.1

Sign up to get free protection for your applications and to get access to all the features.
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