timeoutable 1.0.0 → 1.1.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8f5260b27d155d50a7d7f7fcbe4da981ce32c8c952d9da1d418108613b524f55
4
- data.tar.gz: 617888199e17a4fb1d36c9492233c62bdafa08b4545c19b043afb8434cafe2e7
3
+ metadata.gz: 7ad233d8b2d5a20876944168d646cb9a22155e957d80ec64bab75519a31a9045
4
+ data.tar.gz: 8aec57768ce5c97592abbbdd67b975d2c8c89e3c821a0fb2e4f82e3b199da763
5
5
  SHA512:
6
- metadata.gz: 128cd789fc6cf75a3570f28a08208eb277b6a05f8b02770e0d0b7968a08535b2da2972edf3a56de75e0905448c0476754bd55efb15614a0477a5facf41325c39
7
- data.tar.gz: 12dd063051af4a1b5f37e3dd8278232382baa57c7fb886b3160b733f2bc01b93dedc1e4109e5268a62a2f532f7f9ad20fad0f54dbf4d3c6bb67221e6f2b8ba29
6
+ metadata.gz: 07ba46ce4de024ac211a1fa6a2ff8f31bfe2e168ae17d24d81c6101ddb0f5aa3730b8fb99874271d60c9eaac5624ee9518315547c427446b6ff8f2541480b691
7
+ data.tar.gz: b6bf15103dcad57222df5bafd840d6dbbe61c7b82d9eb9e80e2a94da3b96f86bb2302e2308952316a7a52fd2a93a4daff7fa81290e7888e4178a1c9c52ef93c4
data/.circleci/config.yml CHANGED
@@ -1,108 +1,28 @@
1
- version: 2.1 # Use 2.1 to enable using orbs and other features.
1
+ version: 2.1
2
2
 
3
- # Declare the orbs that we'll use in our config.
4
- # read more about orbs: https://circleci.com/docs/2.0/using-orbs/
5
3
  orbs:
6
4
  ruby: circleci/ruby@1.0
7
-
8
- jobs:
9
- build: # our first job, named "build"
10
- docker:
11
- - image: cimg/ruby:2.7-node # use a tailored CircleCI docker image.
12
- steps:
13
- - checkout # pull down our git code.
14
- - ruby/install-deps # use the ruby orb to install dependencies
15
- environment:
16
-
17
- publish-gemfury:
18
- docker:
19
- - image: cimg/ruby:2.7-node # this is our primary docker image, where step commands run.
20
- environment:
21
- BUNDLE_JOBS: "3"
22
- BUNDLE_RETRY: "3"
23
- RAILS_ENV: test
24
- steps:
25
- - checkout
26
- - ruby/install-deps
27
- - run:
28
- name: Publish Gemfury
29
- command: |
30
- bin/publish_gemfury
31
- publish-github:
32
- docker:
33
- - image: cimg/ruby:2.7-node # this is our primary docker image, where step commands run.
34
- environment:
35
- BUNDLE_JOBS: "3"
36
- BUNDLE_RETRY: "3"
37
- RAILS_ENV: test
38
- steps:
39
- - checkout
40
- - ruby/install-deps
41
- - run:
42
- name: 'Get Go'
43
- command: |
44
- sudo apt-get update -qq
45
- sudo apt-get -y --no-install-recommends install golang-go
46
- - run:
47
- name: 'Set Git stats'
48
- command: |
49
- git config user.name $GITHUB_USER
50
- git config user.email $GITHUB_EMAIL
51
- - run:
52
- name: 'Download GHR'
53
- command: |
54
- curl -sSL https://github.com/tcnksm/ghr/releases/download/v0.13.0/ghr_v0.13.0_linux_amd64.tar.gz | tar xz -f - -C . ghr_v0.13.0_linux_amd64/ghr
55
- mv ghr_v0.13.0_linux_amd64/ghr .
56
- rm -rf ghr_v0.13.0_linux_amd64
57
- chmod 0755 ghr
58
- - run:
59
- name: Publish Git
60
- command: |
61
- export GHRLOCATION=ghr
62
- bin/publish_git
63
- test:
64
- docker:
65
- - image: cimg/ruby:2.7-node
66
- - image: circleci/redis:latest
67
- environment:
68
- BUNDLE_JOBS: "3"
69
- BUNDLE_RETRY: "3"
70
- RAILS_ENV: test
71
- # A series of steps to run, some are similar to those in "build".
72
- steps:
73
- - checkout
74
- - ruby/install-deps
75
- - run:
76
- name: Setup Climate Control test-reporter
77
- command: |
78
- curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter
79
- chmod +x ./cc-test-reporter
80
- - run:
81
- name: Run le tests
82
- command: |
83
- ./cc-test-reporter before-build
84
- SIMPLE_COV_RUN=true bundle exec rspec --format RspecJunitFormatter --out test-results/rspec/rspec.xml --format progress --color
85
- ./cc-test-reporter after-build format-coverage -t simplecov
5
+ cst: cst/framework@1
86
6
 
