mina-data_sync 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Binary file
data/backup.tar ADDED
Binary file
@@ -0,0 +1,39 @@
1
+ default: &default
2
+ adapter: postgresql
3
+ encoding: utf8
4
+ pool: 5
5
+ username: postgres
6
+ password:
7
+ host: localhost
8
+
9
+ rakovac: &rakovac
10
+ <<: *default
11
+ username: <%= ENV['PGSQL_USER'] %>
12
+ password: <%= ENV['PGSQL_PASSWORD'] %>
13
+ host: <%= ENV['PGSQL_HOST'] %>
14
+ port: <%= ENV['PGSQL_PORT'] %>
15
+
16
+ # development:
17
+ # adapter: mysql2
18
+ # encoding: utf8
19
+ # database: miramo_club_development
20
+ # pool: 5
21
+ # username: root
22
+ # password:
23
+ # host: localhost
24
+
25
+ development: &development
26
+ <<: *default
27
+ database: miramo_club_development
28
+
29
+ test:
30
+ <<: *default
31
+ database: miramo_club_test
32
+
33
+ production: &production
34
+ <<: *rakovac
35
+ database: miramo_infinum_co
36
+
37
+ staging:
38
+ <<: *rakovac
39
+ database: miramo_staging_infinum_co
data/config/deploy.rb ADDED
@@ -0,0 +1,125 @@
1
+ lib = File.expand_path('../../lib', __FILE__)
2
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
+
4
+ require 'mina/bundler'
5
+ require 'mina/rails'
6
+ require 'mina/git'
7
+ require 'pry'
8
+ require 'mina/data_sync'
9
+ # require 'mina/whenever' # uncomment if using whenever
10
+
11
+ # Setup project
12
+ # - mina production setup
13
+ # Deploy project
14
+ # - mina production deploy
15
+ # Tail log from project
16
+ # - mina prodution log
17
+ # Pull data from production
18
+ # - mina production data:pull
19
+
20
+ set :repository, 'git@bitbucket.org:infinum_hr/web_miramoclub.git'
21
+ set :backup_path, '/Users/stef/dev/databases/pg'
22
+ set :port, 22220
23
+ set :user, 'staging'
24
+ set :domain, 'miramo.infinum.co'
25
+
26
+ task :production do
27
+ set :deploy_to, '/home/staging/www/m/miramo.infinum.co'
28
+ set :rails_env, 'production'
29
+ set :branch, 'master'
30
+ set :bundle_withouts, 'development:test:staging'
31
+ end
32
+
33
+ # If you have
34
+ task :staging do
35
+ set :domain, 'miramo.infinum.co'
36
+ set :deploy_to, '/home/staging/www/m/miramo.infinum.co'
37
+ set :rails_env, 'staging'
38
+ set :branch, 'develop'
39
+ set :bundle_withouts, 'development:test:production'
40
+ end
41
+
42
+ task :development do
43
+ set :rails_env, 'development'
44
+ end
45
+ ##################################################################################
46
+ ########################## DO NOT EDIT THE CODE BELOW ############################
47
+ ##################################################################################
48
+
49
+ # While linking asssets it will only precompile that assets that was changed, not all of them
50
+ set :shared_paths, ['log']
51
+
52
+ task :deploy => :stages do
53
+ deploy do
54
+ invoke :'git:clone'
55
+ invoke :'deploy:link_shared_paths'
56
+ invoke :'bundle:install'
57
+ invoke :'rails:db_migrate'
58
+ invoke :'rails:assets_precompile'
59
+ invoke :'deploy:cleanup'
60
+
61
+ to :launch do
62
+ # Capistrano to Mina Fix, symlink system to shared
63
+ queue! %[echo "-----> Symlink system to shared"]
64
+ queue! %[ln -nFs #{deploy_to}/shared/system #{deploy_to}/#{current_path}/public/system]
65
+
66
+ #invoke :'whenever:update' # uncomment if using whenever (why here? read https://gist.github.com/gabskoro/abfc245a55a9d155f8de)
67
+ invoke :restart_application
68
+ end
69
+ end
70
+ end
71
+
72
+ # First ensure that the stage is selected
73
+ task :stages do
74
+ unless domain
75
+ print_error "A server needs to be specified. e.g. production/staging"
76
+ exit
77
+ end
78
+ end
79
+
80
+ # Just overwrote to execute stages first
81
+ task :setup => :stages do
82
+ queue! %[mkdir -p "#{deploy_to}/shared/log"]
83
+ queue! %[chmod g+rx,u+rwx "#{deploy_to}/shared/log"]
84
+ end
85
+
86
+ # Tail log from server
87
+ task :log => :stages do
88
+ queue "tail -f #{deploy_to}/#{current_path}/log/#{rails_env}.log"
89
+ end
90
+
91
+ # Restart application after deployment
92
+ task :restart_application do
93
+ queue %[echo "-----> Restarting application"]
94
+ queue "mkdir -p #{deploy_to}/#{current_path}/tmp"
95
+ queue "touch #{deploy_to}/#{current_path}/tmp/restart.txt"
96
+ end
97
+
98
+ namespace :data do
99
+ set :pretty_print, true
100
+ set :db_path, '/Users/stef/dev/databases'
101
+
102
+ # # Sync database
103
+ # RYAML = <<-BASH
104
+ # function ryaml {
105
+ # ruby -ryaml -e 'puts ARGV[1..-1].inject(YAML.load(File.read(ARGV[0]))) {|acc, key| acc[key] }' "$@"
106
+ # };
107
+ # BASH
108
+
109
+ task :pull => :stages do
110
+ queue RYAML
111
+ queue! "HOST=$(ryaml #{deploy_to}/#{current_path}/config/database.yml #{rails_env} host)"
112
+ queue! "DATABASE=$(ryaml #{deploy_to}/#{current_path}/config/database.yml #{rails_env} database)"
113
+ queue! "USERNAME=$(ryaml #{deploy_to}/#{current_path}/config/database.yml #{rails_env} username)"
114
+ queue! "PASSWORD=$(ryaml #{deploy_to}/#{current_path}/config/database.yml #{rails_env} password)"
115
+ queue! "mysqldump $DATABASE --host=$HOST --user=$USERNAME --password=$PASSWORD > #{deploy_to}/dump.sql"
116
+ queue! "gzip -f #{deploy_to}/dump.sql"
117
+
118
+ to :after_hook do
119
+ queue! "scp -P #{port} #{user}@#{domain}:#{deploy_to}/dump.sql.gz ."
120
+ queue! "gunzip -f dump.sql.gz"
121
+ queue! "#{RYAML} mysql --verbose --user=$(ryaml config/database.yml development username) --password=$(ryaml config/database.yml development password) $(ryaml config/database.yml development database) < dump.sql"
122
+ queue! "rm dump.sql"
123
+ end
124
+ end
125
+ end
@@ -0,0 +1,4 @@
1
+ set_default :database_path, "config/database.yml"
2
+ set_default :backup_path, '.'
3
+ set_default :backup_file, -> { "backup-#{Date.today}.tar" }
4
+ set_default :pg_options, "-O -Ft"
@@ -0,0 +1,70 @@
1
+ DC = <<-RUBY
2
+ dc = YAML.load(ERB.new(File.read(ARGV[0])).result)[ARGV[1]]
3
+ adapter = dc["adapter"]
4
+ database = dc["database"]
5
+ host = dc["host"]
6
+ username = dc["username"]
7
+ password = dc["password"]
8
+ port = dc["port"]
9
+ arguments = ""
10
+ case adapter.to_s
11
+ when "postgresql"
12
+ arguments += " -d " + database if database
13
+ arguments += " -h " + host if host
14
+ arguments += " -U " + username if username
15
+ arguments += " -p " + port.to_s if port
16
+ puts arguments
17
+ end
18
+ RUBY
19
+
20
+ DATABASE_CONF = <<-BASH
21
+ function database_conf {
22
+ ruby -ryaml -rerb -e '#{DC}' "$@"
23
+ };
24
+ BASH
25
+
26
+ # module Mina
27
+ # module DataSync
28
+ # class Base
29
+ # def initialize(database_path, rails_env, deploy_to, tar)
30
+ # @database_conf = YAML.load(ERB.new(File.read(database_path)).result)[rails_env]
31
+ # @tar = tar
32
+ # @deploy_to = deploy_to
33
+ # end
34
+
35
+ # def database
36
+ # @database_conf['database']
37
+ # end
38
+
39
+ # def host
40
+ # @database_conf['host']
41
+ # end
42
+
43
+ # def username
44
+ # @database_conf['username']
45
+ # end
46
+
47
+ # def port
48
+ # @database_conf['port']
49
+ # end
50
+
51
+ # def file_sql
52
+ # @file_sql ||= "backup-#{Date.today}.sql"
53
+ # end
54
+
55
+ # def file_tar
56
+ # @file_tar ||= "backup-#{Date.today}.tar"
57
+ # end
58
+
59
+ # def file
60
+ # @tar ? file_tar : file_sql
61
+ # end
62
+
63
+ # def options
64
+ # options = "-O -a"
65
+ # options += ' -Ft' if @tar
66
+ # options
67
+ # end
68
+ # end
69
+ # end
70
+ # end
@@ -0,0 +1,39 @@
1
+ namespace :data_sync do
2
+ set :term_mode, :pretty
3
+
4
+ desc "pull"
5
+ task :pg_pull => :environment do
6
+ queue "echo '-----> Dumping database'"
7
+ queue "#{DATABASE_CONF}"
8
+ queue "cd #{deploy_to}/#{current_path}"
9
+ queue "ARGS=$(database_conf #{database_path} #{rails_env})"
10
+ queue! "pg_dump $ARGS #{pg_options} --clean > #{backup_file}"
11
+
12
+ to :after_hook do
13
+ queue "echo '-----> Copying backup'"
14
+ queue "#{DATABASE_CONF}"
15
+ queue "ARGS=$(database_conf #{database_path} development)"
16
+ queue! "scp -P #{port} #{user}@#{domain}:#{deploy_to}/#{current_path}/#{backup_file} #{backup_path}/#{backup_file}"
17
+ queue "echo '-----> Restoring database'"
18
+ queue! "pg_restore $ARGS #{pg_options} --clean #{backup_path}/#{backup_file}"
19
+ end
20
+ end
21
+
22
+ desc "push"
23
+ task :pg_push => :environment do
24
+ to :before_hook do
25
+ queue "#{DATABASE_CONF}"
26
+ queue "echo '-----> Dumping database'"
27
+ queue "ARGS=$(database_conf #{database_path} development)"
28
+ queue! "pg_dump $ARGS #{pg_options} --clean > #{backup_file}"
29
+ queue "echo '-----> Copying backup'"
30
+ queue! "scp -P #{port} #{backup_file} #{user}@#{domain}:#{deploy_to}/#{current_path}/#{backup_file}"
31
+ end
32
+
33
+ queue "echo '-----> Restoring database'"
34
+ queue "#{DATABASE_CONF}"
35
+ queue "cd #{deploy_to}/#{current_path}"
36
+ queue "ARGS=$(database_conf #{database_path} #{rails_env})"
37
+ queue! "pg_restore $ARGS #{pg_options} --clean #{backup_file}"
38
+ end
39
+ end
@@ -0,0 +1,5 @@
1
+ module Mina
2
+ module DataSync
3
+ VERSION = "0.0.1"
4
+ end
5
+ end
@@ -0,0 +1,12 @@
1
+ require 'yaml'
2
+ require 'erb'
3
+ require "mina/data_sync/defaults"
4
+ require "mina/data_sync/helpers"
5
+ require "mina/data_sync/version"
6
+ require "mina/data_sync/tasks"
7
+
8
+ module Mina
9
+ module DataSync
10
+ # Your code goes here...
11
+ end
12
+ end
@@ -0,0 +1,26 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'mina/data_sync/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "mina-data_sync"
8
+ spec.version = Mina::DataSync::VERSION
9
+ spec.authors = ["Stjepan Hadjic"]
10
+ spec.email = ["d4be4st@gmail.com"]
11
+ spec.summary = "Summary"
12
+ spec.description = "Description"
13
+ spec.homepage = "https://github.com/d4be4st/mina-data_sync"
14
+ spec.license = "MIT"
15
+
16
+ spec.files = `git ls-files -z`.split("\x0")
17
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
+ spec.require_paths = ["lib"]
20
+
21
+ spec.add_development_dependency "bundler", "~> 1.7"
22
+ spec.add_development_dependency "rake", "~> 10.0"
23
+ spec.add_development_dependency "pry", "~> 0"
24
+
25
+ spec.add_dependency 'mina', '~> 0'
26
+ end
metadata ADDED
@@ -0,0 +1,116 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: mina-data_sync
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Stjepan Hadjic
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-03-30 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.7'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.7'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '10.0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '10.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: pry
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: mina
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ description: Description
70
+ email:
71
+ - d4be4st@gmail.com
72
+ executables: []
73
+ extensions: []
74
+ extra_rdoc_files: []
75
+ files:
76
+ - ".gitignore"
77
+ - Gemfile
78
+ - LICENSE.txt
79
+ - README.md
80
+ - Rakefile
81
+ - backup-2015-03-30.sql
82
+ - backup-2015-03-30.tar
83
+ - backup.tar
84
+ - config/database.yml
85
+ - config/deploy.rb
86
+ - lib/mina/data_sync.rb
87
+ - lib/mina/data_sync/defaults.rb
88
+ - lib/mina/data_sync/helpers.rb
89
+ - lib/mina/data_sync/tasks.rb
90
+ - lib/mina/data_sync/version.rb
91
+ - mina-data_sync.gemspec
92
+ homepage: https://github.com/d4be4st/mina-data_sync
93
+ licenses:
94
+ - MIT
95
+ metadata: {}
96
+ post_install_message:
97
+ rdoc_options: []
98
+ require_paths:
99
+ - lib
100
+ required_ruby_version: !ruby/object:Gem::Requirement
101
+ requirements:
102
+ - - ">="
103
+ - !ruby/object:Gem::Version
104
+ version: '0'
105
+ required_rubygems_version: !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - ">="
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
110
+ requirements: []
111
+ rubyforge_project:
112
+ rubygems_version: 2.2.2
113
+ signing_key:
114
+ specification_version: 4
115
+ summary: Summary
116
+ test_files: []