better_record 0.8.1 → 0.8.2

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7cc7df8cadc6ee7f40396d5d405c281fc3d08ac10182db8fb8725b14cfb947b0
4
- data.tar.gz: a000455e51c4008ec65661ddc6de35e44b624e72e73a96f2cea03638119877e6
3
+ metadata.gz: 20b9f20b5d31a8e1182dd09ca27d6c09551eafa48bb1a0a722681a9194ccf85a
4
+ data.tar.gz: 8b4604c103762493e13a49b13c142b31e4da585a0b4d2932025e23a1b162d3c1
5
5
  SHA512:
6
- metadata.gz: ad4e3ea2a8e85df2c45725f01c673cd0679766c53ac78d622ccd54f26225aa7ea7ec1905f37d059ba737dc5eed44f902a649803315a5a7ca3d0d08caa49984d1
7
- data.tar.gz: 9e326014afcae6785bc3d17c8313e4551af0669f0d7653bd766fb31835e3b7fcc9e4abe61de4c2604881dc85a38333fb548101cf0282ef0795cf28eb6e810d78
6
+ metadata.gz: '08ac2e82687f68237f666a8f5c4e4768dbc043cfce5ce60960ee7710827334664128e37e88d30abe4b1202aed9fb9b6f78478fe33621f37897550cc70e56ec54'
7
+ data.tar.gz: ca3e3094b2133e4750d3dc9bb08d12b357ae42e894dada66c3631d857d0a9625c0ee4cf0922da71f66212e1cff12e421e2fb6c9ce369abae9c2d0cd364b74461
@@ -1,5 +1,8 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'active_support'
2
4
  require 'active_record'
5
+ require 'active_record/type'
3
6
  require 'csv'
4
7
 
5
8
  Dir.glob("#{File.expand_path(__dir__)}/core_ext/*.rb").each do |d|
@@ -8,6 +11,7 @@ end
8
11
 
9
12
  module BetterRecord
10
13
  ATTRIBUTE_METHODS = [
14
+ :strict_booleans,
11
15
  :default_polymorphic_method,
12
16
  :db_audit_schema,
13
17
  :has_auditing_relation_by_default,
@@ -37,9 +41,10 @@ module BetterRecord
37
41
  end
38
42
  end
39
43
 
44
+ self.strict_booleans = Boolean.strict_parse((ENV.fetch('BR_STRICT_BOOLEANS') { false }))
40
45
  self.default_polymorphic_method = (ENV.fetch('BR_DEFAULT_POLYMORPHIC_METHOD') { :polymorphic_name }).to_sym
41
46
  self.db_audit_schema = ENV.fetch('BR_DB_AUDIT_SCHEMA') { 'auditing' }
42
- self.has_auditing_relation_by_default = ActiveRecord::Type::Boolean.new.cast(ENV.fetch('BR_ADD_HAS_MANY') { true })
47
+ self.has_auditing_relation_by_default = Boolean.strict_parse(ENV.fetch('BR_ADD_HAS_MANY') { true })
43
48
  self.audit_relation_name = (ENV.fetch('BR_AUDIT_RELATION_NAME') { 'logged_actions' }).to_sym
44
49
  self.layout_template = (ENV.fetch('BR_LAYOUT_TEMPLATE') { 'better_record/layout' }).to_s
45
50
  self.app_domain_name = (ENV.fetch('APP_DOMAIN_NAME') { 'non_existant_domain.com' }).to_s
@@ -20,7 +20,7 @@ module BetterRecord
20
20
  when ActiveRecord::ConnectionAdapters::PostgreSQL::OID::Jsonb
21
21
  value.presence || {}
22
22
  when ActiveRecord::Type::Boolean
23
- Boolean.parse(value)
23
+ BetterRecord.strict_booleans ? Boolean.strict_parse(value) : Boolean.parse(value)
24
24
  else
25
25
  value.presence
26
26
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module BetterRecord
4
- VERSION = '0.8.1'
4
+ VERSION = '0.8.2'
5
5
  end
@@ -1,9 +1,15 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'active_record'
4
+
3
5
  class Boolean
4
6
  def self.parse(value)
5
7
  ActiveRecord::Type::Boolean.new.cast(value)
6
8
  end
9
+
10
+ def self.strict_parse(value)
11
+ !!parse(value)
12
+ end
7
13
  end
8
14
 
9
15
  class Object
@@ -4,6 +4,7 @@ module BetterRecord
4
4
  ##########################################################################
5
5
  # THE FOLLOWING SETTINGS CAN ALSO BE SET THROUGH ENVIRONMENT VARIABLES #
6
6
  # #
7
+ # strict_booleans: BR_STRICT_BOOLEANS #
7
8
  # default_polymorphic_method: BR_DEFAULT_POLYMORPHIC_METHOD #
8
9
  # db_audit_schema: BR_DB_AUDIT_SCHEMA #
9
10
  # has_auditing_relation_by_default: BR_ADD_HAS_MANY #
@@ -17,6 +18,10 @@ module BetterRecord
17
18
  # certificate_session_user_method: BR_CERTIFICATE_SESSION_USER_METHOD #
18
19
  ##########################################################################
19
20
 
21
+ # uncomment the following line to disable three-state booleans in models
22
+
23
+ # self.strict_booleans = true
24
+
20
25
  # uncomment the following line to use table_names instead of model names
21
26
  # as the 'type' value in polymorphic relationships
22
27
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: better_record
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.1
4
+ version: 0.8.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sampson Crowley
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-08-22 00:00:00.000000000 Z
11
+ date: 2018-08-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -245,7 +245,6 @@ files:
245
245
  - app/views/layouts/better_record/application.html.erb
246
246
  - config/initializers/active_record/money_type.rb
247
247
  - config/initializers/concerns.rb
248
- - config/initializers/core_ext/boolean.rb
249
248
  - config/initializers/core_ext/date.rb
250
249
  - config/initializers/core_ext/integer.rb
251
250
  - config/initializers/core_ext/string.rb
@@ -288,6 +287,7 @@ files:
288
287
  - lib/better_record/tasks/better_record/install.rake
289
288
  - lib/better_record/tasks/spec/attributes.rake
290
289
  - lib/better_record/version.rb
290
+ - lib/core_ext/boolean.rb
291
291
  - lib/generators/better_record/eject_rspec_extensions/USAGE
292
292
  - lib/generators/better_record/eject_rspec_extensions/eject_rspec_extensions_generator.rb
293
293
  - lib/generators/better_record/setup/USAGE