87
7
  workflows:
88
8
  version: 2
89
9
  yeet-le-jobs:
90
10
  jobs:
91
- - build
92
- - test:
93
- requires:
94
- - build
95
- - publish-github:
96
- requires:
97
- - test
98
- filters:
99
- branches:
100
- only:
101
- - main
102
-
103
- - publish-gemfury:
11
+ - cst/enforce-gem-version-bump
12
+ - cst/rspec-ruby:
13
+ rspec-system-args: "SIMPLE_COV_RUN=true"
14
+ cc-report-collect-ruby: "2.7.5"
15
+ matrix:
16
+ parameters:
17
+ ruby-version: ["2.7.5" , "3.0.0", "3.0.3"]
18
+ alias: required-matrix-tests
19
+ name: test-ruby<< matrix.ruby-version >>
20
+ - cst/publish-gem:
21
+ publish-git: true
22
+ publish-default-gem: true
104
23
  requires:
105
- - test
24
+ - required-matrix-tests
25
+ - cst/enforce-gem-version-bump
106
26
  filters:
107
27
  branches:
108
28
  only:
data/.gitignore CHANGED
@@ -10,3 +10,6 @@
10
10
 
11
11
  # rspec failure tracking
12
12
  .rspec_status
13
+
14
+ *.gem
15
+ *.DS_STORE
data/README.md CHANGED
@@ -1,15 +1,11 @@
1
1
  # Timeoutable
2
2
 
3
- Welcome to your new gem! In this directory, you'll find the files you need to be able to package up your Ruby library into a gem. Put your Ruby code in the file `lib/timeoutable`. To experiment with that code, run `bin/console` for an interactive prompt.
4
-
5
- TODO: Delete this and the text above, and describe your gem
6
-
7
3
  ## Installation
8
4
 
9
5
  Add this line to your application's Gemfile:
10
6
 
11
7
  ```ruby
12
- gem 'timeoutable'
8
+ gem 'timeoutable', source: 'https://github.com/matt-taylor/timeoutable'
13
9
  ```
14
10
 
15
11
  And then execute:
@@ -22,17 +18,32 @@ Or install it yourself as:
22
18
 
23
19
  ## Usage
24
20
 
