shifty 0.3.0 → 0.4.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: 46d6ec38da041475fa499d8d79042e685d9eb3c4ab1dbce24ab70579b466acc2
4
- data.tar.gz: b8cc19ee79ad7321e113f8ec7311f52020566506ff8a7e84dc36c6eb840e57dd
3
+ metadata.gz: df1f9b8ed700b93a733b07ef8316d40f4c0651f993e7ebdc81534ce2816f35da
4
+ data.tar.gz: 18ef18bf4bfa01d84f13ee3cf3151a1bf0475dd25b5c5cdbfd6555fa6a777de9
5
5
  SHA512:
6
- metadata.gz: c11b09e67ff91d611ddedff9404d81b043f9211e0a96a452ff6d9fde0480955e65050b00fb6a71cabc867e35ef3ae28815943d371b56c1a3a1a425a80e5847f0
7
- data.tar.gz: 46d0ef549da9cdfc57043b2563d1a4549abb44abffbe424228b18d97758e871e1ad279c9e5d8824d584a1ab66e43100a514c5ccb82fcce161280318d06762a53
6
+ metadata.gz: 13217cff868f2d1fb1d8dd7d0f0d149abeac5130db3740765dfaab4d178c0d95821e02406e270a6159e181591827fda9c5b9e903cf1313df07244cfefcc81329
7
+ data.tar.gz: 5a010dbc027c6c0c7295e2c63fd90a2a58deba458664c351410ad075e5ba9ca15f088ad44ca420dd31d6e3e6d26e1bda64f4750ba061f4c15737da456354acee
data/.gitignore CHANGED
@@ -1,4 +1,5 @@
1
1
  /.bundle/
2
+ /.vscode/
2
3
  /.yardoc
3
4
  /_yardoc/
4
5
  /coverage/
@@ -10,4 +11,6 @@
10
11
  # rspec failure tracking
11
12
  .rspec_status
12
13
 
14
+ .rubocop.yml
15
+
13
16
  Gemfile.lock
data/.standard.yml ADDED
@@ -0,0 +1,3 @@
1
+ ignore:
2
+ - '**/*':
3
+ - Layout/ExtraSpacing
data/Gemfile CHANGED
@@ -1,6 +1,9 @@
1
- source 'https://rubygems.org'
1
+ source "https://rubygems.org"
2
2
 
3
- git_source(:github) {|repo_name| 'https://github.com/#{repo_name}' }
3
+ git_source(:github) { |repo_name| "https://github.com/#{repo_name}" }
4
+
5
+ gem "guard"
6
+ gem "guard-rspec", require: false
4
7
 
5
8
  # Specify your gem's dependencies in shifty.gemspec
6
9
  gemspec
