Skip to content

Commit 9bf3a87

Browse files
committed
Future-proof custom module interface
1 parent f6aa2af commit 9bf3a87

File tree

3 files changed

+14
-10
lines changed

3 files changed

+14
-10
lines changed

README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@ bundle exec rake admin:special
114114

115115
```ruby
116116
class ObscureClassNameTask do
117-
include OopsARake::Task.with_name("custom_name")
117+
include OopsARake::Task.with_options(name: "custom_name")
118118

119119
def call
120120
puts "Hello"

lib/oops_a_rake/task.rb

+9-5
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,13 @@ def self.included(klass)
77
Registry::register(klass)
88
end
99

10-
def self.with_name(custom_task_name)
11-
module_name = "#{custom_task_name.gsub(":", "_").classify}ClassMethods"
10+
def self.with_options(name:)
11+
module_name = "#{name.gsub(":", "_").classify}ClassMethods"
1212
mod = const_set(module_name, Module.new)
1313

1414
mod.define_singleton_method(:included) do |klass|
15-
klass.extend(OopsARake::Task::ClassMethods)
16-
klass.define_singleton_method(:task_name) { custom_task_name }
15+
klass.define_singleton_method(:task_name) { name }
16+
klass.extend(ClassMethods)
1717
Registry::register(klass)
1818
end
1919

@@ -22,7 +22,11 @@ def self.with_name(custom_task_name)
2222

2323
module ClassMethods
2424
def task_name
25-
name.underscore.gsub("/", ":").delete_suffix("_task")
25+
if defined?(super)
26+
super
27+
else
28+
name.underscore.gsub("/", ":").delete_suffix("_task")
29+
end
2630
end
2731

2832
def description(description)

spec/lib/oops_a_rake/task_spec.rb

+4-4
Original file line numberDiff line numberDiff line change
@@ -92,10 +92,10 @@ def call
9292
expect(Rake::Task["well_documented"].comment).to eq("Informative")
9393
end
9494

95-
describe "custom task name" do
95+
describe "::with_options" do
9696
it "allows tasks to specify a custom name" do
9797
define_class("ObscureClassNameTask") do
98-
include OopsARake::Task.with_name("clear_name")
98+
include OopsARake::Task.with_options(name: "clear_name")
9999

100100
def call
101101
puts "Hello"
@@ -108,7 +108,7 @@ def call
108108

109109
it "provides access to the task name from the class" do
110110
define_class("ObscureClassNameTask") do
111-
include OopsARake::Task.with_name("custom_name")
111+
include OopsARake::Task.with_options(name: "custom_name")
112112

113113
def call
114114
end
@@ -119,7 +119,7 @@ def call
119119

120120
it "names the module" do
121121
define_class("ObscureClassNameTask") do
122-
include OopsARake::Task.with_name("foo:bar_baz")
122+
include OopsARake::Task.with_options(name: "foo:bar_baz")
123123

124124
def call
125125
end

0 commit comments

Comments
 (0)