From 4ff86c8ddef35006c9a0b7b67efefc299ac89f33 Mon Sep 17 00:00:00 2001 From: Ayush Newatia Date: Wed, 25 Jan 2023 12:29:29 +0000 Subject: [PATCH] Set timezone from initializer Ruby DSL --- bridgetown-core/lib/bridgetown-core.rb | 8 ++++++++ .../configuration/configuration_dsl.rb | 4 ++++ bridgetown-core/test/test_configuration.rb | 11 +++++++++++ 3 files changed, 23 insertions(+) diff --git a/bridgetown-core/lib/bridgetown-core.rb b/bridgetown-core/lib/bridgetown-core.rb index 6b36a8053..dd3bb62ef 100644 --- a/bridgetown-core/lib/bridgetown-core.rb +++ b/bridgetown-core/lib/bridgetown-core.rb @@ -276,6 +276,14 @@ def with_unbundled_env(&block) def set_timezone(timezone) ENV["TZ"] = timezone end + + # Get the current TZ environment variable + # + # @return [String] + def timezone + ENV["TZ"] + end + # rubocop:enable Naming/AccessorMethodName # Fetch the logger instance for this Bridgetown process. diff --git a/bridgetown-core/lib/bridgetown-core/configuration/configuration_dsl.rb b/bridgetown-core/lib/bridgetown-core/configuration/configuration_dsl.rb index 583aebb1d..d17b12084 100644 --- a/bridgetown-core/lib/bridgetown-core/configuration/configuration_dsl.rb +++ b/bridgetown-core/lib/bridgetown-core/configuration/configuration_dsl.rb @@ -72,6 +72,10 @@ def roda(&block) @scope.roda_initializers << block end + def timezone(tz) # rubocop:disable Naming/MethodParameterName + Bridgetown.set_timezone(tz) + end + def method_missing(key, *value, &block) # rubocop:disable Style/MissingRespondToMissing return get(key) if value.empty? && block.nil? diff --git a/bridgetown-core/test/test_configuration.rb b/bridgetown-core/test/test_configuration.rb index 040ab5d87..545a93484 100644 --- a/bridgetown-core/test/test_configuration.rb +++ b/bridgetown-core/test/test_configuration.rb @@ -543,5 +543,16 @@ def default_config_fixture(overrides = {}) assert @config.init_params.key?("something") end + + should "set the global timezone" do + dsl = Configuration::ConfigurationDSL.new(scope: @config, data: @config) + + dsl.instance_variable_set(:@context, :testing) + dsl.instance_exec(dsl) do + timezone "GMT" + end + + assert_equal "GMT", Bridgetown.timezone + end end end