oops_a_rake 0.1.0 → 0.2.0

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: 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