data/Guardfile ADDED
@@ -0,0 +1,42 @@
1
+ # A sample Guardfile
2
+ # More info at https://github.com/guard/guard#readme
3
+
4
+ ## Uncomment and set this to only include directories you want to watch
5
+ # directories %w(app lib config test spec features) \
6
+ # .select{|d| Dir.exist?(d) ? d : UI.warning("Directory #{d} does not exist")}
7
+
8
+ ## Note: if you are using the `directories` clause above and you are not
9
+ ## watching the project directory ('.'), then you will want to move
10
+ ## the Guardfile to a watched dir and symlink it back, e.g.
11
+ #
12
+ # $ mkdir config
13
+ # $ mv Guardfile config/
14
+ # $ ln -s config/Guardfile .
15
+ #
16
+ # and, you'll have to watch "config/Guardfile" instead of "Guardfile"
17
+
18
+ # Note: The cmd option is now required due to the increasing number of ways
19
+ # rspec may be run, below are examples of the most common uses.
20
+ # * bundler: 'bundle exec rspec'
21
+ # * bundler binstubs: 'bin/rspec'
22
+ # * spring: 'bin/rspec' (This will use spring if running and you have
23
+ # installed the spring binstubs per the docs)
24
+ # * zeus: 'zeus rspec' (requires the server to be started separately)
25
+ # * 'just' rspec: 'rspec'
26
+
27
+ guard :rspec, cmd: "bundle exec rspec" do
28
+ require "guard/rspec/dsl"
29
+ dsl = Guard::RSpec::Dsl.new(self)
30
+
31
+ # Feel free to open issues for suggestions and improvements
32
+
33
+ # RSpec files
34
+ rspec = dsl.rspec
35
+ watch(rspec.spec_helper) { rspec.spec_dir }
36
+ watch(rspec.spec_support) { rspec.spec_dir }
37
+ watch(rspec.spec_files)
38
+
39
+ # Ruby files
40
+ ruby = dsl.ruby
41
+ dsl.watch_spec_files_for(ruby.lib_files)
42
+ end
data/README.md CHANGED
@@ -1,5 +1,5 @@
1
1
  [![Gem Version](https://badge.fury.io/rb/shifty.svg)](https://badge.fury.io/rb/shifty)
2
- [![Build Status](https://travis-ci.org/joelhelbling/shifty.png)](https://travis-ci.org/joelhelbling/shifty)
2
+ [![Tests](https://github.com/joelhelbling/shifty/actions/workflows/ruby.yml/badge.svg)](https://github.com/joelhelbling/shifty/actions/workflows/ruby.yml)
3
3
  [![Maintainability](https://api.codeclimate.com/v1/badges/950ded888350c1124348/maintainability)](https://codeclimate.com/github/joelhelbling/shifty/maintainability)
4
4
  [![Test Coverage](https://api.codeclimate.com/v1/badges/950ded888350c1124348/test_coverage)](https://codeclimate.com/github/joelhelbling/shifty/test_coverage)
5
5
 
@@ -21,7 +21,7 @@ And then execute:
21
21
 
22
22
  Or install it yourself:
23
23
 
24
- $ gem install steplader
24
+ $ gem install shifty
25
25
 
26
26
  And then use it:
27
27
 
@@ -344,7 +344,7 @@ worker simply provides a nil.
344
344
 
345
345
  ## Origins of Shifty
346
346
 
347
- Shifty was Shifty, which grew out of experimentation with Ruby fibers, after reading
347
+ Shifty was [Stepladder](https://github.com/joelhelbling/stepladder), which grew out of experimentation with Ruby fibers, after reading
348
348
  [Dave Thomas' demo of Ruby fibers](http://pragdave.me/blog/2007/12/30/pipelines-using-fibers-in-ruby-19/),
349
349
  wherein he created a pipeline of fiber processes, emulating the style and syntax of the
350
350
  \*nix command line. I noticed that, courtesy of fibers' extremely low surface area,
data/Rakefile CHANGED
@@ -1,6 +1,7 @@
1
- require 'bundler/gem_tasks'
2
- require 'rspec/core/rake_task'
1
+ require "bundler/gem_tasks"
2
+ require "rspec/core/rake_task"
3
+ require "standard/rake"
3
4
 
4
5
  RSpec::Core::RakeTask.new(:spec)
5
6
 
6
- task :default => :spec
7
+ task default: :spec
data/_config.yml ADDED
@@ -0,0 +1 @@
1
+ theme: jekyll-theme-dinky
data/lib/shifty/dsl.rb CHANGED
@@ -2,7 +2,7 @@ module Shifty
2
2
  class WorkerInitializationError < StandardError; end
3
3
 
4
4
  module DSL
5
- def source_worker(argument=nil, &block)
5
+ def source_worker(argument = nil, &block)
6
6
  ensure_correct_arity_for!(argument, block)
7
7
 
8
8
  series = series_from(argument)
@@ -13,11 +13,10 @@ module Shifty
13
13
  Worker.new do
14
14
  series.each(&callable)
15
15
 
16
- while true do
16
+ loop do
17
17
  handoff nil
18
18
  end
19
19
  end
20
-
21
20
  end
22
21
 
23
22
  def relay_worker(&block)
@@ -28,10 +27,10 @@ module Shifty
28
27
  end
29
28
  end
30
29
 
31
- def side_worker(mode=:normal, &block)
30
+ def side_worker(mode = :normal, &block)
32
31
  ensure_regular_arity(block)
33
32
 
34
- Worker.new do |value|
33
+ Worker.new(tags: [:side_effect]) do |value|
35
34
  value.tap do |v|
36
35
  used_value = mode == :hardened ?
37
36
  Marshal.load(Marshal.dump(v)) : v
@@ -41,15 +40,15 @@ module Shifty
41
40
  end
42
41
  end
43
42
 
44
- def filter_worker(argument=nil, &block)
45
- if (block && argument.respond_to?(:call))
46
- throw_with 'You cannot supply two callables'
43
+ def filter_worker(argument = nil, &block)
44
+ if block && argument.respond_to?(:call)
45
+ throw_with "You cannot supply two callables"
47
46
  end
48
47
  callable = argument.respond_to?(:call) ? argument : block
49
48
  ensure_callable(callable)
50
49
 
51
50
  Worker.new do |value, supply|
52
- while value && !callable.call(value) do
51
+ while value && !callable.call(value)
53
52
  value = supply.shift
54
53
  end
55
54
  value
@@ -59,23 +58,23 @@ module Shifty
59
58
  class BatchContext < OpenStruct
60
59
  def batch_complete?(value, collection)
61
60
  value.nil? ||
62
- !! batch_full.call(value, collection)
61
+ !!batch_full.call(value, collection)
63
62
  end
64
63
  end
65
64
 
66
65
  def batch_worker(options = {gathering: 1}, &block)
67
66
  ensure_regular_arity(block) if block
68
67
  batch_full = block ||
69
- Proc.new { |_, batch| batch.size >= options[:gathering] }
68
+ proc { |_, batch| batch.size >= options[:gathering] }
70
69
 
71
- batch_context = BatchContext.new({ batch_full: batch_full })
70
+ batch_context = BatchContext.new({batch_full: batch_full})
72
71
 
73
72
  Worker.new(context: batch_context) do |value, supply, context|
74
73
  if value
75
74
  context.collection = [value]
76
75
  until context.batch_complete?(
77
- context.collection.last,
78
- context.collection
76
+ context.collection.last,
77
+ context.collection
79
78
  )
80
79
  context.collection << supply.shift
81
80
  end
@@ -92,7 +91,7 @@ module Shifty
92
91
  value
93
92
  else
94
93
  parts = [block.call(value)].flatten
95
- while parts.size > 1 do
94
+ while parts.size > 1
96
95
  handoff parts.shift
97
96
  end
98
97
  parts.shift
@@ -100,7 +99,7 @@ module Shifty
100
99
  end
101
100
  end
102
101
 
103
- def trailing_worker(trail_length=2)
102
+ def trailing_worker(trail_length = 2)
104
103
  trail = []
105
104
  Worker.new do |value, supply|
106
105
  if value
@@ -126,12 +125,12 @@ module Shifty
126
125
  private
127
126
 
128
127
  def throw_with(*msg)
129
- raise WorkerInitializationError.new([msg].flatten.join(' '))
128
+ raise WorkerInitializationError.new([msg].flatten.join(" "))
130
129
  end
131
130
 
132
131
  def ensure_callable(callable)
133
- unless callable && callable.respond_to?(:call)
134
- throw_with 'You must supply a callable'
132
+ unless callable&.respond_to?(:call)
133
+ throw_with "You must supply a callable"
135
134
  end
136
135
  end
137
136
 
@@ -147,20 +146,17 @@ module Shifty
147
146
  return unless block
148
147
  if argument
149
148
  ensure_regular_arity(block)
150
- else
151
- if block.arity > 0
152
- throw_with \
153
- 'Source worker cannot accept any arguments (arity == 0)'
154
- end
149
+ elsif block.arity > 0
150
+ throw_with \
151
+ "Source worker cannot accept any arguments (arity == 0)"
155
152
  end
156
153
  end
157
154
 
158
155
  def series_from(series)
159
156
  return if series.nil?
160
- case
161
- when series.respond_to?(:to_a)
157
+ if series.respond_to?(:to_a)
162
158
  series.to_a
163
- when series.respond_to?(:scan)
159
+ elsif series.respond_to?(:scan)
164
160
  series.scan(/./)
165
161
  else
166
162
  [series]
@@ -170,11 +166,10 @@ module Shifty
170
166
  def setup_callable_for(block, series)
171
167
  return block unless series
172
168
  if block
173
- return Proc.new { |value| handoff block.call(value) }
169
+ proc { |value| handoff block.call(value) }
174
170
  else
175
- return Proc.new { |value| handoff value }
171
+ proc { |value| handoff value }
176
172
  end
177
173
  end
178
-
179
174
  end
180
175
  end
data/lib/shifty/gang.rb CHANGED
@@ -1,46 +1,52 @@
1
- require 'shifty/roster'
1
+ require "shifty/roster"
2
+ require "shifty/taggable"
2
3
 
3
4
  module Shifty
4
5
  class Gang
5
- attr_accessor :workers
6
+ attr_reader :roster, :tags
6
7
 
7
- def initialize(workers=[])
8
- link(workers + [])
9
- end
8
+ include Taggable
10
9
 
11
- def roster
12
- workers
10
+ def initialize(workers = [], p = {})
11
+ @roster = Roster.new(workers)
12
+ self.criteria = p[:criteria]
13
+ self.tags = p[:tags]
13
14
  end
14
15
 
15
16
  def shift
16
- workers.last.shift
17
+ if criteria_passes?
18
+ roster.last.shift
19
+ else
20
+ roster.first.supply.shift
21
+ end
17
22
  end
18
23
 
19
24
  def ready_to_work?
20
- workers.first.ready_to_work?
25
+ roster.first.ready_to_work?
21
26
  end
22
27
 
23
28
  def supply
24
- workers.first.supply
29
+ roster.first.supply
25
30
  end
26
31
 
27
- def supply=(source_queue)
28
- workers.first.supply = source_queue
32
+ def supply=(supplier)
33
+ roster.first.supply = supplier
29
34
  end
30
35
 
31
- def supplies(subscribing_party)
32
- subscribing_party.supply = self
36
+ def supplies(subscribing_worker)
37
+ subscribing_worker.supply = self
38
+ subscribing_worker
33
39
  end
34
- alias_method :"|", :supplies
40
+ alias_method :|, :supplies
35
41
 
36
- private
42
+ def append(worker)
43
+ roster << worker
44
+ end
37
45
 
38
- def link(workers)
39
- @workers = [workers.shift]
40
- while worker = workers.shift do
41
- Roster[self] << worker
46
+ class << self
47
+ def [](*workers)
48
+ new workers
42
49
  end
43
50
  end
44
-
45
51
  end
46
52
  end
data/lib/shifty/roster.rb CHANGED
@@ -1,33 +1,30 @@
1
+ require "forwardable"
2
+
1
3
  module Shifty
2
- module Roster
3
- class << self
4
- def [](gang)
5
- RosterizedGang.new(gang)
6
- end
7
- end
8
- end
4
+ class Roster
5
+ extend Forwardable
9
6
 
10
- class RosterizedGang
11
- attr_reader :gang
7
+ attr_reader :workers
12
8
 
13
- def initialize(gang)
14
- @gang = gang
9
+ def initialize(workers = [])
10
+ @workers = []
11
+ workers.each do |worker|
12
+ push worker
13
+ end
15
14
  end
16
15
 
17
- def workers
18
- gang.workers
19
- end
16
+ def_delegators :workers, :first, :last
20
17
 
21
18
  def push(worker)
22
19
  if worker
23
- worker.supply = workers.last
20
+ worker.supply = workers.last unless workers.empty?
24
21
  workers << worker
25
22
  end
26
23
  end
27
- alias_method :"<<", :push
24
+ alias_method :<<, :push
28
25
 
29
26
  def pop
30
- gang.workers.pop.tap do |popped|
27
+ workers.pop.tap do |popped|
31
28
  popped.supply = nil
32
29
  end
33
30
  end
@@ -0,0 +1,21 @@
1
+ module Shifty
2
+ module Taggable
3
+ def tags=(tag_arg)
4
+ @tags = [tag_arg].flatten.compact
5
+ end
6
+
7
+ def criteria=(criteria_arg)
8
+ @criteria = [criteria_arg].flatten.compact
9
+ end
10
+
11
+ def has_tag?(tag)
12
+ @tags.include? tag
13
+ end
14
+
15
+ def criteria_passes?
16
+ return true if @criteria.empty?
17
+
18
+ @criteria.all? { |c| c.call(self) }
19
+ end
20
+ end
21
+ end
@@ -1,3 +1,3 @@
1
1
  module Shifty
2
- VERSION = "0.3.0"
2
+ VERSION = "0.4.1"
3
3
  end
data/lib/shifty/worker.rb CHANGED
@@ -1,18 +1,18 @@
1
- require 'ostruct'
1
+ require "ostruct"
2
+ require "shifty/taggable"
2
3
 
3
4
  module Shifty
4
5
  class Worker
5
- attr_reader :supply
6
-
7
- def initialize(p={}, &block)
8
- @supply = p[:supply]
9
- @task = block || p[:task]
10
- @context = p[:context] || OpenStruct.new
11
- # don't define default task here
12
- # because we want to allow for
13
- # an initialized worker to have
14
- # a task injected, including
15
- # method-based tasks.
6
+ attr_reader :supply, :tags
7
+
8
+ include Shifty::Taggable
9
+
10
+ def initialize(p = {}, &block)
11
+ @supply = p[:supply]
12
+ @task = block || p[:task]
13
+ @context = p[:context] || OpenStruct.new
14
+ self.criteria = p[:criteria]
15
+ self.tags = p[:tags]
16
16
  end
17
17
 
18
18
  def shift
@@ -24,11 +24,11 @@ module Shifty
24
24
  @task && (supply || !task_accepts_a_value?)
25
25
  end
26
26
 
27
- def supplies(subscribing_party)
28
- subscribing_party.supply = self
29
- subscribing_party
27
+ def supplies(subscribing_worker)
28
+ subscribing_worker.supply = self
29
+ subscribing_worker
30
30
  end
31
- alias_method :"|", :supplies
31
+ alias_method :|, :supplies
32
32
 
33
33
  def supply=(supplier)
34
34
  raise WorkerError.new("Worker is a source, and cannot accept a supply") unless suppliable?
@@ -50,16 +50,20 @@ module Shifty
50
50
  end
51
51
 
52
52
  def workflow
53
- @my_little_machine ||= Fiber.new do
53
+ @my_little_machine ||= Fiber.new {
54
54
  loop do
55
- value = supply && supply.shift
56
- Fiber.yield @task.call(value, supply, @context)
55
+ value = supply&.shift
56
+ if criteria_passes?
57
+ Fiber.yield @task.call(value, supply, @context)
58
+ else
59
+ Fiber.yield value
60
+ end
57
61
  end
58
- end
62
+ }
59
63
  end
60
64
 
61
65
  def default_task
62
- Proc.new { |value| value }
66
+ proc { |value| value }
63
67
  end
64
68
 
65
69
  def task_accepts_a_value?
@@ -67,13 +71,12 @@ module Shifty
67
71
  end
68
72
 
69
73
  def task_method_exists?
70
- self.methods.include? :task
74
+ methods.include? :task
71
75
  end
72
76
 
73
77
  def task_method_accepts_a_value?
74
- self.method(:task).arity > 0
78
+ method(:task).arity > 0
75
79
  end
76
-
77
80
  end
78
81
 
79
82
  class WorkerError < StandardError; end
data/lib/shifty.rb CHANGED
@@ -1,5 +1,5 @@
1
- require_relative 'shifty/version'
2
- require_relative 'shifty/worker'
3
- require_relative 'shifty/gang'
4
- require_relative 'shifty/roster'
5
- require_relative 'shifty/dsl'
1
+ require_relative "shifty/version"
2
+ require_relative "shifty/worker"
3
+ require_relative "shifty/gang"
4
+ require_relative "shifty/roster"
5
+ require_relative "shifty/dsl"
data/shifty.gemspec CHANGED
@@ -1,29 +1,29 @@
1
- lib = File.expand_path('../lib', __FILE__)
1
+ lib = File.expand_path("../lib", __FILE__)
2
2
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
- require 'shifty/version'
3
+ require "shifty/version"
4
4
 
5
5
  Gem::Specification.new do |spec|
6
- spec.name = 'shifty'
7
- spec.version = Shifty::VERSION
8
- spec.authors = ['Joel Helbling']
9
- spec.email = ['joel@joelhelbling.com']
6
+ spec.name = "shifty"
7
+ spec.version = Shifty::VERSION
8
+ spec.authors = ["Joel Helbling"]
9
+ spec.email = ["joel@joelhelbling.com"]
10
10
 
11
- spec.summary = %q{A functional framework aimed at extremely low coupling}
12
- spec.description = %q{Shifty provides tools for coordinating simple workers which consume a supplying queue and emit corresponding work products, valuing pure functions, carefully isolated side effects, and extremely low coupling.}
13
- spec.homepage = 'https://github.com/joelhelbling/shifty'
14
- spec.license = 'MIT'
11
+ spec.summary = "A functional framework aimed at extremely low coupling"
12
+ spec.description = "Shifty provides tools for coordinating simple workers which consume a supplying queue and emit corresponding work products, valuing pure functions, carefully isolated side effects, and extremely low coupling."
13
+ spec.homepage = "https://github.com/joelhelbling/shifty"
14
+ spec.license = "MIT"
15
15
 
16
- spec.files = `git ls-files -z`.split("\x0").reject do |f|
17
- f.match(%r{^(test|spec|features)/})
16
+ spec.files = `git ls-files -z`.split("\x0").reject do |f|
17
+ f.match(%r{^(test|spec|features|\.github|\.standard\.yml|Guardfile|_config\.yml)/})
18
18
  end
19
- spec.bindir = "exe"
20
- spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
19
+ spec.bindir = "exe"
20
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
21
21
  spec.require_paths = ["lib"]
22
22
 
23
- spec.add_development_dependency 'bundler', '~> 1.16'
24
- spec.add_development_dependency 'rake', '~> 10.0'
25
- spec.add_development_dependency 'rspec', '~> 3.1'
26
- spec.add_development_dependency 'rspec-given', '~> 3.8'
27
- spec.add_development_dependency 'pry'
28
- spec.add_development_dependency 'simplecov'
23
+ spec.add_development_dependency "rake"
24
+ spec.add_development_dependency "rspec", "~> 3.9"
25
+ spec.add_development_dependency "rspec-given", "~> 3.8"
26
+ spec.add_development_dependency "pry"
27
+ spec.add_development_dependency "standard", "~> 1.1"
28
+ spec.add_development_dependency "codeclimate-test-reporter"
29
29
  end
metadata CHANGED
@@ -1,57 +1,43 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: shifty
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.4.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Joel Helbling
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-04-01 00:00:00.000000000 Z
11
+ date: 2022-10-03 00:00:00.000000000 Z
12
12
  dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: bundler
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - "~>"
18
- - !ruby/object:Gem::Version
19
- version: '1.16'
20
- type: :development
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - "~>"
25
- - !ruby/object:Gem::Version
26
- version: '1.16'
27
13
  - !ruby/object:Gem::Dependency
28
14
  name: rake
29
15
  requirement: !ruby/object:Gem::Requirement
30
16
  requirements:
31
- - - "~>"
17
+ - - ">="
32
18
  - !ruby/object:Gem::Version
33
- version: '10.0'
19
+ version: '0'
34
20
  type: :development
35
21
  prerelease: false
36
22
  version_requirements: !ruby/object:Gem::Requirement
37
23
  requirements:
38
- - - "~>"
24
+ - - ">="
39
25
  - !ruby/object:Gem::Version
40
- version: '10.0'
26
+ version: '0'
41
27
  - !ruby/object:Gem::Dependency
42
28
  name: rspec
43
29
  requirement: !ruby/object:Gem::Requirement
44
30
  requirements:
45
31
  - - "~>"
46
32
  - !ruby/object:Gem::Version
47
- version: '3.1'
33
+ version: '3.9'
48
34
  type: :development
49
35
  prerelease: false
50
36
  version_requirements: !ruby/object:Gem::Requirement
51
37
  requirements:
52
38
  - - "~>"
53
39
  - !ruby/object:Gem::Version
54
- version: '3.1'
40
+ version: '3.9'
55
41
  - !ruby/object:Gem::Dependency
56
42
  name: rspec-given
57
43
  requirement: !ruby/object:Gem::Requirement
@@ -81,7 +67,21 @@ dependencies:
81
67
  - !ruby/object:Gem::Version
82
68
  version: '0'
83
69
  - !ruby/object:Gem::Dependency
84
- name: simplecov
70
+ name: standard
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '1.1'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '1.1'
83
+ - !ruby/object:Gem::Dependency
84
+ name: codeclimate-test-reporter
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
87
  - - ">="
@@ -105,11 +105,13 @@ extra_rdoc_files: []
105
105
  files:
106
106
  - ".gitignore"
107
107
  - ".rspec"
108
- - ".travis.yml"
108
+ - ".standard.yml"
109
109
  - Gemfile
110
+ - Guardfile
110
111
  - LICENSE.txt
111
112
  - README.md
112
113
  - Rakefile
114
+ - _config.yml
113
115
  - bin/console
114
116
  - bin/setup
115
117
  - docs/shifty/worker.md
@@ -117,6 +119,7 @@ files:
117
119
  - lib/shifty/dsl.rb
118
120
  - lib/shifty/gang.rb
119
121
  - lib/shifty/roster.rb
122
+ - lib/shifty/taggable.rb
120
123
  - lib/shifty/version.rb
121
124
  - lib/shifty/worker.rb
122
125
  - pkg/.gitkeep
@@ -125,7 +128,7 @@ homepage: https://github.com/joelhelbling/shifty
125
128
  licenses:
126
129
  - MIT
127
130
  metadata: {}
128
- post_install_message:
131
+ post_install_message:
129
132
  rdoc_options: []
130
133
  require_paths:
131
134
  - lib
@@ -140,9 +143,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
140
143
  - !ruby/object:Gem::Version
141
144
  version: '0'
142
145
  requirements: []
143
- rubyforge_project:
144
- rubygems_version: 2.7.3
145
- signing_key:
146
+ rubygems_version: 3.3.3
147
+ signing_key:
146
148
  specification_version: 4
147
149
  summary: A functional framework aimed at extremely low coupling
148
150
  test_files: []
data/.travis.yml DELETED
@@ -1,17 +0,0 @@
1
- env:
2
- global:
3
- - CC_TEST_REPORTER_ID=de10d77685b449162f3f3d568e1ab75d94c0f281afceee218502cf0995e49aa6
4
- sudo: false
5
- language: ruby
6
- rvm:
7
- - 2.5.0
8
- - jruby-19mode
9
- before_install: gem install bundler -v 1.16.1
10
- before_script:
11
- - curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter
12
- - chmod +x ./cc-test-reporter
13
- - ./cc-test-reporter before-build
14
- script:
15
- - bundle exec rspec
16
- after_script:
17
- - ./cc-test-reporter after-build --exit-code $TRAVIS_TEST_RESULT