mina-data_sync 0.0.1

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.
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: []