Skip to content

Commit 82cd699

Browse files
authored
Merge branch 'v4' into 2188-config
2 parents e0ee787 + 9bcd46c commit 82cd699

8 files changed

Lines changed: 28 additions & 11 deletions

File tree

app/controllers/concerns/view_component/preview_actions.rb

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ module PreviewActions
88
prepend_view_path File.expand_path("../../../views", __dir__)
99

1010
around_action :set_locale, only: :previews
11-
before_action :require_local!, unless: :show_previews?
11+
before_action :require_local!, unless: :previews_enabled?
1212

1313
content_security_policy(false)
1414

@@ -51,8 +51,8 @@ def default_preview_layout
5151
end
5252

5353
# :doc:
54-
def show_previews?
55-
ViewComponent::Base.config.show_previews
54+
def previews_enabled?
55+
ViewComponent::Base.config.previews.enabled
5656
end
5757

5858
# :doc:

docs/CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,10 @@ nav_order: 6
2222

2323
*Joel Hawksley*
2424

25+
* Fix bug where `config.previews.enabled` did not function properly in production environments.
26+
27+
*Joel Hawksley*
28+
2529
* `config.previews.default_layout` should default to nil.
2630

2731
*Joel Hawksley*

docs/guide/helpers.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,3 +62,9 @@ edit_user_path # implicitly depends on current request to provide `user`
6262
# good
6363
edit_user_path(user: current_user)
6464
```
65+
66+
Alternatively, use the `helpers` proxy:
67+
68+
```ruby
69+
helpers.edit_user_path
70+
```

docs/guide/previews.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -201,11 +201,11 @@ end
201201

202202
## Enabling previews
203203

204-
Previews are enabled by default in test and development environments. To enable or disable previews, use the `show_previews` option:
204+
Previews are enabled by default in test and development environments. To enable or disable previews, use the `previews.enabled` option:
205205

206206
```ruby
207207
# config/environments/test.rb
208-
config.view_component.show_previews = false
208+
config.view_component.previews.enabled = false
209209
```
210210

211211
## Use with RSpec

lib/view_component/engine.rb

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,9 @@ class Engine < Rails::Engine # :nodoc:
1515
options[config_option] ||= ViewComponent::Base.public_send(config_option)
1616
end
1717
options.instrumentation_enabled = false if options.instrumentation_enabled.nil?
18-
options.show_previews = (Rails.env.development? || Rails.env.test?) if options.show_previews.nil?
18+
options.previews.enabled = (Rails.env.development? || Rails.env.test?) if options.previews.enabled.nil?
1919

20-
if options.show_previews
20+
if options.previews.enabled
2121
# This is still necessary because when `config.view_component` is declared, `Rails.root` is unspecified.
2222
options.previews.paths << "#{Rails.root}/test/components/previews" if defined?(Rails.root) && Dir.exist?(
2323
"#{Rails.root}/test/components/previews"
@@ -36,7 +36,7 @@ class Engine < Rails::Engine # :nodoc:
3636
initializer "view_component.set_autoload_paths" do |app|
3737
options = app.config.view_component
3838

39-
if options.show_previews && !options.previews.paths.empty?
39+
if options.previews.enabled && !options.previews.paths.empty?
4040
paths_to_add = options.previews.paths - ActiveSupport::Dependencies.autoload_paths
4141
ActiveSupport::Dependencies.autoload_paths.concat(paths_to_add) if paths_to_add.any?
4242
end
@@ -88,7 +88,7 @@ class Engine < Rails::Engine # :nodoc:
8888
config.after_initialize do |app|
8989
options = app.config.view_component
9090

91-
if options.show_previews
91+
if options.previews.enabled
9292
app.routes.prepend do
9393
preview_controller = options.previews.controller.sub(/Controller$/, "").underscore
9494

test/sandbox/config/application.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ class Application < Rails::Application
4444
config.view_component.previews.paths << "#{config.root}/my/components/previews"
4545
config.view_component.previews.paths << "#{Rails.root}/lib/component_previews"
4646

47-
config.action_mailer.default_url_options = { :host => "www.yourhost.com" }
47+
config.action_mailer.default_url_options = {host: "www.yourhost.com"}
4848
end
4949
end
5050

test/sandbox/config/environments/test.rb

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@
2828
# Disable request forgery protection in test environment
2929
config.action_controller.allow_forgery_protection = false
3030

31-
config.view_component.show_previews = true
3231
config.view_component.instrumentation_enabled = true
3332

3433
# Tell Action Mailer not to deliver emails to the real world.

test/sandbox/test/integration_test.rb

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -285,6 +285,14 @@ def test_optional_rendering_component_depending_on_request_context
285285
refute_includes response.body, "Rendered"
286286
end
287287

288+
def test_previews_can_be_disabled
289+
with_previews_option(:enabled, false) do
290+
get "/rails/view_components/my_component/default"
291+
292+
assert_response 200
293+
end
294+
end
295+
288296
def test_renders_component_preview
289297
get "/rails/view_components/my_component/default"
290298

0 commit comments

Comments
 (0)