Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/alindeman/zonebie
Zonebie prevents bugs in code that deals with timezones by randomly assigning a zone on every run
https://github.com/alindeman/zonebie
ruby timezone
Last synced: 4 days ago
JSON representation
Zonebie prevents bugs in code that deals with timezones by randomly assigning a zone on every run
- Host: GitHub
- URL: https://github.com/alindeman/zonebie
- Owner: alindeman
- License: mit
- Created: 2012-03-05T21:11:03.000Z (almost 13 years ago)
- Default Branch: master
- Last Pushed: 2019-01-04T23:18:27.000Z (almost 6 years ago)
- Last Synced: 2024-12-15T01:04:18.341Z (12 days ago)
- Topics: ruby, timezone
- Language: Ruby
- Homepage:
- Size: 109 KB
- Stars: 427
- Watchers: 7
- Forks: 13
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- Changelog: Changelog.md
- License: LICENSE
Awesome Lists containing this project
README
# Zonebie
[![Build Status](https://secure.travis-ci.org/alindeman/zonebie.svg)](http://travis-ci.org/alindeman/zonebie)
Zonebie prevents bugs in code that deals with timezones by randomly assigning a
zone on every run.If Zonebie helps trigger a timezone-related bug, you can temporarily assign the
`ZONEBIE_TZ` environment variable to make your tests deterministic while you
debug (more information below).## Requirements
* MRI (2.0.x, 2.1.x, 2.2.x, 2.3.x, 2.4.x)
* JRuby (1.7)
* Rubinius (3.x)***
And **either** of these gems which adds timezone support to Ruby:
* `activesupport` >= 3.0 (Rails 3.0, 3.1, 3.2, 4.0, 4.1, 4.2)
* `tzinfo` >= 1.2## Installation
If using Bundler (recommended), add to Gemfile:
````ruby
gem 'zonebie'
````## Usage with Rails & Active Support
Active Support allows setting a global timezone that will be used for many date
and time calculations throughout the application.Zonebie can set this to a random timezone at the beginning of test runs.
Specifically for Active Support, it sets `Time.zone`.### Test::Unit & Minitest
Add to `test/test_helper.rb`:
```ruby
Zonebie.set_random_timezone
```### RSpec
Add to `spec/spec_helper.rb`:
```ruby
require "zonebie/rspec"
```### Cucumber
Add a file `features/support/zonebie.rb` with the following contents:
```ruby
Zonebie.set_random_timezone
```## Usage with TZInfo
Zonebie can use the `tzinfo` gem, allowing it to work outside of Active Support
(Rails).However, `Zonebie.set_random_timezone` does not work outside of Active Support
because there is not a concept of a global timezone setting. If you simply need
a random timezone for some other part of your tests, Zonebie can help.```ruby
zone = TZInfo::Timezone.get(Zonebie.random_timezone)
puts zone.now# Also works in Rails/Active Support
zone = ActiveSupport::TimeZone[Zonebie.random_timezone]
puts zone.now
```## Reproducing Bugs
When `Zonebie.set_random_timezone` is called, Zonebie assigns a timezone and
prints a message to STDOUT:```
[Zonebie] Setting timezone: ZONEBIE_TZ="Eastern Time (US & Canada)"
```If you would rather that Zonebie not print out this information during your
tests, put Zonebie in quiet mode before calling `set_random_timezone`:```ruby
Zonebie.quiet = true
```To rerun tests with a specific timezone (e.g., to reproduce a bug that only
seems present in one zone), set the `ZONEBIE_TZ` environment variable:```ruby
# Assuming tests run with simply `rake`
ZONEBIE_TZ="Eastern Time (US & Canada)" rake
```## Contributing
1. Fork it
2. Create your feature branch (`git checkout -b my-new-feature`)
3. Commit your changes (`git commit -am 'Added some feature'`)
4. Push to the branch (`git push origin my-new-feature`)
5. Create new Pull Request