Skip to content

Commit 062a861

Browse files
committed
Minor code cleanup
1 parent fbf7fe7 commit 062a861

File tree

9 files changed

+104
-93
lines changed

9 files changed

+104
-93
lines changed

Gemfile

+3-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
1-
source "http://rubygems.org"
1+
# frozen_string_literal: true
2+
3+
source 'http://rubygems.org'
24

35
# Specify your gem's dependencies in redis-queue.gemspec
46
gemspec

Rakefile

+6-4
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
1-
require "bundler/gem_tasks"
2-
require "rspec/core/rake_task"
1+
# frozen_string_literal: true
2+
3+
require 'bundler/gem_tasks'
4+
require 'rspec/core/rake_task'
35

46
RSpec::Core::RakeTask.new(:spec) do |spec|
57
spec.pattern = 'spec/*_spec.rb'
68
end
79

8-
task :default => :spec
9-
task :test => :spec
10+
task default: :spec
11+
task test: :spec

example/blocking.rb

+13-13
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,25 @@
1-
require "redis-queue"
2-
require "thread"
1+
# frozen_string_literal: true
32

3+
require 'redis-queue'
44
redis = Redis.new
5-
#Create a queue that will listen for a new element for 10 seconds
6-
queue = Redis::Queue.new('__test', 'bp__test', :redis => redis, :timeout => 10)
7-
queue.clear true
5+
# Create a queue that will listen for a new element for 10 seconds
6+
queue = Redis::Queue.new('__test', 'bp__test', redis: redis, timeout: 10)
7+
queue.clear true
88

99
100.times { queue << rand(100) }
1010

1111
# Simulate a delayed insert
1212
t = Thread.new do
1313
sleep 3
14-
# We should use a second connection here since the first one is busy
15-
# on a blocking call
16-
_redis = Redis.new
17-
_queue = Redis::Queue.new('__test', 'bp__test', :redis => _redis)
18-
100.times { _queue << "e_#{rand(100)}" }
14+
# We should use a second connection here since the first one is busy
15+
# on a blocking call
16+
other_redis = Redis.new
17+
other_queue = Redis::Queue.new('__test', 'bp__test', redis: other_redis)
18+
100.times { other_queue << "e_#{rand(100)}" }
1919
end
2020

21-
#When all elements are dequeud, process method will wait for 10 secods before exit
21+
# When all elements are dequeud, process method will wait for 10 secods before exit
2222
queue.process do |message|
23-
puts "'#{message}'"
23+
puts "'#{message}'"
2424
end
25-
t.join
25+
t.join

example/non-blocking.rb

+5-3
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
1-
require "redis-queue"
1+
# frozen_string_literal: true
2+
3+
require 'redis-queue'
24

35
redis = Redis.new
46

5-
queue = Redis::Queue.new('__test', 'bp__test', :redis => redis)
7+
queue = Redis::Queue.new('__test', 'bp__test', redis: redis)
68
queue.clear true
79

810
100.times { queue << rand(100) }
911

10-
queue.process(true) {|m| puts m}
12+
queue.process(true) { |m| puts m }

lib/redis-queue.rb

+5-3
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1-
require "redis"
2-
require "redis/connection/hiredis"
3-
require "redis/queue"
1+
# frozen_string_literal: true
2+
3+
require 'redis'
4+
require 'redis/connection/hiredis'
5+
require 'redis/queue'

lib/redis/queue.rb

+19-19
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
1+
# frozen_string_literal: true
2+
13
class Redis
24
class Queue
3-
4-
VERSION = "0.0.4"
5+
VERSION = '0.0.4'
56

67
def self.version
78
"redis-queue version #{VERSION}"
@@ -10,7 +11,7 @@ def self.version
1011
def initialize(queue_name, process_queue_name, options = {})
1112
raise ArgumentError, 'First argument must be a non empty string' if !queue_name.is_a?(String) || queue_name.empty?
1213
raise ArgumentError, 'Second argument must be a non empty string' if !process_queue_name.is_a?(String) || process_queue_name.empty?
13-
raise ArgumentError, 'Queue and Process queue have the same name' if process_queue_name == queue_name
14+
raise ArgumentError, 'Queue and Process queue have the same name' if process_queue_name == queue_name
1415

1516
@redis = options[:redis] || Redis.current
1617
@queue_name = queue_name
@@ -29,48 +30,47 @@ def clear(clear_process_queue = false)
2930
end
3031

3132
def empty?
32-
!(length > 0)
33+
length <= 0
3334
end
3435

