from-scratch 0.6.0 → 0.7.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/README.md +6 -2
- data/chefignore +1 -0
- data/cookbooks/scratchify/README.md +6 -2
- data/cookbooks/scratchify/chefignore +1 -0
- data/cookbooks/scratchify/from-scratch.gemspec +5 -5
- data/cookbooks/scratchify/templates/node.json.erb +3 -3
- data/from-scratch.gemspec +5 -5
- data/lib/from-scratch.rb +5 -1
- data/lib/from-scratch/version.rb +1 -1
- data/templates/node.json.erb +3 -3
- metadata +6 -12
- data/cookbooks/scratchify/.chef/knife.rb +0 -6
- data/cookbooks/scratchify/bin/scratchify +0 -6
- data/cookbooks/scratchify/lib/from-scratch.rb +0 -68
- data/cookbooks/scratchify/lib/from-scratch/version.rb +0 -3
- data/cookbooks/scratchify/spec/from/scratch_spec.rb +0 -68
- data/cookbooks/scratchify/spec/spec_helper.rb +0 -9
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b239eb34db5ddc59624f2554877ca0700cf26755
|
4
|
+
data.tar.gz: 9bfe5e376edffa38b642d1de50c2035998b1f913
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 267c755543821efdb6466a64f1780e151ccb384d5058a602033579c23fcd4dd47c4bb2cf8f20f87b6f418f7d8a2995e259a32361e06f295ad9d9acb001d73b71
|
7
|
+
data.tar.gz: e1e0c001d1102f2fbecb3189c5299e4a30a916458acc5432bd3ea7c76ccd63f7562e44d16dd91318627f0de93cca32374bb2274415d036cd664fa8878bc22582
|
data/README.md
CHANGED
@@ -13,7 +13,7 @@ And everything is done. Then add following to your `config/deploy.rb` or `config
|
|
13
13
|
|
14
14
|
```ruby
|
15
15
|
server 'your.host.com', user: 'deploy', roles: %w(app db web)
|
16
|
-
set :deploy_to, "/home/deploy
|
16
|
+
set :deploy_to, "/home/deploy/#{fetch(:application)}"
|
17
17
|
```
|
18
18
|
|
19
19
|
## Supports
|
@@ -28,11 +28,15 @@ Ruby installers:
|
|
28
28
|
- RVM (default)
|
29
29
|
- rbenv: `scratchify your_app_name your.host.com --rbenv`
|
30
30
|
|
31
|
+
Setting specific ruby version:
|
32
|
+
|
33
|
+
$ scratchify your_app_name your.host.com --ruby jruby-1.7.19
|
34
|
+
|
31
35
|
## It's a kind of magic!
|
32
36
|
|
33
37
|
Not actully. Just preconfigured [Chef](https://www.chef.io/). Here are the things done with the command:
|
34
38
|
|
35
|
-
- Install user-wide RVM with latest MRI (2.2.
|
39
|
+
- Install user-wide RVM with latest MRI (2.2.4)
|
36
40
|
- Install PostgreSQL, create database with user, pg_tune a little
|
37
41
|
- Add _deploy_ non-admin user to system specially for your app, upload your SSH pub key to it
|
38
42
|
- Install nginx and replace it's default site config with one prepared for rails app
|
data/chefignore
CHANGED
@@ -13,7 +13,7 @@ And everything is done. Then add following to your `config/deploy.rb` or `config
|
|
13
13
|
|
14
14
|
```ruby
|
15
15
|
server 'your.host.com', user: 'deploy', roles: %w(app db web)
|
16
|
-
set :deploy_to, "/home/deploy
|
16
|
+
set :deploy_to, "/home/deploy/#{fetch(:application)}"
|
17
17
|
```
|
18
18
|
|
19
19
|
## Supports
|
@@ -28,11 +28,15 @@ Ruby installers:
|
|
28
28
|
- RVM (default)
|
29
29
|
- rbenv: `scratchify your_app_name your.host.com --rbenv`
|
30
30
|
|
31
|
+
Setting specific ruby version:
|
32
|
+
|
33
|
+
$ scratchify your_app_name your.host.com --ruby jruby-1.7.19
|
34
|
+
|
31
35
|
## It's a kind of magic!
|
32
36
|
|
33
37
|
Not actully. Just preconfigured [Chef](https://www.chef.io/). Here are the things done with the command:
|
34
38
|
|
35
|
-
- Install user-wide RVM with latest MRI (2.2.
|
39
|
+
- Install user-wide RVM with latest MRI (2.2.4)
|
36
40
|
- Install PostgreSQL, create database with user, pg_tune a little
|
37
41
|
- Add _deploy_ non-admin user to system specially for your app, upload your SSH pub key to it
|
38
42
|
- Install nginx and replace it's default site config with one prepared for rails app
|
@@ -18,11 +18,11 @@ Gem::Specification.new do |spec|
|
|
18
18
|
spec.executables = %w(scratchify)
|
19
19
|
spec.require_paths = %w(lib)
|
20
20
|
|
21
|
-
spec.add_development_dependency "bundler",
|
22
|
-
spec.add_development_dependency "rake",
|
23
|
-
spec.add_development_dependency 'rspec',
|
24
|
-
spec.add_development_dependency 'rspec-its'
|
25
|
-
spec.add_development_dependency 'pry',
|
21
|
+
spec.add_development_dependency "bundler", "~> 1.10"
|
22
|
+
spec.add_development_dependency "rake", "~> 10.0"
|
23
|
+
spec.add_development_dependency 'rspec', "~> 3.3"
|
24
|
+
spec.add_development_dependency 'rspec-its', "~> 1.2"
|
25
|
+
spec.add_development_dependency 'pry', "~> 0.10"
|
26
26
|
|
27
27
|
spec.add_dependency 'knife-solo'
|
28
28
|
spec.add_dependency 'knife-solo_data_bag'
|
@@ -21,7 +21,7 @@
|
|
21
21
|
|
22
22
|
<% if @options.ruby_installer == 'rvm' %>
|
23
23
|
"rvm": {
|
24
|
-
"user_default_ruby": "
|
24
|
+
"user_default_ruby": "<%= @options.ruby_version %>",
|
25
25
|
"user_install_rubies": true,
|
26
26
|
"installs": {
|
27
27
|
"deploy": true
|
@@ -38,12 +38,12 @@
|
|
38
38
|
"user_installs": [
|
39
39
|
{ "user": "deploy",
|
40
40
|
"rubies": [{
|
41
|
-
"name": "
|
41
|
+
"name": "<%= @options.ruby_version %>",
|
42
42
|
"environment": {
|
43
43
|
"RUBY_CONFIGURE_OPTS": "--disable-install-doc"
|
44
44
|
}
|
45
45
|
}],
|
46
|
-
"global": "
|
46
|
+
"global": "<%= @options.ruby_version %>"
|
47
47
|
}
|
48
48
|
]
|
49
49
|
},
|
data/from-scratch.gemspec
CHANGED
@@ -18,11 +18,11 @@ Gem::Specification.new do |spec|
|
|
18
18
|
spec.executables = %w(scratchify)
|
19
19
|
spec.require_paths = %w(lib)
|
20
20
|
|
21
|
-
spec.add_development_dependency "bundler",
|
22
|
-
spec.add_development_dependency "rake",
|
23
|
-
spec.add_development_dependency 'rspec',
|
24
|
-
spec.add_development_dependency 'rspec-its'
|
25
|
-
spec.add_development_dependency 'pry',
|
21
|
+
spec.add_development_dependency "bundler", "~> 1.10"
|
22
|
+
spec.add_development_dependency "rake", "~> 10.0"
|
23
|
+
spec.add_development_dependency 'rspec', "~> 3.3"
|
24
|
+
spec.add_development_dependency 'rspec-its', "~> 1.2"
|
25
|
+
spec.add_development_dependency 'pry', "~> 0.10"
|
26
26
|
|
27
27
|
spec.add_dependency 'knife-solo'
|
28
28
|
spec.add_dependency 'knife-solo_data_bag'
|
data/lib/from-scratch.rb
CHANGED
@@ -5,7 +5,7 @@ require 'optparse'
|
|
5
5
|
require 'ostruct'
|
6
6
|
|
7
7
|
class FromScratch
|
8
|
-
DEFAULTS = { ruby_installer: 'rvm' }
|
8
|
+
DEFAULTS = { ruby_installer: 'rvm', ruby_version: '2.2.4' }
|
9
9
|
|
10
10
|
attr_accessor :options
|
11
11
|
|
@@ -51,6 +51,10 @@ class FromScratch
|
|
51
51
|
@options.ruby_installer = 'rbenv'
|
52
52
|
end
|
53
53
|
|
54
|
+
args.on '--ruby [VERSION]', "Choose specific ruby version instead of latest MRI" do |ruby_version|
|
55
|
+
@options.ruby_version = ruby_version
|
56
|
+
end
|
57
|
+
|
54
58
|
args.on '-h', '--help', 'Prints this help' do
|
55
59
|
puts args
|
56
60
|
exit
|
data/lib/from-scratch/version.rb
CHANGED
data/templates/node.json.erb
CHANGED
@@ -21,7 +21,7 @@
|
|
21
21
|
|
22
22
|
<% if @options.ruby_installer == 'rvm' %>
|
23
23
|
"rvm": {
|
24
|
-
"user_default_ruby": "
|
24
|
+
"user_default_ruby": "<%= @options.ruby_version %>",
|
25
25
|
"user_install_rubies": true,
|
26
26
|
"installs": {
|
27
27
|
"deploy": true
|
@@ -38,12 +38,12 @@
|
|
38
38
|
"user_installs": [
|
39
39
|
{ "user": "deploy",
|
40
40
|
"rubies": [{
|
41
|
-
"name": "
|
41
|
+
"name": "<%= @options.ruby_version %>",
|
42
42
|
"environment": {
|
43
43
|
"RUBY_CONFIGURE_OPTS": "--disable-install-doc"
|
44
44
|
}
|
45
45
|
}],
|
46
|
-
"global": "
|
46
|
+
"global": "<%= @options.ruby_version %>"
|
47
47
|
}
|
48
48
|
]
|
49
49
|
},
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: from-scratch
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.7.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andrew Shaydurov
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-12-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -56,16 +56,16 @@ dependencies:
|
|
56
56
|
name: rspec-its
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- - "
|
59
|
+
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: '
|
61
|
+
version: '1.2'
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- - "
|
66
|
+
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version: '
|
68
|
+
version: '1.2'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: pry
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -575,23 +575,17 @@ files:
|
|
575
575
|
- cookbooks/rvm/test/unit/libraries/provider_rvm_installation_spec.rb
|
576
576
|
- cookbooks/rvm/test/unit/libraries/resource_rvm_installation_spec.rb
|
577
577
|
- cookbooks/rvm/test/unit/spec_helper.rb
|
578
|
-
- cookbooks/scratchify/.chef/knife.rb
|
579
578
|
- cookbooks/scratchify/Berksfile
|
580
579
|
- cookbooks/scratchify/Berksfile.lock
|
581
580
|
- cookbooks/scratchify/LICENSE.txt
|
582
581
|
- cookbooks/scratchify/README.md
|
583
582
|
- cookbooks/scratchify/Thorfile
|
584
|
-
- cookbooks/scratchify/bin/scratchify
|
585
583
|
- cookbooks/scratchify/chefignore
|
586
584
|
- cookbooks/scratchify/from-scratch.gemspec
|
587
|
-
- cookbooks/scratchify/lib/from-scratch.rb
|
588
|
-
- cookbooks/scratchify/lib/from-scratch/version.rb
|
589
585
|
- cookbooks/scratchify/metadata.json
|
590
586
|
- cookbooks/scratchify/recipes/default.rb
|
591
587
|
- cookbooks/scratchify/recipes/nginx_site.rb
|
592
588
|
- cookbooks/scratchify/recipes/pre_rvm.rb
|
593
|
-
- cookbooks/scratchify/spec/from/scratch_spec.rb
|
594
|
-
- cookbooks/scratchify/spec/spec_helper.rb
|
595
589
|
- cookbooks/scratchify/templates/database.yml.erb
|
596
590
|
- cookbooks/scratchify/templates/nginx.erb
|
597
591
|
- cookbooks/scratchify/templates/node.json.erb
|
@@ -1,68 +0,0 @@
|
|
1
|
-
require 'securerandom'
|
2
|
-
require 'erb'
|
3
|
-
require 'fileutils'
|
4
|
-
require 'optparse'
|
5
|
-
require 'ostruct'
|
6
|
-
|
7
|
-
class FromScratch
|
8
|
-
DEFAULTS = { ruby_installer: 'rvm' }
|
9
|
-
|
10
|
-
attr_accessor :options
|
11
|
-
|
12
|
-
def initialize
|
13
|
-
@options = OpenStruct.new DEFAULTS
|
14
|
-
end
|
15
|
-
|
16
|
-
def run!
|
17
|
-
parse_options
|
18
|
-
get_host_and_app_name
|
19
|
-
generate_values
|
20
|
-
|
21
|
-
{ node: ['nodes', @options.host],
|
22
|
-
user: ['data_bags/users', 'deploy']
|
23
|
-
}.each do |from, to|
|
24
|
-
FileUtils.mkdir_p File.expand_path("../../tmp/#{to[0]}", __FILE__)
|
25
|
-
File.open(File.expand_path("../../tmp/#{to.join('/')}.json", __FILE__), 'w') do |f|
|
26
|
-
f.write ERB.new(File.open(File.expand_path("../../templates/#{from}.json.erb", __FILE__)).read).result(binding)
|
27
|
-
end
|
28
|
-
end
|
29
|
-
|
30
|
-
Dir.chdir(File.expand_path('../..', __FILE__)) do
|
31
|
-
system "knife solo bootstrap root@#{@options.host} -c ./.chef/knife.rb"
|
32
|
-
system "knife solo clean root@#{@options.host} -c ./.chef/knife.rb"
|
33
|
-
end
|
34
|
-
|
35
|
-
FileUtils.rm_rf [File.expand_path('../../tmp', __FILE__)]
|
36
|
-
end
|
37
|
-
|
38
|
-
def get_host_and_app_name
|
39
|
-
@options.app_name, @options.host = ARGV.select { |x| !(x =~ /^\-/) }
|
40
|
-
|
41
|
-
unless @options.app_name && @options.host
|
42
|
-
raise ArgumentError, 'You should specify APP_NAME and HOST. Use --help for information.'
|
43
|
-
end
|
44
|
-
end
|
45
|
-
|
46
|
-
def parse_options
|
47
|
-
opt_parser = OptionParser.new do |args|
|
48
|
-
args.banner = "Usage: scratchify your_app_name your.host.com [options]"
|
49
|
-
|
50
|
-
args.on '--rbenv', 'Use RBENV instead of RVM' do
|
51
|
-
@options.ruby_installer = 'rbenv'
|
52
|
-
end
|
53
|
-
|
54
|
-
args.on '-h', '--help', 'Prints this help' do
|
55
|
-
puts args
|
56
|
-
exit
|
57
|
-
end
|
58
|
-
end
|
59
|
-
|
60
|
-
opt_parser.parse!
|
61
|
-
end
|
62
|
-
|
63
|
-
def generate_values
|
64
|
-
@options.ssh_pub_key = `cat ~/.ssh/id_rsa.pub`.strip
|
65
|
-
@options.postgresql_admin_password = `echo -n '#{SecureRandom.base64(16)}''postgres' | openssl md5 | sed -e 's/.* /md5/'`.strip
|
66
|
-
@options.postgresql_user_password = SecureRandom.base64(16)
|
67
|
-
end
|
68
|
-
end
|
@@ -1,68 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe FromScratch do
|
4
|
-
let(:instance) { described_class.new }
|
5
|
-
let(:app_name) { 'my_app' }
|
6
|
-
let(:host) { 'host.example.com' }
|
7
|
-
|
8
|
-
describe '::new' do
|
9
|
-
subject { instance }
|
10
|
-
|
11
|
-
its('options.to_h') { are_expected.to eq(described_class::DEFAULTS) }
|
12
|
-
end
|
13
|
-
|
14
|
-
describe '#get_host_and_app_name' do
|
15
|
-
before do
|
16
|
-
stub_const 'ARGV', argv
|
17
|
-
end
|
18
|
-
|
19
|
-
subject { instance.options }
|
20
|
-
|
21
|
-
context 'with app_name and host' do
|
22
|
-
before { instance.get_host_and_app_name }
|
23
|
-
let(:argv) { [app_name, host] }
|
24
|
-
|
25
|
-
its(:app_name) { is_expected.to eq(app_name) }
|
26
|
-
its(:host) { is_expected.to eq(host) }
|
27
|
-
end
|
28
|
-
|
29
|
-
context 'without one of app_name or host' do
|
30
|
-
let(:argv) { [app_name] }
|
31
|
-
|
32
|
-
it 'should raise' do
|
33
|
-
expect do
|
34
|
-
instance.get_host_and_app_name
|
35
|
-
end.to raise_error(ArgumentError)
|
36
|
-
end
|
37
|
-
|
38
|
-
context 'and with --option' do
|
39
|
-
let(:argv) { [app_name, '--option'] }
|
40
|
-
|
41
|
-
it 'should raise' do
|
42
|
-
expect do
|
43
|
-
instance.get_host_and_app_name
|
44
|
-
end.to raise_error(ArgumentError)
|
45
|
-
end
|
46
|
-
end
|
47
|
-
end
|
48
|
-
end
|
49
|
-
|
50
|
-
describe '#parse_options' do
|
51
|
-
before do
|
52
|
-
stub_const 'ARGV', argv
|
53
|
-
instance.parse_options
|
54
|
-
end
|
55
|
-
|
56
|
-
subject { instance.options }
|
57
|
-
|
58
|
-
context 'with --rbenv' do
|
59
|
-
let(:argv) { [app_name, host, '--rbenv'] }
|
60
|
-
|
61
|
-
its(:ruby_installer) { is_expected.to eq('rbenv') }
|
62
|
-
end
|
63
|
-
end
|
64
|
-
|
65
|
-
it 'has a version number' do
|
66
|
-
expect(FromScratch::VERSION).not_to be nil
|
67
|
-
end
|
68
|
-
end
|