cany 0.1.3 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|