3536
def push(obj)
3637
@redis.lpush(@queue_name, obj)
3738
end
3839

39-
def pop(non_block=false)
40-
if non_block
41-
@last_message = @redis.rpoplpush(@queue_name,@process_queue_name)
42-
else
43-
@last_message = @redis.brpoplpush(@queue_name,@process_queue_name, @timeout)
44-
end
40+
def pop(non_block = false)
41+
@last_message = if non_block
42+
@redis.rpoplpush(@queue_name, @process_queue_name)
43+
else
44+
@redis.brpoplpush(@queue_name, @process_queue_name, @timeout)
45+
end
4546
@last_message
4647
end
4748

4849
def commit
4950
@redis.lrem(@process_queue_name, 0, @last_message)
5051
end
5152

52-
def process(non_block=false, timeout = nil)
53+
def process(non_block = false, timeout = nil)
5354
@timeout = timeout unless timeout.nil?
5455
loop do
5556
message = pop(non_block)
5657
ret = yield message if block_given?
5758
commit if ret
5859
break if message.nil? || (non_block && empty?)
5960
end
60-
6161
end
6262

6363
def refill
64-
while message=@redis.lpop(@process_queue_name)
64+
while (message = @redis.lpop(@process_queue_name))
6565
@redis.rpush(@queue_name, message)
6666
end
6767
true
6868
end
6969

70-
alias :size :length
71-
alias :dec :pop
72-
alias :shift :pop
73-
alias :enc :push
74-
alias :<< :push
70+
alias size length
71+
alias dec pop
72+
alias shift pop
73+
alias enc push
74+
alias << push
7575
end
76-
end
76+
end

redis-queue.gemspec

+15-13
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,32 @@
11
# -*- encoding: utf-8 -*-
2-
require File.expand_path('../lib/redis/queue', __FILE__)
2+
# frozen_string_literal: true
3+
4+
require File.expand_path('lib/redis/queue', __dir__)
35

46
Gem::Specification.new do |s|
5-
s.name = "redis-queue"
7+
s.name = 'redis-queue'
68
s.version = Redis::Queue::VERSION
7-
s.authors = ["Francesco Laurita"]
8-
s.email = ["[email protected]"]
9-
s.homepage = "https://github.com/taganaka/redis-queue"
10-
s.summary = %q{A distributed queue based on Redis}
11-
s.description = %q{
9+
s.authors = ['Francesco Laurita']
10+
s.email = ['[email protected]']
11+
s.homepage = 'https://github.com/taganaka/redis-queue'
12+
s.summary = 'A distributed queue based on Redis'
13+
s.description = '
1214
Adds Redis::Queue class which can be used as Distributed-Queue based on Redis.
1315
Redis is often used as a messaging server to implement processing of background jobs or other kinds of messaging tasks.
1416
It implements Reliable-queue pattern decribed here: http://redis.io/commands/rpoplpush
15-
}
17+
'
1618

17-
s.licenses = ["MIT"]
19+
s.licenses = ['MIT']
1820

19-
s.rubyforge_project = "redis-queue"
21+
s.rubyforge_project = 'redis-queue'
2022

2123
s.files = `git ls-files`.split("\n")
2224
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
23-
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
24-
s.require_paths = ["lib"]
25+
s.executables = `git ls-files -- bin/*`.split("\n").map { |f| File.basename(f) }
26+
s.require_paths = ['lib']
2527

26-
s.add_runtime_dependency 'redis', '>= 3.3.5', '< 5'
2728
s.add_runtime_dependency 'hiredis', '~> 0.6'
29+
s.add_runtime_dependency 'redis', '>= 3.3.5', '< 5'
2830

2931
s.add_development_dependency 'rspec', '~> 2.13', '>= 2.13.0'
3032
end

spec/redis_queue_spec.rb

+33-33
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
1+
# frozen_string_literal: true
2+
13
require 'spec_helper'
2-
require "timeout"
4+
require 'timeout'
35

46
describe Redis::Queue do
57
before(:all) do
68
@redis = Redis.new
79
@queue = Redis::Queue.new('__test', 'bp__test')
8-
@queue.clear true
10+
@queue.clear true
911
end
1012

1113
after(:all) do
@@ -22,34 +24,34 @@
2224
end
2325

2426
it 'should add an element to the queue' do
25-
@queue << "a"
27+
@queue << 'a'
2628
@queue.size.should be == 1
2729
end
2830

2931
it 'should return an element from the queue' do
3032
message = @queue.pop(true)
31-
message.should be == "a"
33+
message.should be == 'a'
3234
end
3335

