Skip to content

Commit 30d45d8

Browse files
committed
Use Rails' configuration options
1 parent 273db0c commit 30d45d8

4 files changed

Lines changed: 56 additions & 1 deletion

File tree

lib/bootstrap_form.rb

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
require "action_view"
44
require "action_pack"
55
require "bootstrap_form/action_view_extensions/form_helper"
6+
require "bootstrap_form/configuration"
67

78
module BootstrapForm
89
extend ActiveSupport::Autoload
@@ -32,6 +33,10 @@ def config
3233
def configure
3334
yield config
3435
end
36+
37+
def deprecator
38+
@deprecator ||= ActiveSupport::Deprecation.new("a future release", "BootstrapForm")
39+
end
3540
end
3641

3742
mattr_accessor :field_error_proc

lib/bootstrap_form/configuration.rb

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,12 @@ def default_form_attributes=(attributes)
77
when nil
88
@default_form_attributes = {}
99
when Hash
10+
BootstrapForm.deprecator.warn(<<~MESSAGE.squish)
11+
BootstrapForm::Configuation#default_form_attributes will be removed in a future release.
12+
Please use Rails.application.config.bootstrap_form.default_form_attributes instead.
13+
MESSAGE
1014
@default_form_attributes = attributes
15+
Rails.application.config.bootstrap_form.default_form_attributes = attributes
1116
else
1217
raise ArgumentError, "Unsupported default_form_attributes #{attributes.inspect}"
1318
end
@@ -19,4 +24,12 @@ def default_form_attributes
1924
{}
2025
end
2126
end
27+
28+
mattr_accessor :configuration, default: nil
29+
30+
class << self
31+
def configure
32+
yield(configuration) if block_given?
33+
end
34+
end
2235
end

lib/bootstrap_form/engine.rb

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,5 +6,16 @@ module BootstrapForm
66
class Engine < Rails::Engine
77
config.eager_load_namespaces << BootstrapForm
88
config.autoload_paths << File.expand_path("lib", __dir__)
9+
10+
config.bootstrap_form = ActiveSupport::OrderedOptions.new
11+
config.bootstrap_form.default_form_attributes = {}
12+
13+
initializer "bootstrap_form.configure" do |app|
14+
BootstrapForm.configuration = app.config.bootstrap_form
15+
end
16+
17+
initializer "bootstrap_form.deprecator" do |app|
18+
app.deprecators[:bootstrap_form] = BootstrapForm.deprecator
19+
end
920
end
1021
end

test/bootstrap_configuration_test.rb

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,13 @@
33
require_relative "test_helper"
44

55
class BootstrapConfigurationTest < ActionView::TestCase
6+
teardown do
7+
# Unfortunately, it seems we have to manually reset each of the configuration options
8+
# that we change in our test cases.
9+
Rails.application.config.bootstrap_form.default_form_attributes = {}
10+
Rails.application.config.bootstrap_form.bogon = nil
11+
end
12+
613
test "has default form attributes" do
714
config = BootstrapForm::Configuration.new
815

@@ -11,7 +18,9 @@ class BootstrapConfigurationTest < ActionView::TestCase
1118

1219
test "allows to set default_form_attributes with custom value" do
1320
config = BootstrapForm::Configuration.new
14-
config.default_form_attributes = { foo: "bar" }
21+
assert_deprecated(BootstrapForm.deprecator) do
22+
config.default_form_attributes = { foo: "bar" }
23+
end
1524

1625
assert_equal({ foo: "bar" }, config.default_form_attributes)
1726
end
@@ -31,4 +40,21 @@ class BootstrapConfigurationTest < ActionView::TestCase
3140
end
3241
assert_equal("Unsupported default_form_attributes [1, 2, 3]", exception.message)
3342
end
43+
44+
test "Use Rails configuration" do
45+
assert_nil Rails.application.config.bootstrap_form.bogon
46+
Rails.application.config.bootstrap_form.bogon = true
47+
assert Rails.application.config.bootstrap_form.bogon
48+
end
49+
50+
test "Support legacy configuration from Rails configuration" do
51+
assert_equal({}, Rails.application.config.bootstrap_form.default_form_attributes)
52+
53+
config = BootstrapForm::Configuration.new
54+
assert_deprecated(BootstrapForm.deprecator) do
55+
config.default_form_attributes = { foo: "bar" }
56+
end
57+
58+
assert_equal({ foo: "bar" }, Rails.application.config.bootstrap_form.default_form_attributes)
59+
end
3460
end

0 commit comments

Comments
 (0)