cany 0.1.3 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +10 -1
- data/lib/cany/recipes/sidekiq.rb +16 -2
- data/lib/cany/recipes/thin.rb +1 -1
- data/lib/cany/recipes/web_server.rb +26 -11
- data/lib/cany/version.rb +2 -2
- data/spec/cany/recipes/sidekiq_spec.rb +23 -0
- data/spec/cany/recipes/thin_spec.rb +61 -0
- data/spec/cany/recipes/unicorn_spec.rb +56 -0
- metadata +5 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8b17f53a807349e5ba0daab0b18ed9aaebf0998b
|
4
|
+
data.tar.gz: ea9b74995db2691b0a783192f8c408ce12dd4dd5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5d0cd4134c0e0a841019f9509202a140a7231fc2ccfe46aad6bdf108240787c930fd98ab5584a20080b8f898338d04256c126728da854b4fb1b0a2af65d21658
|
7
|
+
data.tar.gz: 2ac9ce3592f29db17c162a902a70ed27da9cc0d92874f985ac00f1765ce200c0f6b467e5174f107aafccccdb041e25c07118ce8f84ce6a6cc05fd04cd84c791d
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,12 @@
|
|
1
|
+
0.2.0 / 2013-09-25
|
2
|
+
==================
|
3
|
+
|
4
|
+
Feature:
|
5
|
+
|
6
|
+
* sidekiq: option to specify as which user and group sidekiq should run
|
7
|
+
* web server: option to specify as which user and group the web server should run (thin, unicorn)
|
8
|
+
|
9
|
+
|
1
10
|
0.1.3 / 2013-09-25
|
2
11
|
==================
|
3
12
|
|
@@ -10,7 +19,7 @@ Bug Fixes:
|
|
10
19
|
==================
|
11
20
|
|
12
21
|
Bug Fixes:
|
13
|
-
|
22
|
+
|
14
23
|
* dpkg: fix build error with --no-arch-all
|
15
24
|
* recipe: fix web server pre start scripts
|
16
25
|
|
data/lib/cany/recipes/sidekiq.rb
CHANGED
@@ -3,15 +3,28 @@ module Cany::Recipes
|
|
3
3
|
# "Simple, efficient, background processing in Ruby"
|
4
4
|
# Sidekiq is registered as service and so automatically started.
|
5
5
|
# @see http://sidekiq.org/ The official website for more information.
|
6
|
-
# @
|
6
|
+
# @note The recipe relies that 'sidekiq' is listed inside your Gemfile and
|
7
7
|
# therefore installed via the 'bundler' recipe.
|
8
|
+
#
|
9
|
+
# @!attribute queues
|
10
|
+
# @return [Array<String>, nil] An (optional) list of queue names sidekiq
|
11
|
+
# should listen on
|
12
|
+
# @!attribute user
|
13
|
+
# @return [String, nil] The user name as which the sidekiq process should
|
14
|
+
# executed
|
15
|
+
# @!attribute group
|
16
|
+
# @return [String, nil] The group name as which the sidekiq process should
|
17
|
+
# executed
|
8
18
|
class Sidekiq < Cany::Recipe
|
9
19
|
register_as :sidekiq
|
10
20
|
|
11
21
|
attr_accessor :queues
|
22
|
+
attr_accessor :user, :group
|
12
23
|
|
13
24
|
def initialize(*args)
|
14
25
|
@queues = []
|
26
|
+
@user = 'www-data'
|
27
|
+
@group = 'www-data'
|
15
28
|
super
|
16
29
|
end
|
17
30
|
|
@@ -19,10 +32,11 @@ module Cany::Recipes
|
|
19
32
|
def queue(name)
|
20
33
|
@recipe.queues << name
|
21
34
|
end
|
35
|
+
delegate :user, :group
|
22
36
|
end
|
23
37
|
|
24
38
|
def binary
|
25
|
-
install_service name, %W(/usr/bin/#{spec.name} sidekiq) + sidekiq_args, user:
|
39
|
+
install_service name, %W(/usr/bin/#{spec.name} sidekiq) + sidekiq_args, user: user, group: group
|
26
40
|
inner.binary
|
27
41
|
end
|
28
42
|
|
data/lib/cany/recipes/thin.rb
CHANGED
@@ -1,14 +1,29 @@
|
|
1
|
-
module Cany
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
1
|
+
module Cany::Recipes
|
2
|
+
# @!attribute user
|
3
|
+
# @return [String, nil] The user name as which the web server process should
|
4
|
+
# executed
|
5
|
+
# @!attribute group
|
6
|
+
# @return [String, nil] The group name as which the web server process should
|
7
|
+
# executed
|
8
|
+
class WebServer < Cany::Recipe
|
9
|
+
attr_accessor :user, :group
|
10
|
+
class DSL < Cany::Recipe::DSL
|
11
|
+
delegate :user, :group
|
12
|
+
end
|
13
|
+
|
14
|
+
def initialize(*args)
|
15
|
+
@user = 'www-data'
|
16
|
+
@group = 'www-data'
|
17
|
+
super
|
18
|
+
end
|
19
|
+
|
20
|
+
def binary
|
21
|
+
recipe(:system).configure :service_pre_scripts, {
|
22
|
+
mkdir_run: "mkdir -p /var/run/#{spec.name}",
|
23
|
+
chown_run: "chown #{user}:#{group} /var/run/#{spec.name}"
|
24
|
+
}
|
25
|
+
install_service name, ["/usr/bin/#{spec.name}"] + launch_command, user: user, group: group
|
26
|
+
inner.binary
|
12
27
|
end
|
13
28
|
end
|
14
29
|
end
|
data/lib/cany/version.rb
CHANGED
@@ -28,6 +28,7 @@ describe Cany::Recipes::Sidekiq do
|
|
28
28
|
end
|
29
29
|
end
|
30
30
|
end
|
31
|
+
|
31
32
|
context 'with queue names' do
|
32
33
|
before do
|
33
34
|
spec.setup do
|
@@ -49,4 +50,26 @@ describe Cany::Recipes::Sidekiq do
|
|
49
50
|
recipe.binary
|
50
51
|
end
|
51
52
|
end
|
53
|
+
|
54
|
+
context 'with defined user/group' do
|
55
|
+
before do
|
56
|
+
spec.setup do
|
57
|
+
use :sidekiq do
|
58
|
+
user 'user'
|
59
|
+
group 'group'
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
it 'should launch sidekiq with as this user and group' do
|
65
|
+
expect(recipe).to receive(:install_service).with(
|
66
|
+
:sidekiq,
|
67
|
+
%w(/usr/bin/test sidekiq --environment production),
|
68
|
+
user: 'user', group: 'group'
|
69
|
+
)
|
70
|
+
recipe.inner = double('recipe')
|
71
|
+
expect(recipe.inner).to receive(:binary)
|
72
|
+
recipe.binary
|
73
|
+
end
|
74
|
+
end
|
52
75
|
end
|
@@ -0,0 +1,61 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Cany::Recipes::Thin do
|
4
|
+
let(:setup) { proc { use :thin } }
|
5
|
+
let(:spec) do
|
6
|
+
Cany::Specification.new do
|
7
|
+
name 'test'
|
8
|
+
end
|
9
|
+
end
|
10
|
+
let(:recipe) { spec.recipes.first }
|
11
|
+
let(:system_recipe) { Cany::Dpkg::DebHelperRecipe.new(spec) }
|
12
|
+
let(:pre_scripts) { system_recipe.option(:service_pre_scripts) }
|
13
|
+
subject { recipe.binary }
|
14
|
+
|
15
|
+
context '#binary' do
|
16
|
+
before do
|
17
|
+
spec.setup &setup
|
18
|
+
spec.system_recipe = system_recipe
|
19
|
+
recipe.inner = double('recipe')
|
20
|
+
expect(recipe.inner).to receive(:binary)
|
21
|
+
end
|
22
|
+
|
23
|
+
context 'without configuration' do
|
24
|
+
it 'should launch unicorn only with environment specification and config file' do
|
25
|
+
expect(recipe).to receive(:install_service).with(
|
26
|
+
:thin,
|
27
|
+
%w(/usr/bin/test thin start --config /etc/test/thin.yml),
|
28
|
+
user: 'www-data', group: 'www-data'
|
29
|
+
)
|
30
|
+
expect(recipe).to receive(:install_content).with '/etc/test/thin.yml', <<CONFIG
|
31
|
+
---
|
32
|
+
environment: production
|
33
|
+
socket: /var/run/test/sock
|
34
|
+
pid: /var/run/test/thin.pid
|
35
|
+
CONFIG
|
36
|
+
subject
|
37
|
+
expect(pre_scripts).to eq({
|
38
|
+
mkdir_run: 'mkdir -p /var/run/test',
|
39
|
+
chown_run: 'chown www-data:www-data /var/run/test'
|
40
|
+
})
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
context 'with defined user/group' do
|
45
|
+
let(:setup) { proc { use(:thin) { user 'user'; group 'group' } } }
|
46
|
+
|
47
|
+
it 'should launch unicorn with as this user and group' do
|
48
|
+
expect(recipe).to receive(:install_service).with(
|
49
|
+
:thin,
|
50
|
+
%w(/usr/bin/test thin start --config /etc/test/thin.yml),
|
51
|
+
user: 'user', group: 'group'
|
52
|
+
)
|
53
|
+
subject
|
54
|
+
expect(pre_scripts).to eq({
|
55
|
+
mkdir_run: 'mkdir -p /var/run/test',
|
56
|
+
chown_run: 'chown user:group /var/run/test'
|
57
|
+
})
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
@@ -0,0 +1,56 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Cany::Recipes::Unicorn do
|
4
|
+
let(:setup) { proc { use :unicorn } }
|
5
|
+
let(:spec) do
|
6
|
+
Cany::Specification.new do
|
7
|
+
name 'test'
|
8
|
+
end
|
9
|
+
end
|
10
|
+
let(:recipe) { spec.recipes.first }
|
11
|
+
let(:system_recipe) { Cany::Dpkg::DebHelperRecipe.new(spec) }
|
12
|
+
let(:pre_scripts) { system_recipe.option(:service_pre_scripts) }
|
13
|
+
subject { recipe.binary }
|
14
|
+
|
15
|
+
context '#binary' do
|
16
|
+
before do
|
17
|
+
spec.setup &setup
|
18
|
+
spec.system_recipe = system_recipe
|
19
|
+
recipe.inner = double('recipe')
|
20
|
+
expect(recipe.inner).to receive(:binary)
|
21
|
+
end
|
22
|
+
|
23
|
+
context 'without configuration' do
|
24
|
+
|
25
|
+
it 'should launch unicorn only with environment specification and config file' do
|
26
|
+
expect(recipe).to receive(:install_service).with(
|
27
|
+
:unicorn,
|
28
|
+
%w(/usr/bin/test unicorn --config-file /etc/test/unicorn.rb --env production),
|
29
|
+
user: 'www-data', group: 'www-data'
|
30
|
+
)
|
31
|
+
subject
|
32
|
+
expect(pre_scripts).to eq({
|
33
|
+
mkdir_run: 'mkdir -p /var/run/test',
|
34
|
+
chown_run: 'chown www-data:www-data /var/run/test'
|
35
|
+
})
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
context 'with defined user/group' do
|
40
|
+
let(:setup) { proc { use(:unicorn) { user 'user'; group 'group' } } }
|
41
|
+
|
42
|
+
it 'should launch unicorn with as this user and group' do
|
43
|
+
expect(recipe).to receive(:install_service).with(
|
44
|
+
:unicorn,
|
45
|
+
%w(/usr/bin/test unicorn --config-file /etc/test/unicorn.rb --env production),
|
46
|
+
user: 'user', group: 'group'
|
47
|
+
)
|
48
|
+
subject
|
49
|
+
expect(pre_scripts).to eq({
|
50
|
+
mkdir_run: 'mkdir -p /var/run/test',
|
51
|
+
chown_run: 'chown user:group /var/run/test'
|
52
|
+
})
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cany
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Malte Swart
|
@@ -99,6 +99,8 @@ files:
|
|
99
99
|
- spec/cany/recipes/bundler_spec.rb
|
100
100
|
- spec/cany/recipes/rails_spec.rb
|
101
101
|
- spec/cany/recipes/sidekiq_spec.rb
|
102
|
+
- spec/cany/recipes/thin_spec.rb
|
103
|
+
- spec/cany/recipes/unicorn_spec.rb
|
102
104
|
- spec/cany/specification_spec.rb
|
103
105
|
- spec/cany_spec.rb
|
104
106
|
- spec/fixtures/multiple/one.canspec
|
@@ -141,6 +143,8 @@ test_files:
|
|
141
143
|
- spec/cany/recipes/bundler_spec.rb
|
142
144
|
- spec/cany/recipes/rails_spec.rb
|
143
145
|
- spec/cany/recipes/sidekiq_spec.rb
|
146
|
+
- spec/cany/recipes/thin_spec.rb
|
147
|
+
- spec/cany/recipes/unicorn_spec.rb
|
144
148
|
- spec/cany/specification_spec.rb
|
145
149
|
- spec/cany_spec.rb
|
146
150
|
- spec/fixtures/multiple/one.canspec
|