34-
it 'should remove the element from bp_queue if commit is called' do
36+
it 'should remove the element from bp_queue if commit is called' do
3537
@redis.llen('bp__test').should be == 1
3638
@queue.commit
3739
@redis.llen('bp__test').should be == 0
3840
end
3941

4042
it 'should implements fifo pattern' do
4143
@queue.clear
42-
payload = %w(a b c d e)
43-
payload.each {|e| @queue << e}
44+
payload = %w[a b c d e]
45+
payload.each { |e| @queue << e }
4446
test = []
45-
while e=@queue.pop(true)
47+
while (e = @queue.pop(true))
4648
test << e
4749
end
4850
payload.should be == test
4951
end
5052

5153
it 'should remove all of the elements from the main queue' do
52-
%w(a b c d e).each {|e| @queue << e}
54+
%w[a b c d e].each { |e| @queue << e }
5355
@queue.size.should be > 0
5456
@queue.pop(true)
5557
@queue.clear
@@ -62,25 +64,25 @@
6264
end
6365

6466
it 'should prcess a message' do
65-
@queue << "a"
66-
@queue.process(true){|m|m.should be == "a"; true}
67+
@queue << 'a'
68+
@queue.process(true) { |m| m.should be == 'a'; true }
6769
end
6870

6971
it 'should prcess a message leaving it into the bp_queue' do
70-
@queue << "a"
71-
@queue << "a"
72-
@queue.process(true){|m|m.should be == "a"; false}
73-
@redis.lrange('bp__test',0, -1).should be == ['a', 'a']
72+
@queue << 'a'
73+
@queue << 'a'
74+
@queue.process(true) { |m| m.should be == 'a'; false }
75+
@redis.lrange('bp__test', 0, -1).should be == %w[a a]
7476
end
7577

7678
it 'should refill a main queue' do
7779
@queue.clear(true)
78-
@queue << "a"
79-
@queue << "a"
80-
@queue.process(true){|m|m.should be == "a"; false}
81-
@redis.lrange('bp__test',0, -1).should be == ['a', 'a']
80+
@queue << 'a'
81+
@queue << 'a'
82+
@queue.process(true) { |m| m.should be == 'a'; false }
83+
@redis.lrange('bp__test', 0, -1).should be == %w[a a]
8284
@queue.refill
83-
@redis.lrange('__test',0, -1).should be == ['a', 'a']
85+
@redis.lrange('__test', 0, -1).should be == %w[a a]
8486
@redis.llen('bp__test').should be == 0
8587
end
8688

@@ -89,32 +91,30 @@
8991
2.times { @queue << rand(100) }
9092
is_ok = true
9193
begin
92-
Timeout::timeout(3) {
93-
@queue.process(false, 2) {|m| true}
94-
}
95-
rescue Timeout::Error => e
94+
Timeout.timeout(3) do
95+
@queue.process(false, 2) { |_m| true }
96+
end
97+
rescue Timeout::Error => _e
9698
is_ok = false
9799
end
98-
99-
is_ok.should be_true
100100

101+
is_ok.should be_truthy
101102
end
102103

103104
it 'should honor the timeout param in the initializer' do
104105
redis = Redis.new
105-
queue = Redis::Queue.new('__test_tm', 'bp__test_tm', :redis => redis, :timeout => 2)
106+
queue = Redis::Queue.new('__test_tm', 'bp__test_tm', redis: redis, timeout: 2)
106107
queue.clear true
107108

108109
is_ok = true
109110
begin
110-
Timeout::timeout(4) {
111+
Timeout.timeout(4) do
111112
queue.pop
112-
}
113-
rescue Timeout::Error => e
113+
end
114+
rescue Timeout::Error => _e
114115
is_ok = false
115116
end
116117
queue.clear
117-
is_ok.should be_true
118+
is_ok.should be_truthy
118119
end
119-
120-
end
120+
end

spec/spec_helper.rb

+5-4
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
1+
# frozen_string_literal: true
2+
13
require 'rubygems'
24
require 'bundler'
35
require 'rspec'
46

5-
67
RSpec.configure do |config|
7-
config.color_enabled = true
8+
config.color = true
89
end
910

10-
$:.unshift File.join(File.dirname(__FILE__), '..', 'lib')
11-
require 'redis-queue'
11+
$LOAD_PATH.unshift File.join(File.dirname(__FILE__), '..', 'lib')
12+
require 'redis-queue'

0 commit comments

Comments
 (0)