deep_thought 0.1.1 → 0.2.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +22 -3
- data/Rakefile +2 -1
- data/deep_thought.gemspec +1 -0
- data/lib/deep_thought.rb +4 -3
- data/lib/deep_thought/version.rb +1 -1
- data/script/bootstrap +64 -0
- metadata +16 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f19cef213ef16227a7bc898ac65270247f7b1e67
|
4
|
+
data.tar.gz: 301d7f61c392fd8c92790dcc1d3df457f7c76d1b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8132f413fc46c326fb189c9deefdc1334bfadcebbfdef68580591b6e1764ddbaf1602e05d1892c7f01bd786beede6552d7e03ae994ee3dacd9d8a7313de27972
|
7
|
+
data.tar.gz: c37efee45ec3c1bc287b7a6f930bfcf202b272b072432c2de6578808e70a8c934f590eefb95ff2928e1953cc431c907c741a8911e5962f0dabc2396166cf4e22
|
data/README.md
CHANGED
@@ -6,7 +6,7 @@ Deploy smart, not hard.
|
|
6
6
|
|
7
7
|
Deep Thought takes all of the thought out of deploying.
|
8
8
|
|
9
|
-
Want to prevent deployment conflicts? Deep Thought does that. Want to deploy with Hubot? Deep Thought has you covered. Looking to ensure a build is green before it is deployed? Deep Thought yawns at your puny requests. Want a web interface? Got it. An API? Yep. Security? Totally locked down. Deep Thought is master of your deployments.
|
9
|
+
Want to prevent deployment conflicts? Deep Thought does that. Want to deploy with Hubot? Deep Thought has you covered. Looking to ensure a build is green before it is deployed? Deep Thought yawns at your puny requests. How about deployment locking? Of course! Want a web interface? Got it. An API? Yep. Security? Totally locked down. Deep Thought is master of your deployments.
|
10
10
|
|
11
11
|
Deep Thought was inspired by GitHub's own Hubot+Heaven workflow. Check out [Zach Holman's talk](http://zachholman.com/talk/unsucking-your-teams-development-environment/) to see the original inspiration.
|
12
12
|
|
@@ -20,7 +20,9 @@ Use [this Gist](https://gist.github.com/redhotvengeance/5746731) to get started:
|
|
20
20
|
|
21
21
|
### Setup
|
22
22
|
|
23
|
-
Deep Thought needs an environment with Ruby and Git installed, and also access to a
|
23
|
+
Deep Thought needs an environment with Ruby and Git installed, and also access to a database. Deep Thought by default expects a PostgreSQL database, but should work with any ActiveRecord-compatible database.
|
24
|
+
|
25
|
+
Deep Thought will work fine on any server or VM matching those requirements, though it is largely designed to be deployed to Heroku:
|
24
26
|
|
25
27
|
heroku apps:create [NAME]
|
26
28
|
heroku config:set RACK_ENV=production
|
@@ -52,6 +54,14 @@ Deep Thought requires the use of a background worker for deployments. Normally,
|
|
52
54
|
HEROKU_APP=<app-name>
|
53
55
|
HEROKU_API_KEY=<your-heroku-api-key>
|
54
56
|
|
57
|
+
If you'd like to use a database other than PostgreSQL, you'll need to add appropriate gem to your Gemfile and set the `DATABASE_ADAPTER` environment variable. For instance, if you'd like to use MySQL, add the gem to the Gemfile:
|
58
|
+
|
59
|
+
gem "mysql2"
|
60
|
+
|
61
|
+
Then set the adapter environment variable:
|
62
|
+
|
63
|
+
DATABASE_ADAPTER=mysql2
|
64
|
+
|
55
65
|
### Add a project
|
56
66
|
|
57
67
|
Once logged in, click the `+ add project` button on the `projects` page. Enter a unique project name and the remote Git repository url for the project. Click `create project`, and your project will be set up and ready to deploy.
|
@@ -154,7 +164,7 @@ Your custom deployer should live in the `DeepThought::Deployer` namespace. Deep
|
|
154
164
|
|
155
165
|
The `setup?` method is called before deploys to ensure the project is setup as needed for the deploy to execute properly. For instance, if your deployer deploys by pushing to a Git remote, you can ensure that the Git remotes exist within `setup?`. Your deployer may have no need of `setup?`, in which case just don't bother overwriting the method.
|
156
166
|
|
157
|
-
A reference to the project is passed to the `setup?` method, as is the project config (which is the hash generated from the project's `.deepthought.yml` file). You can use access to the config to take advantage of any deployer-
|
167
|
+
A reference to the project is passed to the `setup?` method, as is the project config (which is the hash generated from the project's `.deepthought.yml` file). You can use access to the config to take advantage of any deployer-specific data that may have been put into the `.deepthought.yml` file.
|
158
168
|
|
159
169
|
The `setup?` method should return `true` when successful and `false` when not.
|
160
170
|
|
@@ -228,10 +238,16 @@ Set it up:
|
|
228
238
|
|
229
239
|
script/bootstrap
|
230
240
|
|
241
|
+
The bootstrap script will create an `.env`, install all required gems, set up the databases, and make a user. Of course, you can always do it manually.
|
242
|
+
|
231
243
|
Create an `.env`:
|
232
244
|
|
233
245
|
echo RACK_ENV=development > .env
|
234
246
|
|
247
|
+
Install required gems:
|
248
|
+
|
249
|
+
bundle install --binstubs
|
250
|
+
|
235
251
|
Set up the databases (PostgreSQL):
|
236
252
|
|
237
253
|
createuser deep_thought
|
@@ -239,6 +255,9 @@ Set up the databases (PostgreSQL):
|
|
239
255
|
createdb -O deep_thought -E utf8 deep_thought_test
|
240
256
|
rake db:migrate
|
241
257
|
|
258
|
+
Make a user:
|
259
|
+
bundle exec rake create_user[test@test.com,secret]
|
260
|
+
|
242
261
|
Start the server:
|
243
262
|
|
244
263
|
script/server
|
data/Rakefile
CHANGED
data/deep_thought.gemspec
CHANGED
@@ -35,6 +35,7 @@ Gem::Specification.new do |gem|
|
|
35
35
|
gem.add_development_dependency "shotgun", "~>0.9"
|
36
36
|
gem.add_development_dependency "thin", "~>1.6"
|
37
37
|
gem.add_development_dependency "racksh", "~>1.0.0"
|
38
|
+
gem.add_development_dependency "dotenv", "~>0.9"
|
38
39
|
|
39
40
|
# # testing
|
40
41
|
gem.add_development_dependency "minitest", "~>4.7"
|
data/lib/deep_thought.rb
CHANGED
@@ -17,17 +17,18 @@ require 'deep_thought/version'
|
|
17
17
|
|
18
18
|
module DeepThought
|
19
19
|
def self.setup(settings)
|
20
|
-
env = settings['RACK_ENV']
|
20
|
+
env = settings['RACK_ENV'] ||= 'development'
|
21
21
|
|
22
22
|
if env != "production"
|
23
23
|
settings["DATABASE_URL"] ||= "postgres://deep_thought@localhost/deep_thought_#{env}"
|
24
24
|
end
|
25
25
|
|
26
26
|
database = URI(settings["DATABASE_URL"])
|
27
|
+
settings["DATABASE_ADAPTER"] ||= "postgresql"
|
27
28
|
|
28
29
|
connection = {
|
29
|
-
:adapter => "
|
30
|
-
:encoding => "
|
30
|
+
:adapter => settings["DATABASE_ADAPTER"],
|
31
|
+
:encoding => "utf8",
|
31
32
|
:database => database.path[1..-1],
|
32
33
|
:pool => 5,
|
33
34
|
:username => database.user,
|
data/lib/deep_thought/version.rb
CHANGED
data/script/bootstrap
CHANGED
@@ -1,3 +1,67 @@
|
|
1
1
|
#!/bin/sh
|
2
2
|
|
3
|
+
echo ''
|
4
|
+
echo 'Boostraping Deep Thought...'
|
5
|
+
|
6
|
+
ruby --version >/dev/null 2>&1 || { echo >&2 "\nIt looks like the Ruby isn't installed. You're going to need it: https://www.ruby-lang.org/en/\n"; exit 1; }
|
7
|
+
git --version >/dev/null 2>&1 || { echo >&2 "\nIt looks like the Heroku Toolbelt isn't installed. You're going to need it: http://git-scm.com/\n"; exit 1; }
|
8
|
+
psql --version >/dev/null 2>&1 || { echo >&2 "\nIt looks like PostgreSQL isn't installed. You're going to need it: http://www.postgresql.org/\n"; exit 1; }
|
9
|
+
|
10
|
+
create_env() {
|
11
|
+
echo "RACK_ENV=development" > "${PWD}/.env"
|
12
|
+
echo "SESSION_SECRET=secret" >> "${PWD}/.env"
|
13
|
+
}
|
14
|
+
|
15
|
+
echo ''
|
16
|
+
echo 'Creating .env file...'
|
17
|
+
|
18
|
+
if [ -f "${PWD}/.env" ]; then
|
19
|
+
echo ''
|
20
|
+
read -p "File already exists - what would you like to do? [s]kip or [o]verwrite? " action
|
21
|
+
|
22
|
+
case "$action" in
|
23
|
+
o )
|
24
|
+
create_env
|
25
|
+
esac
|
26
|
+
else
|
27
|
+
create_env
|
28
|
+
fi
|
29
|
+
|
30
|
+
echo ''
|
31
|
+
echo 'Installing required gems...'
|
32
|
+
|
3
33
|
bundle install --binstubs
|
34
|
+
|
35
|
+
create_db() {
|
36
|
+
psql -l >/dev/null 2>&1 || { echo >&2 "\nIt looks like PostgreSQL isn't running. Depending on how you installed it, there are any number of ways it could be started. Go get it running and then bootstrap again.\n"; exit 1; }
|
37
|
+
|
38
|
+
echo ''
|
39
|
+
echo 'Creating deep_thought user...'
|
40
|
+
|
41
|
+
createuser deep_thought >/dev/null 2>&1
|
42
|
+
|
43
|
+
echo 'Creating deep_thought_development database...'
|
44
|
+
createdb -O deep_thought -E utf8 deep_thought_development >/dev/null 2>&1
|
45
|
+
|
46
|
+
echo 'Creating deep_thought_test database...'
|
47
|
+
createdb -O deep_thought -E utf8 deep_thought_test >/dev/null 2>&1
|
48
|
+
|
49
|
+
echo 'Running migrations...'
|
50
|
+
bundle exec rake db:migrate
|
51
|
+
bundle exec rake db:migrate RACK_ENV=test
|
52
|
+
|
53
|
+
echo 'Creating user test@test.com with password "secret"'
|
54
|
+
bundle exec rake create_user[test@test.com,secret] >/dev/null 2>&1
|
55
|
+
}
|
56
|
+
|
57
|
+
echo ''
|
58
|
+
read -p "Would you like me to create and configure the PostgreSQL database for this project? [y]es or [n]o? " action
|
59
|
+
|
60
|
+
case "$action" in
|
61
|
+
y )
|
62
|
+
create_db
|
63
|
+
esac
|
64
|
+
|
65
|
+
echo ''
|
66
|
+
echo 'Done!'
|
67
|
+
echo ''
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: deep_thought
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ian Lollar
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-12-
|
11
|
+
date: 2013-12-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
@@ -234,6 +234,20 @@ dependencies:
|
|
234
234
|
- - ~>
|
235
235
|
- !ruby/object:Gem::Version
|
236
236
|
version: 1.0.0
|
237
|
+
- !ruby/object:Gem::Dependency
|
238
|
+
name: dotenv
|
239
|
+
requirement: !ruby/object:Gem::Requirement
|
240
|
+
requirements:
|
241
|
+
- - ~>
|
242
|
+
- !ruby/object:Gem::Version
|
243
|
+
version: '0.9'
|
244
|
+
type: :development
|
245
|
+
prerelease: false
|
246
|
+
version_requirements: !ruby/object:Gem::Requirement
|
247
|
+
requirements:
|
248
|
+
- - ~>
|
249
|
+
- !ruby/object:Gem::Version
|
250
|
+
version: '0.9'
|
237
251
|
- !ruby/object:Gem::Dependency
|
238
252
|
name: minitest
|
239
253
|
requirement: !ruby/object:Gem::Requirement
|