foreplay 0.1.4 → 0.1.5
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/.hound.yml +1 -0
- data/.rubocop.yml +16 -0
- data/README.md +57 -6
- data/features/check.feature +9 -3
- data/features/deploy.feature +9 -3
- data/features/setup.feature +123 -119
- data/foreplay.gemspec +2 -1
- data/lib/foreplay/deploy.rb +3 -3
- data/lib/foreplay/version.rb +1 -1
- data/spec/lib/foreplay/deploy_spec.rb +2 -2
- data/spec/spec_helper.rb +2 -0
- metadata +26 -4
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: b22741263c790de67f802d7e2d1e12942fc2307e
|
|
4
|
+
data.tar.gz: 47166c9567e49f5bbb1b2c569dad24ed9f578c70
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: e46464958964271f0ff9ef5af4824922f2939f5d4d68ea3e7bb10186a94bf9e503286debdacbffdd23e23619cbe991ea1dc2b24dce95c84a9d0a53ed3986c1c5
|
|
7
|
+
data.tar.gz: def9e1e7588bf412fd7b2e9c8b6ab3db597d966406e4e635ebee1a964238f78e5b9d57525f75493d396158fc4bc1bcba6dde7c2d8801f99b50a7a2003f63e476
|
data/.hound.yml
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
inherit_from: .rubocop.yml
|
data/.rubocop.yml
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
LineLength:
|
|
2
|
+
Description: 'Limit lines to 120 characters.'
|
|
3
|
+
Max: 120
|
|
4
|
+
Enabled: true
|
|
5
|
+
|
|
6
|
+
FileName:
|
|
7
|
+
Description: 'Use snake_case for source file names.'
|
|
8
|
+
Enabled: false
|
|
9
|
+
|
|
10
|
+
MethodLength:
|
|
11
|
+
Description: 'Avoid methods longer than 10 lines of code.'
|
|
12
|
+
Enabled: false
|
|
13
|
+
|
|
14
|
+
Documentation:
|
|
15
|
+
Description: 'Document classes and non-namespace modules.'
|
|
16
|
+
Enabled: false
|
data/README.md
CHANGED
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
# Foreplay
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
[](https://gemnasium.com/Xenapto/foreplay)
|
|
3
|
+
 [](https://coveralls.io/r/Xenapto/foreplay?branch=develop)
|
|
4
|
+
[](http://xenapto.com)
|
|
6
5
|

|
|
7
6
|
|
|
8
|
-
|
|
7
|
+
Deploying Rails projects to Ubuntu using Foreman
|
|
9
8
|
|
|
10
|
-
I noticed with surprise on [RubyGems](https://rubygems.org/gems/foreplay) that my little gem had been downloaded a few times, so clearly people are trying to use it. Thanks for trying it, people.
|
|
9
|
+
I noticed with surprise on [RubyGems](https://rubygems.org/gems/foreplay) that my little gem had been downloaded a few times, so clearly people are trying to use it. Thanks for trying it, people.
|
|
11
10
|
|
|
12
11
|
There's now a CLI for the gem so you can use it as follows. To check what it's going to do:
|
|
13
12
|
|
|
@@ -50,7 +49,59 @@ There should be little or no downtime. If the app is b0rked then you can easily
|
|
|
50
49
|
|
|
51
50
|
### foreplay.yml
|
|
52
51
|
|
|
53
|
-
|
|
52
|
+
Here's my actual foreplay.yml that I use to deploy my app Xendata:
|
|
53
|
+
|
|
54
|
+
```YAML
|
|
55
|
+
---
|
|
56
|
+
defaults:
|
|
57
|
+
repository: git@github.com:Xenapto/xendata.git
|
|
58
|
+
branch: master
|
|
59
|
+
user: xenapto
|
|
60
|
+
keyfile: ~/.ssh/id_circleci_github
|
|
61
|
+
path: apps/%a
|
|
62
|
+
production:
|
|
63
|
+
defaults:
|
|
64
|
+
database:
|
|
65
|
+
adapter: postgresql
|
|
66
|
+
encoding: utf8
|
|
67
|
+
database: xendata
|
|
68
|
+
pool: 10
|
|
69
|
+
host: sandham.xenapto.net
|
|
70
|
+
reconnect: true
|
|
71
|
+
timeout: 5000
|
|
72
|
+
username: kjh123kj1h23
|
|
73
|
+
password: ,mn23-1m412-not-really
|
|
74
|
+
resque: redis://kjjh3425mnb:bn34=-23f2@redis.xenapto.net:6379
|
|
75
|
+
web:
|
|
76
|
+
servers: [sandham.xenapto.net]
|
|
77
|
+
database:
|
|
78
|
+
host: localhost
|
|
79
|
+
foreman:
|
|
80
|
+
concurrency: 'web=1,worker_immediate=2,worker_longjobs=1,scheduler=1,resque_web=1,new_relic_resque=1'
|
|
81
|
+
auxiliary:
|
|
82
|
+
servers: [bradman.xenapto.net,edrich.xenapto.net:10022]
|
|
83
|
+
foreman:
|
|
84
|
+
concurrency: 'worker_regular=8'
|
|
85
|
+
largeserver:
|
|
86
|
+
servers: [simpson.xenapto.net]
|
|
87
|
+
foreman:
|
|
88
|
+
concurrency: 'worker_longjobs=1,worker_regular=24'
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
A quick walk-though of this configuration:
|
|
92
|
+
|
|
93
|
+
1. I'm deploying the `master` branch of the Github project `git@github.com:Xenapto/xendata.git`
|
|
94
|
+
1. I'm making an SSH connection to my production servers with the username `xenapto` and the keyfile in `~/.ssh/id_circleci_github` which lives on the machine I'm deploying from
|
|
95
|
+
2. I'm deploying to the directory `~/apps/xendata` (`%a` is expanded to the name of the app)
|
|
96
|
+
3. In this config file I'm defining the `production` environment. I could also define a `staging` section if I wanted to.
|
|
97
|
+
3. On each server I'm creating a `database.yml` file with the contents of the `database` section of this config
|
|
98
|
+
4. I'm creating a `resque.yml` file from the contents of the `resque` section
|
|
99
|
+
5. I'm deploying three different types of server. The roles are `web`, `auxiliary` and `largeserver`. These names are completely arbitrary. I can deploy all or one of these roles.
|
|
100
|
+
6. Each role contains a list of servers and any overrides to the default settings
|
|
101
|
+
7. For instance the `web` role is deployed to `sandham.xenapto.net`. For that server the database is on the same machine (`localhost`). The Foreman `concurrency` setting defines which workers from my Procfile are launched on that server.
|
|
102
|
+
8. Note that in the `auxiliary` role I am deploying to two servers. On the second (`edrich.xenapto.net`) I'm using port 10022 for SSH instead of the default.
|
|
103
|
+
|
|
104
|
+
General format:
|
|
54
105
|
|
|
55
106
|
```YAML
|
|
56
107
|
defaults: # global defaults for all environments
|
data/features/check.feature
CHANGED
|
@@ -7,22 +7,28 @@ Feature: check
|
|
|
7
7
|
When I run `foreplay check`
|
|
8
8
|
Then the output should contain:
|
|
9
9
|
"""
|
|
10
|
-
foreplay check
|
|
10
|
+
ERROR: "foreplay check" was called with no arguments
|
|
11
|
+
Usage: "foreplay check ENVIRONMENT"
|
|
11
12
|
"""
|
|
13
|
+
# SimpleCov 8+ foreplay check requires at least 1 argument: "foreplay check ENVIRONMENT".
|
|
12
14
|
|
|
13
15
|
Scenario: Check configuration parameters - invalid parameter
|
|
14
16
|
When I run `foreplay check test --invalid xyz`
|
|
15
17
|
Then the output should contain:
|
|
16
18
|
"""
|
|
17
|
-
foreplay check
|
|
19
|
+
ERROR: "foreplay check" was called with arguments ["test", "--invalid", "xyz"]
|
|
20
|
+
Usage: "foreplay check ENVIRONMENT"
|
|
18
21
|
"""
|
|
22
|
+
# SimpleCov 8+ foreplay check requires at least 1 argument: "foreplay check ENVIRONMENT".
|
|
19
23
|
|
|
20
24
|
Scenario: Check configuration parameters - short invalid parameter
|
|
21
25
|
When I run `foreplay check test -x xyz`
|
|
22
26
|
Then the output should contain:
|
|
23
27
|
"""
|
|
24
|
-
foreplay check
|
|
28
|
+
ERROR: "foreplay check" was called with arguments ["test", "-x", "xyz"]
|
|
29
|
+
Usage: "foreplay check ENVIRONMENT"
|
|
25
30
|
"""
|
|
31
|
+
# SimpleCov 8+ foreplay check requires at least 1 argument: "foreplay check ENVIRONMENT".
|
|
26
32
|
|
|
27
33
|
Scenario: Check configuration parameters - no config file
|
|
28
34
|
When I run `foreplay check test`
|
data/features/deploy.feature
CHANGED
|
@@ -7,22 +7,28 @@ Feature: deploy
|
|
|
7
7
|
When I run `foreplay deploy`
|
|
8
8
|
Then the output should contain:
|
|
9
9
|
"""
|
|
10
|
-
foreplay deploy
|
|
10
|
+
ERROR: "foreplay deploy" was called with no arguments
|
|
11
|
+
Usage: "foreplay deploy ENVIRONMENT"
|
|
11
12
|
"""
|
|
13
|
+
# SimpleCov 8+ foreplay deploy requires at least 1 argument: "foreplay deploy ENVIRONMENT".
|
|
12
14
|
|
|
13
15
|
Scenario: invalid parameter
|
|
14
16
|
When I run `foreplay deploy test --invalid xyz`
|
|
15
17
|
Then the output should contain:
|
|
16
18
|
"""
|
|
17
|
-
foreplay deploy
|
|
19
|
+
ERROR: "foreplay deploy" was called with arguments ["test", "--invalid", "xyz"]
|
|
20
|
+
Usage: "foreplay deploy ENVIRONMENT"
|
|
18
21
|
"""
|
|
22
|
+
# SimpleCov 8+ foreplay deploy requires at least 1 argument: "foreplay deploy ENVIRONMENT".
|
|
19
23
|
|
|
20
24
|
Scenario: short invalid parameter
|
|
21
25
|
When I run `foreplay deploy test -x xyz`
|
|
22
26
|
Then the output should contain:
|
|
23
27
|
"""
|
|
24
|
-
foreplay deploy
|
|
28
|
+
ERROR: "foreplay deploy" was called with arguments ["test", "-x", "xyz"]
|
|
29
|
+
Usage: "foreplay deploy ENVIRONMENT"
|
|
25
30
|
"""
|
|
31
|
+
# SimpleCov 8+ foreplay deploy requires at least 1 argument: "foreplay deploy ENVIRONMENT".
|
|
26
32
|
|
|
27
33
|
Scenario: no config file
|
|
28
34
|
When I run `foreplay deploy test`
|
data/features/setup.feature
CHANGED
|
@@ -4,136 +4,140 @@ Feature: Setup
|
|
|
4
4
|
I want to be able to create the config scaffold
|
|
5
5
|
|
|
6
6
|
Scenario: Setup with defaults
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
7
|
+
When I run `foreplay setup`
|
|
8
|
+
Then the output should contain "create config/foreplay.yml"
|
|
9
|
+
And the following files should exist:
|
|
10
|
+
| config/foreplay.yml |
|
|
11
|
+
And the file "config/foreplay.yml" should contain:
|
|
12
|
+
"""
|
|
13
|
+
defaults:
|
|
14
|
+
name: aruba
|
|
15
|
+
repository: TODO Put the git repository path here
|
|
16
|
+
user: TODO Put here the user to logon to the deployment server
|
|
17
|
+
password: TODO Supply a password or private key to connect to the server
|
|
18
|
+
path: TODO Put here the path to deploy to on the deployment server
|
|
19
|
+
port: 50000
|
|
20
|
+
production:
|
|
21
|
+
defaults:
|
|
22
|
+
database:
|
|
23
|
+
adapter: postgresql
|
|
24
|
+
encoding: utf8
|
|
25
|
+
database: TODO Put the database name here
|
|
26
|
+
pool: 5
|
|
27
|
+
host: TODO Put here the database host name
|
|
28
|
+
username: TODO Put here the database user
|
|
29
|
+
password: TODO Put here the database user's password
|
|
30
|
+
web:
|
|
31
|
+
servers: [TODO Put here the name or names of the production web servers]
|
|
32
|
+
foreman:
|
|
33
|
+
concurrency: 'web=1,worker=0,scheduler=0'
|
|
34
|
+
"""
|
|
35
35
|
|
|
36
36
|
Scenario: Setup invalid short option
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
37
|
+
When I run `foreplay setup -x abc`
|
|
38
|
+
Then the following files should not exist:
|
|
39
|
+
| config/foreplay.yml |
|
|
40
|
+
And the output should contain:
|
|
41
|
+
"""
|
|
42
|
+
ERROR: "foreplay setup" was called with arguments ["-x", "abc"]
|
|
43
|
+
Usage: "foreplay setup"
|
|
44
|
+
"""
|
|
45
|
+
# SimpleCov 8+ foreplay setup should have no arguments: "foreplay setup".
|
|
44
46
|
|
|
45
47
|
Scenario: Setup invalid option
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
48
|
+
When I run `foreplay setup --xyz abc`
|
|
49
|
+
Then the following files should not exist:
|
|
50
|
+
| config/foreplay.yml |
|
|
51
|
+
And the output should contain:
|
|
52
|
+
"""
|
|
53
|
+
ERROR: "foreplay setup" was called with arguments ["--xyz", "abc"]
|
|
54
|
+
Usage: "foreplay setup"
|
|
55
|
+
"""
|
|
56
|
+
# SimpleCov 8+ foreplay setup should have no arguments: "foreplay setup".
|
|
53
57
|
|
|
54
58
|
Scenario: Setup invalid pool option type
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
59
|
+
When I run `foreplay setup --db_pool abc`
|
|
60
|
+
Then the following files should not exist:
|
|
61
|
+
| config/foreplay.yml |
|
|
62
|
+
And the output should contain:
|
|
63
|
+
"""
|
|
64
|
+
Expected numeric value for '--db-pool'; got "abc"
|
|
65
|
+
"""
|
|
62
66
|
|
|
63
67
|
Scenario: Setup invalid port option type
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
68
|
+
When I run `foreplay setup --port abc`
|
|
69
|
+
Then the following files should not exist:
|
|
70
|
+
| config/foreplay.yml |
|
|
71
|
+
And the output should contain:
|
|
72
|
+
"""
|
|
73
|
+
Expected numeric value for '--port'; got "abc"
|
|
74
|
+
"""
|
|
71
75
|
|
|
72
76
|
Scenario: Setup invalid port short option type
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
77
|
+
When I run `foreplay setup -p abc`
|
|
78
|
+
Then the following files should not exist:
|
|
79
|
+
| config/foreplay.yml |
|
|
80
|
+
And the output should contain:
|
|
81
|
+
"""
|
|
82
|
+
Expected numeric value for '--port'; got "abc"
|
|
83
|
+
"""
|
|
80
84
|
|
|
81
85
|
Scenario: Setup with short options
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
86
|
+
When I run `foreplay setup -n string1 -r string2 -u string3 -p 10000 --password string4 -f string5 -s string6a string6b string6c -a string7 -e string8 -d string9 -h string10 --db_pool 23 --db_user string11 --db_password string12`
|
|
87
|
+
Then the output should contain "create config/foreplay.yml"
|
|
88
|
+
And the following files should exist:
|
|
89
|
+
| config/foreplay.yml |
|
|
90
|
+
And the file "config/foreplay.yml" should contain:
|
|
91
|
+
"""
|
|
92
|
+
defaults:
|
|
93
|
+
name: string1
|
|
94
|
+
repository: string2
|
|
95
|
+
user: string3
|
|
96
|
+
password: string4
|
|
97
|
+
path: string5
|
|
98
|
+
port: 10000
|
|
99
|
+
production:
|
|
100
|
+
defaults:
|
|
101
|
+
database:
|
|
102
|
+
adapter: string7
|
|
103
|
+
encoding: string8
|
|
104
|
+
database: string9
|
|
105
|
+
pool: 23
|
|
106
|
+
host: string10
|
|
107
|
+
username: string11
|
|
108
|
+
password: string12
|
|
109
|
+
web:
|
|
110
|
+
servers: ["string6a", "string6b", "string6c"]
|
|
111
|
+
foreman:
|
|
112
|
+
concurrency: 'web=1,worker=0,scheduler=0'
|
|
113
|
+
"""
|
|
110
114
|
|
|
111
115
|
Scenario: Setup with short options
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
116
|
+
When I run `foreplay setup --name string1 --repository string2 --user string3 --port 10000 --password string4 --path string5 --servers string6a string6b string6c --db_adapter string7 --db_encoding string8 --db_name string9 --db_host string10 --db_pool 23 --db_user string11 --db_password string12`
|
|
117
|
+
Then the output should contain "create config/foreplay.yml"
|
|
118
|
+
And the following files should exist:
|
|
119
|
+
| config/foreplay.yml |
|
|
120
|
+
And the file "config/foreplay.yml" should contain:
|
|
121
|
+
"""
|
|
122
|
+
defaults:
|
|
123
|
+
name: string1
|
|
124
|
+
repository: string2
|
|
125
|
+
user: string3
|
|
126
|
+
password: string4
|
|
127
|
+
path: string5
|
|
128
|
+
port: 10000
|
|
129
|
+
production:
|
|
130
|
+
defaults:
|
|
131
|
+
database:
|
|
132
|
+
adapter: string7
|
|
133
|
+
encoding: string8
|
|
134
|
+
database: string9
|
|
135
|
+
pool: 23
|
|
136
|
+
host: string10
|
|
137
|
+
username: string11
|
|
138
|
+
password: string12
|
|
139
|
+
web:
|
|
140
|
+
servers: ["string6a", "string6b", "string6c"]
|
|
141
|
+
foreman:
|
|
142
|
+
concurrency: 'web=1,worker=0,scheduler=0'
|
|
143
|
+
"""
|
data/foreplay.gemspec
CHANGED
|
@@ -29,5 +29,6 @@ Gem::Specification.new do |spec|
|
|
|
29
29
|
spec.add_development_dependency 'cucumber', '~> 1.3'
|
|
30
30
|
spec.add_development_dependency 'aruba', '~> 0.5'
|
|
31
31
|
spec.add_development_dependency 'gem-release', '~> 0.7'
|
|
32
|
-
spec.add_development_dependency 'simplecov', '~> 0.
|
|
32
|
+
spec.add_development_dependency 'simplecov', '~> 0.7', '>= 0.7.1' # https://github.com/colszowka/simplecov/issues/281
|
|
33
|
+
spec.add_development_dependency 'coveralls', '~> 0'
|
|
33
34
|
end
|
data/lib/foreplay/deploy.rb
CHANGED
|
@@ -98,7 +98,7 @@ module Foreplay
|
|
|
98
98
|
|
|
99
99
|
# Find out which port we're currently running on
|
|
100
100
|
current_port_file = ".foreplay/#{name}/current_port"
|
|
101
|
-
steps = [ { :command => "mkdir -p .foreplay && touch #{current_port_file} && cat #{current_port_file}", :silent => true } ]
|
|
101
|
+
steps = [ { :command => "mkdir -p .foreplay/#{name} && touch #{current_port_file} && cat #{current_port_file}", :silent => true } ]
|
|
102
102
|
|
|
103
103
|
current_port_string = execute_on_server(steps, instructions).strip!
|
|
104
104
|
puts current_port_string.blank? ? "#{INDENT}No instance is currently deployed" : "#{INDENT}Current instance is using port #{current_port_string}"
|
|
@@ -124,8 +124,6 @@ module Foreplay
|
|
|
124
124
|
|
|
125
125
|
# Commands to execute on remote server
|
|
126
126
|
steps = [
|
|
127
|
-
{ :command => "echo #{current_port} > #{current_port_file}",
|
|
128
|
-
:commentary => "Setting the port for the new instance to #{current_port}" },
|
|
129
127
|
{ :command => "mkdir -p #{path} && cd #{path} && rm -rf #{current_port} && git clone #{repository} #{current_port}",
|
|
130
128
|
:commentary => "Cloning repository #{repository}" },
|
|
131
129
|
{ :command => "rvm rvmrc trust #{current_port}",
|
|
@@ -174,6 +172,8 @@ module Foreplay
|
|
|
174
172
|
{ :command => "sudo start #{current_service} || sudo restart #{current_service}",
|
|
175
173
|
:commentary => 'Starting the service',
|
|
176
174
|
:ignore_error => true },
|
|
175
|
+
{ :command => "echo #{current_port} > #{current_port_file}",
|
|
176
|
+
:commentary => "Setting the port for the new instance to #{current_port}" },
|
|
177
177
|
{ :command => 'sleep 60',
|
|
178
178
|
:commentary => 'Waiting 60s to give service time to start' },
|
|
179
179
|
{ :command => "sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port #{current_port}",
|
data/lib/foreplay/version.rb
CHANGED
|
@@ -63,8 +63,6 @@ describe Foreplay::Deploy do
|
|
|
63
63
|
Net::SSH.should_receive(:start).with('web.example.com', 'fred', { :verbose => :warn, :port => 22, :password => 'trollope' }).and_yield(session)
|
|
64
64
|
|
|
65
65
|
[
|
|
66
|
-
'mkdir -p .foreplay && touch .foreplay/foreplay/current_port && cat .foreplay/foreplay/current_port',
|
|
67
|
-
'echo 50000 > .foreplay/foreplay/current_port',
|
|
68
66
|
'mkdir -p apps/foreplay && cd apps/foreplay && rm -rf 50000 && git clone git@github.com:Xenapto/foreplay.git 50000',
|
|
69
67
|
'rvm rvmrc trust 50000',
|
|
70
68
|
'rvm rvmrc warning ignore 50000',
|
|
@@ -88,6 +86,8 @@ describe Foreplay::Deploy do
|
|
|
88
86
|
'sudo ln -f `which foreman` /usr/bin/foreman || echo Using default version of foreman',
|
|
89
87
|
'sudo foreman export upstart /etc/init',
|
|
90
88
|
'sudo start foreplay-50000 || sudo restart foreplay-50000',
|
|
89
|
+
'mkdir -p .foreplay/foreplay && touch .foreplay/foreplay/current_port && cat .foreplay/foreplay/current_port',
|
|
90
|
+
'echo 50000 > .foreplay/foreplay/current_port',
|
|
91
91
|
'sleep 60',
|
|
92
92
|
'sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 50000',
|
|
93
93
|
'sudo iptables -t nat -D PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 51000',
|
data/spec/spec_helper.rb
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
# Initialize simplecov for coverage report.
|
|
2
2
|
require 'simplecov'
|
|
3
|
+
require 'coveralls'
|
|
3
4
|
SimpleCov.start
|
|
5
|
+
Coveralls.wear!('rails') if ENV['COVERALLS_REPO_TOKEN']
|
|
4
6
|
|
|
5
7
|
RSpec.configure do |config|
|
|
6
8
|
# Run specs in random order to surface order dependencies. If you find an
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: foreplay
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.1.
|
|
4
|
+
version: 0.1.5
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Xenapto
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2014-06-
|
|
11
|
+
date: 2014-06-12 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: activesupport
|
|
@@ -156,14 +156,34 @@ dependencies:
|
|
|
156
156
|
requirements:
|
|
157
157
|
- - "~>"
|
|
158
158
|
- !ruby/object:Gem::Version
|
|
159
|
-
version: '0.
|
|
159
|
+
version: '0.7'
|
|
160
|
+
- - ">="
|
|
161
|
+
- !ruby/object:Gem::Version
|
|
162
|
+
version: 0.7.1
|
|
163
|
+
type: :development
|
|
164
|
+
prerelease: false
|
|
165
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
166
|
+
requirements:
|
|
167
|
+
- - "~>"
|
|
168
|
+
- !ruby/object:Gem::Version
|
|
169
|
+
version: '0.7'
|
|
170
|
+
- - ">="
|
|
171
|
+
- !ruby/object:Gem::Version
|
|
172
|
+
version: 0.7.1
|
|
173
|
+
- !ruby/object:Gem::Dependency
|
|
174
|
+
name: coveralls
|
|
175
|
+
requirement: !ruby/object:Gem::Requirement
|
|
176
|
+
requirements:
|
|
177
|
+
- - "~>"
|
|
178
|
+
- !ruby/object:Gem::Version
|
|
179
|
+
version: '0'
|
|
160
180
|
type: :development
|
|
161
181
|
prerelease: false
|
|
162
182
|
version_requirements: !ruby/object:Gem::Requirement
|
|
163
183
|
requirements:
|
|
164
184
|
- - "~>"
|
|
165
185
|
- !ruby/object:Gem::Version
|
|
166
|
-
version: '0
|
|
186
|
+
version: '0'
|
|
167
187
|
description: Deploying Rails projects to Ubuntu using Foreman
|
|
168
188
|
email:
|
|
169
189
|
- developers@xenapto.com
|
|
@@ -173,6 +193,8 @@ extensions: []
|
|
|
173
193
|
extra_rdoc_files: []
|
|
174
194
|
files:
|
|
175
195
|
- ".gitignore"
|
|
196
|
+
- ".hound.yml"
|
|
197
|
+
- ".rubocop.yml"
|
|
176
198
|
- ".ruby-version"
|
|
177
199
|
- Gemfile
|
|
178
200
|
- LICENSE.txt
|