Skip to content

Commit

Permalink
[Feature] Sidekiq worker generator
Browse files Browse the repository at this point in the history
  • Loading branch information
seuros committed Aug 22, 2014
1 parent 95d5998 commit 1e6aa90
Show file tree
Hide file tree
Showing 5 changed files with 74 additions and 0 deletions.
2 changes: 2 additions & 0 deletions Changes.md
Expand Up @@ -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
-----------
Expand Down
9 changes: 9 additions & 0 deletions 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 -%>
6 changes: 6 additions & 0 deletions 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 -%>
8 changes: 8 additions & 0 deletions 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 -%>
49 changes: 49 additions & 0 deletions 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

0 comments on commit 1e6aa90

Please sign in to comment.