recipes_matic 1.2.1 → 1.3.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 +13 -3
- data/README.md +4 -0
- data/example_Capfile +31 -0
- data/example_deploy.rb +43 -0
- data/lib/generators/recipes_matic/templates/config/deploy/recipes/base.rb +7 -3
- data/lib/generators/recipes_matic/templates/config/deploy/recipes/templates/backup_model.erb +8 -3
- data/lib/generators/recipes_matic/templates/lib/capistrano/tasks/db.rake +13 -1
- data/lib/generators/recipes_matic/templates/lib/capistrano/tasks/postgresql.rake +26 -29
- data/lib/generators/recipes_matic/templates/lib/capistrano/tasks/rails.rake +12 -0
- data/lib/generators/recipes_matic/templates/lib/capistrano/tasks/uploads.rake +28 -0
- data/lib/recipes_matic/version.rb +1 -1
- metadata +6 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 07e253404c7f46d4e6e00bc1b2508042457ac8e9
|
4
|
+
data.tar.gz: 6c8306917f444e4916548a449bd3036f8428f22b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 49ddd3edde145e3c2f0575d7787c71d4b2e871015a94a4cef7c75490c6cd5b77bb95d2e2c06b78cac11877d0e754b02f34141ea16f29053c70532193e3e15b0c
|
7
|
+
data.tar.gz: 5b4f40bf613f2c016fdfc71ccaa80caa4af26966785c50ad65d0752db687efe8aa141d0c7c4f1ecb5e3dd5bbfd3855d0e9ce6b527c097c1a26c78ff2bcb3c176
|
data/CHANGELOG.md
CHANGED
@@ -1,8 +1,18 @@
|
|
1
1
|
|
2
2
|
#### [Current]
|
3
|
-
|
4
|
-
|
5
|
-
|
3
|
+
* [f3d81e0](../../commit/f3d81e0) - __(Ismail Akbudak)__ update version v1.3.0
|
4
|
+
* [9e3f191](../../commit/9e3f191) - __(Ismail Akbudak)__ fix deploy logic
|
5
|
+
* [d1dfd72](../../commit/d1dfd72) - __(İsmail)__ Rename example_Capfile.rb to example_Capfile
|
6
|
+
* [5b8ee1b](../../commit/5b8ee1b) - __(İsmail)__ Update README.md
|
7
|
+
* [5e1023b](../../commit/5e1023b) - __(İsmail)__ Create example_Capfile.rb
|
8
|
+
* [be021d1](../../commit/be021d1) - __(İsmail)__ Update README.md
|
9
|
+
* [1097dfd](../../commit/1097dfd) - __(İsmail)__ Update README.md
|
10
|
+
* [9995d5a](../../commit/9995d5a) - __(İsmail)__ Create example_deploy.rb
|
11
|
+
* [01812de](../../commit/01812de) - __(Ismail Akbudak)__ add upload directories task
|
12
|
+
* [a3694f9](../../commit/a3694f9) - __(Ismail Akbudak)__ fix error
|
13
|
+
* [711fbbe](../../commit/711fbbe) - __(Ismail Akbudak)__ improve postgresql tasks
|
14
|
+
* [0ab83a1](../../commit/0ab83a1) - __(Ismail Akbudak)__ add rails tasks
|
15
|
+
* [6580920](../../commit/6580920) - __(Tayfun Öziş ERİKAN)__ Development dependency problem was solved
|
6
16
|
* [e623c33](../../commit/e623c33) - __(Tayfun Öziş ERİKAN)__ Bump version v1.2.0
|
7
17
|
* [ea6110e](../../commit/ea6110e) - __(Tayfun Öziş ERİKAN)__ Improvements were done - LICENSE file was updated - README was updated - Gemspecs were updated
|
8
18
|
* [fcec848](../../commit/fcec848) - __(Ismail Akbudak)__ add maintenance mode for zero down time deploy
|
data/README.md
CHANGED
@@ -46,10 +46,14 @@ Add this line to end of `config/deploy.rb` file
|
|
46
46
|
```ruby
|
47
47
|
load 'config/deploy/recipes/base.rb'
|
48
48
|
```
|
49
|
+
Also look our [example config/deploy.rb file](example_deploy.rb)
|
50
|
+
[example Capfile file](example_Capfile)
|
49
51
|
|
50
52
|
If you want to prepare your server, run the following command
|
53
|
+
|
51
54
|
For production :
|
52
55
|
`bundle exec cap production deploy:prepare`
|
56
|
+
|
53
57
|
For staging :
|
54
58
|
`bundle exec cap staging deploy:prepare`
|
55
59
|
|
data/example_Capfile
ADDED
@@ -0,0 +1,31 @@
|
|
1
|
+
# Load DSL and set up stages
|
2
|
+
require 'capistrano/setup'
|
3
|
+
|
4
|
+
# Include default deployment tasks
|
5
|
+
require 'capistrano/deploy'
|
6
|
+
require 'capistrano/rails'
|
7
|
+
require 'capistrano/bundler'
|
8
|
+
require 'sshkit/sudo'
|
9
|
+
require 'capistrano/maintenance'
|
10
|
+
|
11
|
+
# Include tasks from other gems included in your Gemfile
|
12
|
+
#
|
13
|
+
# For documentation on these, see for example:
|
14
|
+
#
|
15
|
+
# https://github.com/capistrano/rvm
|
16
|
+
# https://github.com/capistrano/rbenv
|
17
|
+
# https://github.com/capistrano/chruby
|
18
|
+
# https://github.com/capistrano/bundler
|
19
|
+
# https://github.com/capistrano/rails
|
20
|
+
# https://github.com/capistrano/passenger
|
21
|
+
#
|
22
|
+
# require 'capistrano/rvm'
|
23
|
+
# require 'capistrano/rbenv'
|
24
|
+
# require 'capistrano/chruby'
|
25
|
+
# require 'capistrano/bundler'
|
26
|
+
# require 'capistrano/rails/assets'
|
27
|
+
# require 'capistrano/rails/migrations'
|
28
|
+
# require 'capistrano/passenger'
|
29
|
+
|
30
|
+
# Load custom tasks from `lib/capistrano/tasks` if you have any defined
|
31
|
+
Dir.glob('lib/capistrano/tasks/*.rake').each { |r| import r }
|
data/example_deploy.rb
ADDED
@@ -0,0 +1,43 @@
|
|
1
|
+
# config valid only for current version of Capistrano
|
2
|
+
lock '3.4.0'
|
3
|
+
|
4
|
+
set :application, 'appname'
|
5
|
+
set :local_user, 'deploy'
|
6
|
+
set :stages, %w(staging production)
|
7
|
+
set :default_stage, 'production'
|
8
|
+
set :repo_url, "git@github.com:username/#{fetch(:application)}.git"
|
9
|
+
|
10
|
+
# Default branch is :master
|
11
|
+
# ask :branch, `git rev-parse --abbrev-ref HEAD`.chomp
|
12
|
+
|
13
|
+
# Default deploy_to directory is /var/www/blog2
|
14
|
+
set :deploy_to, "/home/#{fetch(:local_user)}/apps/#{fetch(:application)}"
|
15
|
+
|
16
|
+
# Default value for :scm is :git
|
17
|
+
set :scm, :git
|
18
|
+
|
19
|
+
# Default value for :format is :pretty
|
20
|
+
# set :format, :pretty
|
21
|
+
|
22
|
+
# Default value for :log_level is :debug
|
23
|
+
# set :log_level, :debug
|
24
|
+
|
25
|
+
# Default value for :pty is false
|
26
|
+
set :pty, true
|
27
|
+
|
28
|
+
# Default value for :linked_files is []
|
29
|
+
set :linked_files, fetch(:linked_files, []).push('config/database.yml')
|
30
|
+
|
31
|
+
# Default value for linked_dirs is []
|
32
|
+
set :linked_dirs, fetch(:linked_dirs, []).push('log', 'tmp/pids', 'tmp/cache', 'tmp/sockets', 'vendor/bundle', 'public/system', 'public/upload', 'public/images', 'public/seat_images')
|
33
|
+
|
34
|
+
# Default value for default_env is {}
|
35
|
+
# set :default_env, { path: "/opt/ruby/bin:$PATH" }
|
36
|
+
set :default_env, { path: '$HOME/.rbenv/shims:$HOME/.rbenv/bin:$PATH' }
|
37
|
+
|
38
|
+
# Default value for keep_releases is 5
|
39
|
+
# set :keep_releases, 5
|
40
|
+
|
41
|
+
# Look our recipes
|
42
|
+
# https://github.com/lab2023/recipes_matic
|
43
|
+
load 'config/deploy/recipes/base.rb'
|
@@ -2,6 +2,8 @@ set :shared_path, "#{fetch(:deploy_to)}/shared"
|
|
2
2
|
set :current_path, "#{fetch(:deploy_to)}/current"
|
3
3
|
set :postgresql_pid, "/var/run/postgresql/9.3-main.pid"
|
4
4
|
set :unicorn_pid, "#{fetch(:current_path)}/tmp/pids/unicorn.pid"
|
5
|
+
set :postgresql_host, 'localhost'
|
6
|
+
set :postgresql_port, '5432'
|
5
7
|
set :run_path, '$HOME/.rbenv/shims/'
|
6
8
|
set :maintenance_template_path, File.expand_path('../templates/maintenance.html.erb', __FILE__)
|
7
9
|
# local user group on server. We use deploy group
|
@@ -38,12 +40,14 @@ namespace :deploy do
|
|
38
40
|
after 'deploy', 'deploy:cleanup_assets'
|
39
41
|
before 'unicorn:upgrade', 'maintenance:enable'
|
40
42
|
after 'deploy', 'unicorn:upgrade'
|
41
|
-
after 'unicorn:upgrade', '
|
43
|
+
after 'unicorn:upgrade', 'unicorn:stop'
|
44
|
+
after 'unicorn:stop', 'unicorn:start'
|
45
|
+
after 'unicorn:start', 'maintenance:disable'
|
42
46
|
|
43
47
|
desc <<-DESC
|
44
48
|
Prepare environment for first deploy. You can use this command for first deploy
|
45
49
|
This command invokes
|
46
|
-
-
|
50
|
+
- db:create_file
|
47
51
|
- deploy(starting updating publishing finishing)
|
48
52
|
- postgresql:setup
|
49
53
|
- nginx:setup
|
@@ -54,7 +58,7 @@ namespace :deploy do
|
|
54
58
|
DESC
|
55
59
|
task :prepare do
|
56
60
|
puts 'prepare'
|
57
|
-
invoke '
|
61
|
+
invoke 'db:create_file'
|
58
62
|
%w{starting updating publishing finishing}.each do |task|
|
59
63
|
invoke "deploy:#{task}"
|
60
64
|
end
|
data/lib/generators/recipes_matic/templates/config/deploy/recipes/templates/backup_model.erb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
Backup::Model.new(:<%= fetch(:application) %>, '<%= fetch(:application) %> backup') do
|
1
|
+
Backup::Model.new(:<%= fetch(:application) %>, '<%= fetch(:application) %> - <% fetch(:rails_env) %> backup') do
|
2
2
|
##
|
3
3
|
# Split [Splitter]
|
4
4
|
#
|
@@ -35,18 +35,23 @@ Backup::Model.new(:<%= fetch(:application) %>, '<%= fetch(:application) %> backu
|
|
35
35
|
##
|
36
36
|
# Hipchat [Notifier]
|
37
37
|
#
|
38
|
+
<% if fetch(:use_hipchat).casecmp('y') != 0 %>
|
38
39
|
=begin
|
40
|
+
<% end %>
|
39
41
|
notify_by Hipchat do |hipchat|
|
40
42
|
hipchat.on_success = true
|
41
43
|
hipchat.on_warning = true
|
42
44
|
hipchat.on_failure = true
|
43
|
-
hipchat.token = "
|
44
|
-
|
45
|
+
hipchat.token = "<%= fetch(:hipchat_token) %>"
|
46
|
+
# get first 15 character of application, there is an error after 15 length
|
47
|
+
hipchat.from = "<%= fetch(:application)[0..14] %>"
|
45
48
|
hipchat.rooms_notified = ["backup"]
|
46
49
|
hipchat.success_color = "green"
|
47
50
|
hipchat.warning_color = "yellow"
|
48
51
|
hipchat.failure_color = "red"
|
49
52
|
end
|
53
|
+
<% if fetch(:use_hipchat).casecmp('y') != 0 %>
|
50
54
|
=end
|
55
|
+
<% end %>
|
51
56
|
|
52
57
|
end
|
@@ -3,7 +3,7 @@ namespace :db do
|
|
3
3
|
task :setup do
|
4
4
|
on roles(:app) do
|
5
5
|
execute "mkdir -p #{fetch(:shared_path)}/config"
|
6
|
-
template 'database.yml.erb', "#{shared_path}/config/database.yml"
|
6
|
+
template 'database.yml.erb', "#{fetch(:shared_path)}/config/database.yml"
|
7
7
|
end
|
8
8
|
end
|
9
9
|
desc 'Run rake db:seed.'
|
@@ -16,4 +16,16 @@ namespace :db do
|
|
16
16
|
end
|
17
17
|
end
|
18
18
|
end
|
19
|
+
desc 'Create empty database file'
|
20
|
+
task :create_file do
|
21
|
+
on roles(:app) do
|
22
|
+
execute :mkdir, '-p', "#{fetch(:shared_path)}/config"
|
23
|
+
if test("[ -f #{fetch(:shared_path)}/config/database.yml ]")
|
24
|
+
debug "#{fetch(:shared_path)}/config/database.yml file is exist"
|
25
|
+
else
|
26
|
+
info "#{fetch(:shared_path)}/config/database.yml file does not exist, and it has been created"
|
27
|
+
template 'database.yml.erb', "#{fetch(:shared_path)}/config/database.yml"
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
19
31
|
end
|
@@ -3,29 +3,39 @@ namespace :postgresql do
|
|
3
3
|
desc 'Setup postgresql for application'
|
4
4
|
task :setup do
|
5
5
|
# Ask information
|
6
|
-
ask :
|
7
|
-
|
8
|
-
ask :
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
6
|
+
ask :postgresql_user, "Postgresql username"
|
7
|
+
puts fetch(:postgresql_user)
|
8
|
+
ask :postgresql_password, "Postgresql password for #{fetch(:postgresql_user)}"
|
9
|
+
puts fetch(:postgresql_password)
|
10
|
+
ask :postgresql_database, "Postgresql database"
|
11
|
+
puts fetch(:postgresql_database)
|
12
|
+
ask :create_db_user, "Create database user? Yes(y) or No(n)"
|
13
|
+
puts fetch(:create_db_user)
|
14
|
+
ask :create_db, "Create database? Yes(y) or No(n)"
|
15
|
+
puts fetch(:create_db)
|
16
|
+
ask :use_hipchat, "Do you want to add hipchat token? Yes(y) or No(n)"
|
17
|
+
puts fetch(:use_hipchat)
|
18
|
+
if fetch(:use_hipchat).casecmp('y') == 0
|
19
|
+
ask :hipchat_token, "Hipchat token"
|
20
|
+
puts fetch(:hipchat_token)
|
21
|
+
end
|
16
22
|
|
17
23
|
# Run queries
|
18
24
|
on roles(:app) do
|
19
|
-
puts 'Creating user with password'
|
20
|
-
# Create database user
|
21
|
-
sudo %Q{sudo -u postgres psql -c "create user #{fetch(:postgresql_user)} with password '#{fetch(:postgresql_password)}';"}
|
22
|
-
puts 'Creating database with owner'
|
23
|
-
sudo %Q{sudo -u postgres psql -c "create database "#{fetch(:postgresql_database)}_#{fetch(:rails_env)}" owner #{fetch(:postgresql_user)} encoding 'UTF8' LC_COLLATE = 'en_US.UTF-8' LC_CTYPE = 'en_US.UTF-8' TEMPLATE template0;"}
|
24
25
|
|
26
|
+
if fetch(:create_db_user).casecmp('y') == 0
|
27
|
+
puts 'Creating user with password'
|
28
|
+
# Create database user
|
29
|
+
sudo %Q{sudo -u postgres psql -c "create user #{fetch(:postgresql_user)} with password '#{fetch(:postgresql_password)}';"}
|
30
|
+
end
|
31
|
+
if fetch(:create_db).casecmp('y') == 0
|
32
|
+
puts 'Creating database with owner'
|
33
|
+
sudo %Q{sudo -u postgres psql -c "create database "#{fetch(:postgresql_database)}_#{fetch(:rails_env)}" owner #{fetch(:postgresql_user)} encoding 'UTF8' LC_COLLATE = 'en_US.UTF-8' LC_CTYPE = 'en_US.UTF-8' TEMPLATE template0;"}
|
34
|
+
end
|
25
35
|
puts 'Creating database.yml.'
|
26
36
|
# Configure database settings
|
27
37
|
execute "mkdir -p #{fetch(:shared_path)}/config"
|
28
|
-
template 'database.yml.erb', "#{shared_path}/config/database.yml"
|
38
|
+
template 'database.yml.erb', "#{fetch(:shared_path)}/config/database.yml"
|
29
39
|
|
30
40
|
puts 'Creating backup model.'
|
31
41
|
# Check model is exist
|
@@ -50,17 +60,4 @@ namespace :postgresql do
|
|
50
60
|
end
|
51
61
|
end
|
52
62
|
|
53
|
-
# Create database file on start
|
54
|
-
task :create_database_file do
|
55
|
-
on roles(:app) do
|
56
|
-
execute :mkdir, '-p', "#{fetch(:shared_path)}/config"
|
57
|
-
if test("[ -f #{fetch(:shared_path)}/config/database.yml ]")
|
58
|
-
debug "#{fetch(:shared_path)}/config/database.yml file is exist"
|
59
|
-
else
|
60
|
-
info "#{fetch(:shared_path)}/config/database.yml file does not exist, and it has been created"
|
61
|
-
template 'database.yml.erb', "#{shared_path}/config/database.yml"
|
62
|
-
end
|
63
|
-
end
|
64
|
-
end
|
65
|
-
|
66
63
|
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
namespace :rails do
|
2
|
+
|
3
|
+
desc 'Open a rails console `cap [staging] rails:console [server_index default: 0]`'
|
4
|
+
task :console do
|
5
|
+
server = roles(:app)[ARGV[2].to_i]
|
6
|
+
puts "Opening a console on: #{server.hostname}…."
|
7
|
+
cmd = "ssh #{server.user}@#{server.hostname} -tp #{server.port} 'cd #{fetch(:current_path)} && RAILS_ENV=#{fetch(:rails_env)} #{fetch(:run_path)}bundle exec rails console'"
|
8
|
+
puts cmd
|
9
|
+
exec cmd
|
10
|
+
end
|
11
|
+
|
12
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
namespace :uploads do
|
2
|
+
|
3
|
+
desc 'Upload your directory files'
|
4
|
+
task :do do
|
5
|
+
# your local file root directories
|
6
|
+
# TODO change array values
|
7
|
+
upload_dirs = ['public/your_upload', 'public/your_image' ]
|
8
|
+
# your server upload directory
|
9
|
+
upload_to_dir= "#{fetch(:shared_path)}/"
|
10
|
+
|
11
|
+
on roles(:app) do
|
12
|
+
upload_dirs.map do |d|
|
13
|
+
dir = File.expand_path(d)
|
14
|
+
files = Dir.glob("#{dir}/**/**/**/**/**/**")
|
15
|
+
files.map do |file|
|
16
|
+
name = file[file.index(d)..-1]
|
17
|
+
path = "#{upload_to_dir}#{name}"
|
18
|
+
puts "File uploading to path: #{path}"
|
19
|
+
if File.directory?(file)
|
20
|
+
execute "mkdir -p #{path}"
|
21
|
+
else
|
22
|
+
upload! file,"#{path}"
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: recipes_matic
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- lab2023
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2016-02-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -67,6 +67,8 @@ files:
|
|
67
67
|
- MIT-LICENSE
|
68
68
|
- README.md
|
69
69
|
- Rakefile
|
70
|
+
- example_Capfile
|
71
|
+
- example_deploy.rb
|
70
72
|
- lib/generators/recipes_matic/install_generator.rb
|
71
73
|
- lib/generators/recipes_matic/templates/config/deploy/recipes/base.rb
|
72
74
|
- lib/generators/recipes_matic/templates/config/deploy/recipes/templates/backup_model.erb
|
@@ -85,7 +87,9 @@ files:
|
|
85
87
|
- lib/generators/recipes_matic/templates/lib/capistrano/tasks/monit.rake
|
86
88
|
- lib/generators/recipes_matic/templates/lib/capistrano/tasks/nginx.rake
|
87
89
|
- lib/generators/recipes_matic/templates/lib/capistrano/tasks/postgresql.rake
|
90
|
+
- lib/generators/recipes_matic/templates/lib/capistrano/tasks/rails.rake
|
88
91
|
- lib/generators/recipes_matic/templates/lib/capistrano/tasks/unicorn.rake
|
92
|
+
- lib/generators/recipes_matic/templates/lib/capistrano/tasks/uploads.rake
|
89
93
|
- lib/recipes_matic.rb
|
90
94
|
- lib/recipes_matic/version.rb
|
91
95
|
- recipes_matic.gemspec
|