25
- TODO: Write usage instructions here
21
+ Take a looke at the [TestableKlass](https://github.com/matt-taylor/timeoutable/blob/main/lib/timeoutable/testable_klass.rb) for complete example.
26
22
 
27
- ## Development
28
23
 
29
- After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
24
+ ```ruby
25
+ params = {
26
+ warn: 10, # this can be a float
27
+ timeout: 15, # this can be a float
28
+ proc: ->(thread, seconds_elapsed) { thread[BIT_NAME] = 1 }, # proc to call after ${warn} seconds -- passes the original thread and the seconds that have elapsed
29
+ message: "Error message",
30
+ }
31
+
32
+ Timeoutable.timeout(**params) do
33
+ # code wrapped in a timeout
34
+ end
35
+ ```
36
+
37
+ ### How this works
38
+ After `warn` seconds have elapsed, `Timoutable` will call the `proc`. In the example, the `proc` will set a bit in the thread. However, you can choose any method of communication to gracefully shutdown.
39
+
40
+ ## Development
30
41
 
31
- To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and the created tag, and push the `.gem` file to [rubygems.org](https://rubygems.org).
42
+ After checking out the repo, run `make bash` to install dependencies and build a container. Then, run `bundle exec rspec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
32
43
 
33
44
  ## Contributing
34
45
 
35
- Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/timeoutable. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [code of conduct](https://github.com/[USERNAME]/timeoutable/blob/master/CODE_OF_CONDUCT.md).
46
+ Bug reports and pull requests are welcome on GitHub at https://github.com/matt-taylor/timeoutable. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [code of conduct](https://github.com/matt-taylor/timeoutable/blob/main/CODE_OF_CONDUCT.md).
36
47
 
37
48
  ## License
38
49
 
@@ -40,4 +51,4 @@ The gem is available as open source under the terms of the [MIT License](https:/
40
51
 
41
52
  ## Code of Conduct
42
53
 
43
- Everyone interacting in the Timeoutable project's codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/[USERNAME]/timeoutable/blob/master/CODE_OF_CONDUCT.md).
54
+ Everyone interacting in the Timeoutable project's codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/matt-taylor/timeoutable/blob/main/CODE_OF_CONDUCT.md).
@@ -2,8 +2,8 @@
2
2
 
3
3
  module Timeoutable
4
4
  MAJOR = 1 # With backwards incompatability. Requires annoucment and update documentation
5
- MINOR = 0 # With feature launch. Documentation of upgrade is useful via a changelog
6
- PATCH = 0 # With minor upgrades or patcing a small bug. No changelog necessary
5
+ MINOR = 1 # With feature launch. Documentation of upgrade is useful via a changelog
6
+ PATCH = 1 # With minor upgrades or patcing a small bug. No changelog necessary
7
7
  VERSION = [MAJOR,MINOR,PATCH].join('.')
8
8
 
9
9
  def self.get_version
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: timeoutable
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matt Taylor
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-06-22 00:00:00.000000000 Z
11
+ date: 2022-04-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: timeout
@@ -45,10 +45,7 @@ files:
45
45
  - README.md
46
46
  - Rakefile
47
47
  - bin/console
48
- - bin/publish_gemfury
49
- - bin/publish_git
50
48
  - bin/setup
51
- - bin/version
52
49
  - docker-compose.yml
53
50
  - lib/timeoutable.rb
54
51
  - lib/timeoutable/testable_klass.rb
@@ -74,7 +71,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
74
71
  - !ruby/object:Gem::Version
75
72
  version: '0'
76
73
  requirements: []
77
- rubygems_version: 3.2.20
74
+ rubygems_version: 3.2.32
78
75
  signing_key:
79
76
  specification_version: 4
80
77
  summary: Extension of Ruby's Timeout::timeout method
data/bin/publish_gemfury DELETED
@@ -1,27 +0,0 @@
1
- #!/bin/bash -e
2
-
3
- if [ -z "$GEMFURY_TOKEN" ]; then
4
- echo 'Environment variable GEMFURY_TOKEN is not present'
5
- exit 1
6
- fi
7
-
8
- VERSION=$(bin/version)
9
- PACKAGE=timeoutable-${VERSION}.gem
10
-
11
- # if [ $(git tag -l "$VERSION") ]; then
12
- # echo "Pre existing version $VERSION, not tagging."
13
- # echo "Pre existing version $VERSION, not pushing to gemfury."
14
- # exit 0
15
- # fi
16
-
17
- # Build and publish to Gemfury
18
- gem build timeoutable.gemspec
19
- FILE=$(pwd)/${PACKAGE}
20
- echo "Finished building $FILE"
21
-
22
- # push to gemfury
23
- curl --fail -F package=@${FILE} https://${GEMFURY_TOKEN}@push.fury.io/${GEMFURY_USER}/
24
- echo "Finished Pushing to Gemfury"
25
-
26
- # start fresh
27
- rm timeoutable.gemspec
data/bin/publish_git DELETED
@@ -1,38 +0,0 @@
1
- #!/bin/bash -e
2
-
3
- if [ -z "$GITHUB_TOKEN" ]; then
4
- echo 'Environment variable GITHUB_TOKEN is not present'
5
- exit 1
6
- fi
7
-
8
- if [ -z "$GITHUB_USER" ]; then
9
- echo 'Environment variable GITHUB_USER is not present'
10
- exit 1
11
- fi
12
-
13
-
14
- VERSION=$(bin/version)
15
- PACKAGE=timeoutable-${VERSION}.gem
16
-
17
- # if [ $(git tag -l "$VERSION") ]; then
18
- # echo "Pre existing version $VERSION, not tagging."
19
- # exit 0
20
- # fi
21
-
22
- gem build timeoutable.gemspec
23
- FILE=$(pwd)/${PACKAGE}
24
- echo "Finished building $FILE"
25
-
26
- # create tag in repo
27
- git tag -a $VERSION -m "$VERSION"
28
- git push https://${GITHUB_TOKEN}@github.com/${GITHUB_USER}/timeoutable.git $VERSION
29
- echo "Finished Tagging to git"
30
-
31
-
32
- # send artifacts to git
33
- SHA=$(git rev-parse HEAD)
34
- ./$GHRLOCATION -soft -t ${GITHUB_TOKEN} -u ${GITHUB_USER} -r timeoutable -c ${SHA} ${VERSION} *.gem
35
- echo "Finished Pushing artificat to Git"
36
-
37
- # start fresh
38
- rm timeoutable.gemspec
data/bin/version DELETED
@@ -1,7 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # frozen_string_literal: true
3
-
4
- require "bundler/setup"
5
- require "timeoutable"
6
-
7
- Timeoutable.get_version