Commit c7bb3a1f726be189ccce51bdd631b26eb4f64db1
1 parent
7bfd38ea
Exists in
master
and in
4 other branches
sidekiq
Showing
14 changed files
with
75 additions
and
94 deletions
Show diff stats
Gemfile
... | ... | @@ -81,8 +81,10 @@ gem "acts-as-taggable-on", "2.3.3" |
81 | 81 | gem "draper", "~> 0.18.0" |
82 | 82 | |
83 | 83 | # Background jobs |
84 | -gem "resque", git: "https://github.com/gitlabhq/resque.git", ref: "9ef4700306dd946a3ac000612428967ce0c32213" | |
85 | -gem 'resque_mailer' | |
84 | +gem 'slim' | |
85 | +gem 'sinatra', :require => nil | |
86 | +gem 'sidekiq', '2.6.4' | |
87 | +gem 'sidekiq_mailer' | |
86 | 88 | |
87 | 89 | # HTTP requests |
88 | 90 | gem "httparty" |
... | ... | @@ -157,7 +159,6 @@ group :test do |
157 | 159 | gem "simplecov", require: false |
158 | 160 | gem "shoulda-matchers", "1.3.0" |
159 | 161 | gem 'email_spec' |
160 | - gem 'resque_spec' | |
161 | 162 | gem "webmock" |
162 | 163 | gem 'test_after_commit' |
163 | 164 | end | ... | ... |
Gemfile.lock
... | ... | @@ -55,17 +55,6 @@ GIT |
55 | 55 | raphael-rails (2.1.0) |
56 | 56 | |
57 | 57 | GIT |
58 | - remote: https://github.com/gitlabhq/resque.git | |
59 | - revision: 9ef4700306dd946a3ac000612428967ce0c32213 | |
60 | - ref: 9ef4700306dd946a3ac000612428967ce0c32213 | |
61 | - specs: | |
62 | - resque (2.0.0.pre.1) | |
63 | - json | |
64 | - redis-namespace (~> 1.0) | |
65 | - sinatra (>= 0.9.2) | |
66 | - vegas (~> 0.1.2) | |
67 | - | |
68 | -GIT | |
69 | 58 | remote: https://github.com/jonleighton/poltergeist.git |
70 | 59 | revision: 5c2e092001074a8cf09f332d3714e9ba150bc8ca |
71 | 60 | ref: 5c2e092001074a8cf09f332d3714e9ba150bc8ca |
... | ... | @@ -132,6 +121,9 @@ GEM |
132 | 121 | carrierwave (0.7.1) |
133 | 122 | activemodel (>= 3.2.0) |
134 | 123 | activesupport (>= 3.2.0) |
124 | + celluloid (0.12.4) | |
125 | + facter (>= 1.6.12) | |
126 | + timers (>= 1.0.0) | |
135 | 127 | charlock_holmes (0.6.9) |
136 | 128 | childprocess (0.3.6) |
137 | 129 | ffi (~> 1.0, >= 1.0.6) |
... | ... | @@ -150,6 +142,7 @@ GEM |
150 | 142 | coffee-script-source (1.4.0) |
151 | 143 | colored (1.2) |
152 | 144 | colorize (0.5.8) |
145 | + connection_pool (1.0.0) | |
153 | 146 | crack (0.3.1) |
154 | 147 | daemons (1.1.9) |
155 | 148 | devise (2.1.2) |
... | ... | @@ -169,6 +162,7 @@ GEM |
169 | 162 | eventmachine (1.0.0) |
170 | 163 | execjs (1.4.0) |
171 | 164 | multi_json (~> 1.0) |
165 | + facter (1.6.17) | |
172 | 166 | factory_girl (4.1.0) |
173 | 167 | activesupport (>= 3.0.0) |
174 | 168 | factory_girl_rails (4.1.0) |
... | ... | @@ -370,11 +364,6 @@ GEM |
370 | 364 | redis (3.0.2) |
371 | 365 | redis-namespace (1.2.1) |
372 | 366 | redis (~> 3.0.0) |
373 | - resque_mailer (2.1.0) | |
374 | - actionmailer (~> 3.0) | |
375 | - resque_spec (0.12.5) | |
376 | - resque (>= 1.19.0) | |
377 | - rspec (>= 2.5.0) | |
378 | 367 | rspec (2.12.0) |
379 | 368 | rspec-core (~> 2.12.0) |
380 | 369 | rspec-expectations (~> 2.12.0) |
... | ... | @@ -412,6 +401,16 @@ GEM |
412 | 401 | sexp_processor (4.1.3) |
413 | 402 | shoulda-matchers (1.3.0) |
414 | 403 | activesupport (>= 3.0.0) |
404 | + sidekiq (2.6.4) | |
405 | + celluloid (~> 0.12.0) | |
406 | + connection_pool (~> 1.0) | |
407 | + multi_json (~> 1) | |
408 | + redis (~> 3) | |
409 | + redis-namespace | |
410 | + sidekiq_mailer (0.0.4) | |
411 | + actionmailer (~> 3.0) | |
412 | + activesupport (~> 3.0) | |
413 | + sidekiq (~> 2.3) | |
415 | 414 | simplecov (0.7.1) |
416 | 415 | multi_json (~> 1.0) |
417 | 416 | simplecov-html (~> 0.7.1) |
... | ... | @@ -421,6 +420,9 @@ GEM |
421 | 420 | rack-protection (~> 1.2) |
422 | 421 | tilt (~> 1.3, >= 1.3.3) |
423 | 422 | six (0.2.0) |
423 | + slim (1.3.6) | |
424 | + temple (~> 0.5.5) | |
425 | + tilt (~> 1.3.3) | |
424 | 426 | slop (3.3.3) |
425 | 427 | spinach (0.5.2) |
426 | 428 | colorize |
... | ... | @@ -435,6 +437,7 @@ GEM |
435 | 437 | rack (~> 1.0) |
436 | 438 | tilt (~> 1.1, != 1.3.0) |
437 | 439 | stamp (0.3.0) |
440 | + temple (0.5.5) | |
438 | 441 | test_after_commit (0.0.1) |
439 | 442 | therubyracer (0.10.2) |
440 | 443 | libv8 (~> 3.3.10) |
... | ... | @@ -444,6 +447,7 @@ GEM |
444 | 447 | rack (>= 1.0.0) |
445 | 448 | thor (0.16.0) |
446 | 449 | tilt (1.3.3) |
450 | + timers (1.0.2) | |
447 | 451 | treetop (1.4.12) |
448 | 452 | polyglot |
449 | 453 | polyglot (>= 0.3.1) |
... | ... | @@ -455,8 +459,6 @@ GEM |
455 | 459 | kgio (~> 2.6) |
456 | 460 | rack |
457 | 461 | raindrops (~> 0.7) |
458 | - vegas (0.1.11) | |
459 | - rack (>= 1.0.0) | |
460 | 462 | virtus (0.5.2) |
461 | 463 | backports (~> 2.6.1) |
462 | 464 | warden (1.2.1) |
... | ... | @@ -534,17 +536,18 @@ DEPENDENCIES |
534 | 536 | rb-fsevent |
535 | 537 | rb-inotify |
536 | 538 | redcarpet (~> 2.2.2) |
537 | - resque! | |
538 | - resque_mailer | |
539 | - resque_spec | |
540 | 539 | rspec-rails |
541 | 540 | sass-rails (~> 3.2.5) |
542 | 541 | sdoc |
543 | 542 | seed-fu |
544 | 543 | settingslogic |
545 | 544 | shoulda-matchers (= 1.3.0) |
545 | + sidekiq (= 2.6.4) | |
546 | + sidekiq_mailer | |
546 | 547 | simplecov |
548 | + sinatra | |
547 | 549 | six |
550 | + slim | |
548 | 551 | spinach-rails |
549 | 552 | stamp |
550 | 553 | test_after_commit | ... | ... |
Procfile
app/controllers/admin/dashboard_controller.rb
... | ... | @@ -3,10 +3,6 @@ class Admin::DashboardController < AdminController |
3 | 3 | @projects = Project.order("created_at DESC").limit(10) |
4 | 4 | @users = User.order("created_at DESC").limit(10) |
5 | 5 | |
6 | - @resque_accessible = true | |
7 | - @workers = Resque.workers | |
8 | - @pending_jobs = Resque.size(:post_receive) | |
9 | - | |
10 | 6 | rescue Redis::InheritedError |
11 | 7 | @resque_accessible = false |
12 | 8 | end | ... | ... |
app/mailers/notify.rb
app/models/system_hook.rb
app/views/admin/dashboard/index.html.haml
1 | 1 | .admin_dash.row |
2 | - .span3 | |
2 | + .span4 | |
3 | 3 | .ui-box |
4 | 4 | %h5.title Projects |
5 | 5 | .data.padded |
... | ... | @@ -7,7 +7,7 @@ |
7 | 7 | %h1= Project.count |
8 | 8 | %hr |
9 | 9 | = link_to 'New Project', new_project_path, class: "btn small" |
10 | - .span3 | |
10 | + .span4 | |
11 | 11 | .ui-box |
12 | 12 | %h5.title Groups |
13 | 13 | .data.padded |
... | ... | @@ -15,7 +15,7 @@ |
15 | 15 | %h1= Group.count |
16 | 16 | %hr |
17 | 17 | = link_to 'New Group', new_admin_group_path, class: "btn small" |
18 | - .span3 | |
18 | + .span4 | |
19 | 19 | .ui-box |
20 | 20 | %h5.title Users |
21 | 21 | .data.padded |
... | ... | @@ -23,25 +23,6 @@ |
23 | 23 | %h1= User.count |
24 | 24 | %hr |
25 | 25 | = link_to 'New User', new_admin_user_path, class: "btn small" |
26 | - .span3 | |
27 | - .ui-box | |
28 | - %h5.title | |
29 | - Resque Workers | |
30 | - .data.padded | |
31 | - - if @resque_accessible | |
32 | - = link_to admin_resque_path do | |
33 | - %h1{class: @workers.present? ? "cgreen" : "cred"} | |
34 | - = @workers.count | |
35 | - %hr | |
36 | - %p | |
37 | - %strong{class: @pending_jobs > 0 ? "cred" : "cgreen"} | |
38 | - #{@pending_jobs} post receive jobs waiting | |
39 | - - else | |
40 | - = link_to admin_resque_path do | |
41 | - %h1.cdark ? | |
42 | - %hr | |
43 | - %p | |
44 | - %strong Resque status unknown | |
45 | 26 | |
46 | 27 | .row |
47 | 28 | .span6 | ... | ... |
app/views/admin/resque/show.html.haml
app/views/layouts/admin.html.haml
app/workers/post_receive.rb
1 | 1 | class PostReceive |
2 | - @queue = :post_receive | |
2 | + include Sidekiq::Worker | |
3 | 3 | |
4 | - def self.perform(repo_path, oldrev, newrev, ref, identifier) | |
4 | + sidekiq_options queue: :post_receive | |
5 | + | |
6 | + def perform(repo_path, oldrev, newrev, ref, identifier) | |
5 | 7 | repo_path.gsub!(Gitlab.config.gitolite.repos_path.to_s, "") |
6 | 8 | repo_path.gsub!(/.git$/, "") |
7 | 9 | repo_path.gsub!(/^\//, "") | ... | ... |
app/workers/system_hook_worker.rb
config/initializers/4_resque.rb
1 | 1 | # Custom Redis configuration |
2 | 2 | config_file = Rails.root.join('config', 'resque.yml') |
3 | 3 | |
4 | -if File.exists?(config_file) | |
5 | - resque_config = YAML.load_file(config_file) | |
6 | - Resque.redis = resque_config[Rails.env] | |
7 | -end | |
8 | -Resque.redis.namespace = 'resque:gitlab' | |
9 | -Resque.before_fork = Proc.new { ActiveRecord::Base.establish_connection } | |
10 | - | |
11 | -# Authentication | |
12 | -require 'resque/server' | |
13 | -class ResqueAuthentication | |
14 | - def initialize(app) | |
15 | - @app = app | |
16 | - end | |
4 | +resque_url = if File.exists?(config_file) | |
5 | + YAML.load_file(config_file)[Rails.env] | |
6 | + else | |
7 | + "localhost:6379" | |
8 | + end | |
17 | 9 | |
18 | - def call(env) | |
19 | - account = env['warden'].authenticate!(:database_authenticatable, :rememberable, scope: :user) | |
20 | - raise "Access denied" if !account.admin? | |
21 | - @app.call(env) | |
22 | - end | |
10 | +Sidekiq.configure_server do |config| | |
11 | + config.redis = { | |
12 | + url: "redis://#{resque_url}", | |
13 | + namespace: 'resque:gitlab' | |
14 | + } | |
23 | 15 | end |
24 | 16 | |
25 | -Resque::Server.use ResqueAuthentication | |
26 | - | |
27 | -# Mailer | |
28 | -Resque::Mailer.excluded_environments = [] | |
29 | - | |
17 | +Sidekiq.configure_client do |config| | |
18 | + config.redis = { | |
19 | + url: "redis://#{resque_url}", | |
20 | + namespace: 'resque:gitlab' | |
21 | + } | |
22 | +end | ... | ... |
config/routes.rb
1 | +require 'sidekiq/web' | |
2 | + | |
1 | 3 | Gitlab::Application.routes.draw do |
2 | 4 | # |
3 | 5 | # Search |
... | ... | @@ -8,9 +10,10 @@ Gitlab::Application.routes.draw do |
8 | 10 | require 'api' |
9 | 11 | mount Gitlab::API => '/api' |
10 | 12 | |
11 | - # Optionally, enable Resque here | |
12 | - require 'resque/server' | |
13 | - mount Resque::Server => '/info/resque', as: 'resque' | |
13 | + constraint = lambda { |request| request.env["warden"].authenticate? and request.env['warden'].user.admin? } | |
14 | + constraints constraint do | |
15 | + mount Sidekiq::Web, at: "/admin/workers", as: :sidekiq | |
16 | + end | |
14 | 17 | |
15 | 18 | # Enable Grack support |
16 | 19 | mount Grack::Bundle.new({ | ... | ... |
lib/tasks/resque.rake
... | ... | @@ -2,20 +2,20 @@ require 'resque/tasks' |
2 | 2 | |
3 | 3 | namespace :resque do |
4 | 4 | task setup: :environment do |
5 | - Resque.before_fork = Proc.new { ActiveRecord::Base.establish_connection } | |
5 | + #Resque.before_fork = Proc.new { ActiveRecord::Base.establish_connection } | |
6 | 6 | end |
7 | 7 | |
8 | 8 | desc "Resque | kill all workers (using -QUIT), god will take care of them" |
9 | 9 | task :stop_workers => :environment do |
10 | - pids = Array.new | |
10 | + #pids = Array.new | |
11 | 11 | |
12 | - Resque.workers.each do |worker| | |
13 | - pids << worker.to_s.split(/:/).second | |
14 | - end | |
12 | + #Resque.workers.each do |worker| | |
13 | + #pids << worker.to_s.split(/:/).second | |
14 | + #end | |
15 | 15 | |
16 | - if pids.size > 0 | |
17 | - system("kill -QUIT #{pids.join(' ')}") | |
18 | - end | |
16 | + #if pids.size > 0 | |
17 | + #system("kill -QUIT #{pids.join(' ')}") | |
18 | + #end | |
19 | 19 | end |
20 | 20 | end |
21 | 21 | ... | ... |