[Rails5] Fix `TZInfo::InvalidTimezoneIdentifier` exception
What does this MR do?
In Rails 4.2.10 the ActiveSupport::TimeZone.find_tzinfo(timezone_name)
method calls TZInfo::TimezoneProxy.new(timezone_name)
which returns timezone_name
if it is invalid.
But in Rails 5.0 the ActiveSupport::TimeZone.find_tzinfo(timezone_name)
method now calls the TZInfo::Timezone.new(timezone_name)
method which throws the TZInfo::InvalidTimezoneIdentifier: Invalid identifier
exception if timezone_name
is invalid.
This MR adds the rescue block to return timezone name if the exception is raised.
Also this change fixes the error:
1) Ci::PipelineSchedule validations does not allow invalid cron patters
Failure/Error: ActiveSupport::TimeZone.find_tzinfo(timezone).name
TZInfo::InvalidTimezoneIdentifier:
Invalid identifier
# ./lib/gitlab/ci/cron_parser.rb:28:in `timezone_name'
# ./lib/gitlab/ci/cron_parser.rb:9:in `initialize'
# ./app/validators/cron_validator.rb:6:in `new'
# ./app/validators/cron_validator.rb:6:in `validate_each'
# ./spec/models/ci/pipeline_schedule_spec.rb:26:in `block (3 levels) in <top (required)>'
Are there points in the code the reviewer needs to double check?
No.
Why was this MR needed?
Screenshots (if relevant)
No.
Does this MR meet the acceptance criteria?
-
Changelog entry added, if necessary -
Documentation created/updated -
API support added -
Tests added for this feature/bug - Review
-
Has been reviewed by UX -
Has been reviewed by Frontend -
Has been reviewed by Backend -
Has been reviewed by Database
-
-
Conform by the merge request performance guides -
Conform by the style guides -
Squashed related commits together -
Internationalization required/considered -
End-to-end tests pass ( package-and-qa
manual pipeline job)