discourse/config/environments/development.rb
Jarek Radosz f6daea6082
DEV: Customize the dev-env rails logger (#39988)
A minimal format + suppression of noisy logs.

```
❯ bin/ember-cli -u
Ember CLI running on PID: 72251
Starting Pitchfork...
Starting CSS change watcher
[ember-cli] Proxying to http://127.0.0.1:3000
[ember-cli] building...
Pitchfork ready on http://localhost:3000 (3 workers, 1 sidekiq, plugin JS watcher)
Compiling 43 plugins...
Finished initial compilation of plugins in 2.5s
...
```

<details><summary>Previously</summary><pre>
Ember CLI running on PID: 73296
Starting CSS change watcher
I, [2026-05-13T18:44:58.017891 #73297] INFO -- : listening on
addr=127.0.0.1:3000 fd=19
[ember-cli] Proxying to http://127.0.0.1:3000
[ember-cli] building...
I, [2026-05-13T18:45:05.459057 #73297] INFO -- : monitor pid=73297 ready
I, [2026-05-13T18:45:05.459338 #73297]  INFO -- : monitor process ready
I, [2026-05-13T18:45:05.459501 #73297] INFO -- : service gen=0
spawning...
I, [2026-05-13T18:45:05.486370 #73297] INFO -- : worker=0 gen=0
spawning...
I, [2026-05-13T18:45:05.501127 #73297] INFO -- : worker=1 gen=0
spawning...
I, [2026-05-13T18:45:05.504624 #73452] INFO -- : starting 1 supervised
sidekiqs
I, [2026-05-13T18:45:05.517574 #73297] INFO -- : worker=2 gen=0
spawning...
I, [2026-05-13T18:45:05.527786 #73453] INFO -- : worker=0 gen=0
pid=73453 ready
I, [2026-05-13T18:45:05.542901 #73454] INFO -- : worker=1 gen=0
pid=73454 ready
I, [2026-05-13T18:45:05.546845 #73297] INFO -- : service gen=0 pid=73452
spawned
I, [2026-05-13T18:45:05.547308 #73297] INFO -- : worker=0 gen=0
pid=73453 registered
I, [2026-05-13T18:45:05.547502 #73297] INFO -- : worker=1 gen=0
pid=73454 registered
I, [2026-05-13T18:45:05.568697 #73297] INFO -- : worker=2 gen=0
pid=73455 registered
I, [2026-05-13T18:45:05.574660 #73455] INFO -- : worker=2 gen=0
pid=73455 ready
I, [2026-05-13T18:45:05.868738 #73456] INFO -- : Loading Sidekiq in
process id 73456
writing pid file
/Users/cvx/discourse/discourse/tmp/pids/plugin_js_watcher_0.pid for
73464
I, [2026-05-13T18:45:06.229162 #73464] INFO -- : [PluginJsWatcher]
Loading PluginJsWatcher in process id 73464
[Plugin::JsManager] Compiling 43 plugins...
[Plugin::JsManager] Finished initial compilation of plugins in 1.95s
...
</pre></details>
2026-05-14 11:31:14 +02:00

118 lines
4.1 KiB
Ruby
Vendored

# frozen_string_literal: true
Discourse::Application.configure do
# Settings specified here will take precedence over those in config/application.rb
# In the development environment your application's code is reloaded on
# every request. This slows down response time but is perfect for development
# since you don't have to restart the web server when you make code changes.
config.cache_classes = false
config.file_watcher = ActiveSupport::EventedFileUpdateChecker
config.eager_load = ENV["DISCOURSE_ZEITWERK_EAGER_LOAD"] == "1"
# Use the schema_cache.yml file generated during db:migrate (via db:schema:cache:dump)
config.active_record.use_schema_cache_dump = true
# Show full error reports and disable caching
config.consider_all_requests_local = true
config.action_controller.perform_caching = false
config.action_controller.asset_host = GlobalSetting.cdn_url
# Print deprecation notices to the Rails logger
config.active_support.deprecation = :log
# Do not compress assets
config.assets.compress = false
# Don't Digest assets, makes debugging uglier
config.assets.digest = false
config.assets.debug = false
config.public_file_server.headers = { "Access-Control-Allow-Origin" => "*" }
# Raise an error on page load if there are pending migrations
config.active_record.migration_error = :page_load
config.watchable_dirs["lib"] = [:rb]
config.action_mailer.smtp_settings =
if GlobalSetting.try(:use_smtp_environment_in_development)
GlobalSetting.smtp_settings ||
{ address: "localhost", port: ENV["DISCOURSE_LOCAL_EMAIL_PORT"] || 1025 }
else
# we recommend you use mailpit: https://github.com/axllent/mailpit/
{ address: "localhost", port: ENV["DISCOURSE_LOCAL_EMAIL_PORT"] || 1025 }
end
config.action_mailer.raise_delivery_errors = true
config.log_level = ENV["DISCOURSE_DEV_LOG_LEVEL"] if ENV["DISCOURSE_DEV_LOG_LEVEL"]
require_relative "../../lib/dev_log_formatter"
config.log_formatter = DevLogFormatter.new
config.active_record.logger = nil if ENV["RAILS_DISABLE_ACTIVERECORD_LOGS"] == "1" ||
ENV["ENABLE_LOGSTASH_LOGGER"] == "1"
config.active_record.verbose_query_logs = true if ENV["RAILS_VERBOSE_QUERY_LOGS"] == "1"
if defined?(BetterErrors)
BetterErrors::Middleware.allow_ip! ENV["TRUSTED_IP"] if ENV["TRUSTED_IP"]
if defined?(Pitchfork) && ENV["UNICORN_WORKERS"].to_i != 1
# BetterErrors doesn't work with multiple workers. Disable it to avoid confusion
Rails.configuration.middleware.delete BetterErrors::Middleware
end
end
config.load_mini_profiler = true if !ENV["DISABLE_MINI_PROFILER"]
if hosts = ENV["DISCOURSE_DEV_HOSTS"]
Discourse.deprecate("DISCOURSE_DEV_HOSTS is deprecated. Use RAILS_DEVELOPMENT_HOSTS instead.")
config.hosts.concat(hosts.split(","))
end
require "middleware/missing_avatars"
config.middleware.insert 1, Middleware::MissingAvatars
config.enable_anon_caching = false
require "rbtrace" if RUBY_ENGINE == "ruby"
if emails = GlobalSetting.developer_emails
config.developer_emails = emails.split(",").map(&:downcase).map(&:strip)
end
if ENV["DISCOURSE_SKIP_CSS_WATCHER"] != "1" && (defined?(Rails::Server) || defined?(Pitchfork))
require "stylesheet/watcher"
STDERR.puts "Starting CSS change watcher"
@watcher = Stylesheet::Watcher.watch
end
config.after_initialize do
config.colorize_logging = true if ENV["RAILS_COLORIZE_LOGGING"] == "1"
if ENV["RAILS_VERBOSE_QUERY_LOGS"] == "1"
ActiveRecord::LogSubscriber.backtrace_cleaner.add_silencer do |line|
line =~ %r{lib/freedom_patches}
end
end
if ENV["BULLET"]
Bullet.enable = true
Bullet.rails_logger = true
end
end
config.hosts << /\A(([a-z0-9-]+)\.)*localhost(\:\d+)?\Z/
config.generators.after_generate do |files|
parsable_files = files.filter { |file| file.end_with?(".rb") }
unless parsable_files.empty?
system("bundle exec rubocop -A --fail-level=E #{parsable_files.shelljoin}", exception: true)
end
end
# This is a NGINX specific header
config.action_dispatch.x_sendfile_header = nil
end