diff --git a/Changes.md b/Changes.md index 345a5a81..e3b9b0e2 100644 --- a/Changes.md +++ b/Changes.md @@ -3,6 +3,8 @@ - Add queues list for each process to the Busy page. [davetoxa, #1897] - Fix for crash caused by empty config file. [jordan0day, #1901] +- Add worker generator. You can generate a worker and it test file with + `rails g sidekiq:worker User`, that will create UserWorker. [seuros, #1909] 3.2.2 ----------- diff --git a/lib/generators/sidekiq/templates/worker.rb.erb b/lib/generators/sidekiq/templates/worker.rb.erb new file mode 100644 index 00000000..b98f0863 --- /dev/null +++ b/lib/generators/sidekiq/templates/worker.rb.erb @@ -0,0 +1,9 @@ +<% module_namespacing do -%> +class <%= class_name %>Worker + include Sidekiq::Worker + + def perform(*args) + # Do something + end +end +<% end -%> \ No newline at end of file diff --git a/lib/generators/sidekiq/templates/worker_spec.rb.erb b/lib/generators/sidekiq/templates/worker_spec.rb.erb new file mode 100644 index 00000000..c1dc9910 --- /dev/null +++ b/lib/generators/sidekiq/templates/worker_spec.rb.erb @@ -0,0 +1,6 @@ +require 'rails_helper' +<% module_namespacing do -%> +RSpec.describe <%= class_name %>Worker, :type => :worker do + pending "add some examples to (or delete) #{__FILE__}" +end +<% end -%> \ No newline at end of file diff --git a/lib/generators/sidekiq/templates/worker_test.rb.erb b/lib/generators/sidekiq/templates/worker_test.rb.erb new file mode 100644 index 00000000..768bb921 --- /dev/null +++ b/lib/generators/sidekiq/templates/worker_test.rb.erb @@ -0,0 +1,8 @@ +require_relative 'test_helper' +<% module_namespacing do -%> +class <%= class_name %>WorkerTest < MiniTest::Unit::TestCase + def test_example + skip "add some examples to (or delete) #{__FILE__}" + end +end +<% end -%> \ No newline at end of file diff --git a/lib/generators/sidekiq/worker_generator.rb b/lib/generators/sidekiq/worker_generator.rb new file mode 100644 index 00000000..29603b9d --- /dev/null +++ b/lib/generators/sidekiq/worker_generator.rb @@ -0,0 +1,49 @@ +require 'rails/generators/named_base' + +module Sidekiq + module Generators # :nodoc: + class WorkerGenerator < ::Rails::Generators::NamedBase # :nodoc: + desc 'This generator creates a sidekiq worker file at app/workers' + + check_class_collision suffix: 'Worker' + + def self.default_generator_root + File.dirname(__FILE__) + end + + def create_worker_file + template 'worker.rb.erb', File.join('app/workers', class_path, "#{file_name}_worker.rb") + end + + def create_test_file + if defined?(RSpec) + create_worker_spec + else + create_worker_test + end + end + + private + + def create_worker_spec + template_file = File.join( + 'spec/workers', + class_path, + "#{file_name}_spec.rb" + ) + template 'worker_spec.rb.erb', template_file + end + + def create_worker_test + template_file = File.join( + 'test/workers', + class_path, + "#{file_name}_test.rb" + ) + template 'worker_test.rb.erb', template_file + end + + + end + end +end