oops_a_rake 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6122dbeca5b52f5299d5213a706c658ce6c1e3943fc7affb1e5c3f78c0157d4d
4
- data.tar.gz: bffe2ce604a67dbcbecf2f41890737e754944765a70248c1aa9340df54fa179f
3
+ metadata.gz: 0f45164adb42dbe7b6b5c24b4d1f4a2442c57ee984afe1ee930ef1d9d85d0729
4
+ data.tar.gz: 19702491324b809b66bd04b54df91b7f2809d7156a788768b6d4a1b490adeba4
5
5
  SHA512:
6
- metadata.gz: 58b3a32e770b27fc4c5d5022ea853075a05ec6ab14ea23cecf86574d65b1b740772fac8adf076d7718f39916a640e93b78bdafbb046ae17c29e93c9837f5ea50
7
- data.tar.gz: 6042433cb2eacbefa096f8a9197172e2fb3bd3e77bf7bebd98889639cf370ae3a7d2a2b1575f5f1a4aaf9a858af1f4508dd17fc81ecc85d8aaaa753eef712760
6
+ metadata.gz: 201e37e643607efb1436fd965505fd154ff1695b65d69752fee8220e8b85b9f875f7f5c7778ffb13d70198eede2e47f9d00b639b7dd99fee34a196c4da449ae6
7
+ data.tar.gz: cec98c2d2d9eb9e07673b3c83bfb40b2af97431aa22ea8a3985b8549df9ed8e1f9d6e08e6ab73f546443a4b33c62465b119483c884b2aa0f33fec07e21efd6a1
@@ -0,0 +1,17 @@
1
+ ---
2
+ on:
3
+ pull_request:
4
+ push:
5
+ branches:
6
+ - master
7
+
8
+ jobs:
9
+ test:
10
+ runs-on: ubuntu-latest
11
+ steps:
12
+ - uses: actions/checkout@v2
13
+ - uses: ruby/setup-ruby@v1
14
+ with:
15
+ bundler-cache: true
16
+ - name: Test
17
+ run: bundle exec rspec
@@ -0,0 +1 @@
1
+ 2.7.2
@@ -0,0 +1,11 @@
1
+ # Changelog
2
+
3
+ ## Unreleased
4
+
5
+ ## v0.2.0
6
+
7
+ - Support custom task names
8
+
9
+ ## v0.1.0
10
+
11
+ - Initial release
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- oops_a_rake (0.1.0)
4
+ oops_a_rake (0.2.0)
5
5
  activesupport (>= 5.2)
6
6
  rake (>= 12.0)
7
7
 
@@ -39,7 +39,7 @@ GEM
39
39
  rspec-support (~> 3.10.0)
40
40
  rspec-support (3.10.0)
41
41
  thread_safe (0.3.6)
42
- tzinfo (1.2.7)
42
+ tzinfo (1.2.8)
43
43
  thread_safe (~> 0.1)
44
44
  zeitwerk (2.4.1)
45
45
 
data/README.md CHANGED
@@ -110,6 +110,24 @@ Invocation:
110
110
  bundle exec rake admin:special
111
111
  ```
112
112
 
113
+ ### Task with a custom name
114
+
115
+ ```ruby
116
+ class ObscureClassNameTask do
117
+ include OopsARake::Task.with_options(name: "custom_name")
118
+
119
+ def call
120
+ puts "Hello"
121
+ end
122
+ end
123
+ ```
124
+
125
+ Invocation:
126
+
127
+ ```sh
128
+ bundle exec rake custom_name
129
+ ```
130
+
113
131
  ## Motivation
114
132
 
115
133
  Rake is an omnipresent tool in the Ruby world. It has some drawbacks – the main
@@ -124,7 +142,7 @@ call a plain Ruby object, which is tested in isolation:
124
142
 
125
143
  ```ruby
126
144
  task :greeting do |_, args|
127
- GreetingTask.new(*args).call
145
+ SomeObject.new(*args).call
128
146
  end
129
147
  ```
130
148
 
@@ -6,9 +6,7 @@ module OopsARake
6
6
  @tasks = {}
7
7
 
8
8
  def self.register(task_class)
9
- task_name = task_class.name.underscore.gsub("/", ":").delete_suffix("_task")
10
-
11
- task = Rake::Task.define_task(task_name) do |_, args|
9
+ task = Rake::Task.define_task(task_class.task_name) do |_, args|
12
10
  task_class.new.call(*args)
13
11
  end
14
12
 
@@ -3,11 +3,32 @@ require_relative "registry"
3
3
  module OopsARake
4
4
  module Task
5
5
  def self.included(klass)
6
- Registry::register(klass)
7
6
  klass.extend(ClassMethods)
7
+ Registry::register(klass)
8
+ end
9
+
10
+ def self.with_options(name:)
11
+ module_name = "#{name.gsub(":", "_").classify}ClassMethods"
12
+ mod = const_set(module_name, Module.new)
13
+
14
+ mod.define_singleton_method(:included) do |klass|
15
+ klass.define_singleton_method(:task_name) { name }
16
+ klass.extend(ClassMethods)
17
+ Registry::register(klass)
18
+ end
19
+
20
+ mod
8
21
  end
9
22
 
10
23
  module ClassMethods
24
+ def task_name
25
+ if defined?(super)
26
+ super
27
+ else
28
+ name.underscore.gsub("/", ":").delete_suffix("_task")
29
+ end
30
+ end
31
+
11
32
  def description(description)
12
33
  task.comment = description
13
34
  end
@@ -1,3 +1,3 @@
1
1
  module OopsARake
2
- VERSION = "0.1.0"
2
+ VERSION = "0.2.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: oops_a_rake
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Oliver Peate
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-11-04 00:00:00.000000000 Z
11
+ date: 2020-11-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -72,8 +72,11 @@ executables: []
72
72
  extensions: []
73
73
  extra_rdoc_files: []
74
74
  files:
75
+ - ".github/workflows/main.yml"
75
76
  - ".gitignore"
76
77
  - ".rspec"
78
+ - ".ruby-version"
79
+ - CHANGELOG.md
77
80
  - Gemfile
78
81
  - Gemfile.lock
79
82
  - LICENSE.txt
@@ -105,7 +108,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
105
108
  - !ruby/object:Gem::Version
106
109
  version: '0'
107
110
  requirements: []
108
- rubygems_version: 3.0.3
111
+ rubygems_version: 3.1.4
109
112
  signing_key:
110
113
  specification_version: 4
111
114
  summary: Write Rake tasks with plain Ruby objects