capones_recipes 0.2.0 → 0.2.3

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.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.0
1
+ 0.2.3
@@ -5,7 +5,7 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{capones_recipes}
8
- s.version = "0.2.0"
8
+ s.version = "0.2.3"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Roman Simecek"]
@@ -28,14 +28,25 @@ Gem::Specification.new do |s|
28
28
  "capones_recipes.gemspec",
29
29
  "config/deploy.rb",
30
30
  "lib/capones_recipes.rb",
31
+ "lib/cookbook/rails.rb",
31
32
  "lib/recipes/database.rb",
33
+ "lib/recipes/database/mysql.rb",
32
34
  "lib/recipes/database/sqlite.rb",
33
35
  "lib/recipes/database/sync.rb",
36
+ "lib/recipes/katalog.rb",
37
+ "lib/recipes/katalog/import.rb",
38
+ "lib/recipes/katalog/katalog.rb",
39
+ "lib/recipes/new_relic.rb",
40
+ "lib/recipes/new_relic/new_relic.rb",
34
41
  "lib/recipes/rails.rb",
35
42
  "lib/recipes/rails/database_yml.rb",
36
43
  "lib/recipes/rails/mod_rails.rb",
37
44
  "lib/recipes/rails31.rb",
38
- "lib/recipes/rails31/rails31.rb"
45
+ "lib/recipes/rails31/rails31.rb",
46
+ "lib/recipes/settings_logic.rb",
47
+ "lib/recipes/settings_logic/settings_logic.rb",
48
+ "lib/recipes/thinking_sphinx.rb",
49
+ "lib/recipes/thinking_sphinx/thinking_sphinx.rb"
39
50
  ]
40
51
  s.homepage = %q{http://github.com/raskhadafi/capones-recipes}
41
52
  s.licenses = ["MIT"]
@@ -0,0 +1,5 @@
1
+ require 'capistrano'
2
+ require 'capistrano/cli'
3
+ require 'capistrano_colors'
4
+
5
+ load File.join(File.dirname(__FILE__), '../recipes/rails.rb')
@@ -0,0 +1,91 @@
1
+ # MySQL Backup/Restore tasks
2
+ #
3
+ # Based on code from:
4
+ # * http://snippets.aktagon.com/snippets/20-Capistrano-2-task-for-backing-up-your-MySQL-production-database-before-each-deployment
5
+ # * http://www.martin-probst.com/blog/2007/11/20/mysql-backup-restore-task-for-capistrano/
6
+
7
+ namespace :mysql do
8
+ task :backup, :roles => :import do
9
+ backup_dir ||= "#{deploy_to}/backups"
10
+ run "mkdir -p #{backup_dir}"
11
+
12
+ filename = "#{backup_dir}/#{application}.dump.#{Time.now.strftime('%Y-%m-%d_%H-%M')}.sql.bz2"
13
+ text = capture "cat #{deploy_to}/current/config/database.yml"
14
+ yaml = YAML::load(text)
15
+
16
+ on_rollback { run "rm #{filename}" }
17
+
18
+ logger.info "Backing up to #{filename}..."
19
+ run "mysqldump -u #{yaml[rails_env]['username']} -p #{yaml[rails_env]['database']} -h #{yaml[rails_env]['host']}| bzip2 -c > #{filename}" do |ch, stream, out|
20
+ if out =~ /^Enter password:/
21
+ ch.send_data "#{yaml[rails_env]['password']}\n"
22
+ else
23
+ puts out
24
+ end
25
+ end
26
+
27
+ run "ln -nfs #{filename} #{backup_dir}/#{application}.latest"
28
+
29
+ logger.info "Backup successfull."
30
+ end
31
+
32
+ task :restore, :roles => :import do
33
+ backup_dir ||= "#{deploy_to}/backups"
34
+
35
+ filename = "#{backup_dir}/#{application}.latest"
36
+ text = capture "cat #{deploy_to}/current/config/database.yml"
37
+ yaml = YAML::load(text)
38
+
39
+ logger.info "Restoring from #{filename}..."
40
+ run "bzip2 -d < #{filename} |mysql -u #{yaml[rails_env]['username']} -p#{yaml[rails_env]['password']} -h #{yaml[rails_env]['host']} #{yaml[rails_env]['database']}" do |ch, stream, out|
41
+ puts out
42
+ end
43
+
44
+ logger.info "Restore successfull."
45
+ end
46
+
47
+ namespace :sync do
48
+ desc "Sync down the mysql db to local"
49
+ task :down, :roles => :app do
50
+ sync_dir ||= "#{deploy_to}/sync"
51
+ run "mkdir -p #{sync_dir}"
52
+
53
+ filename = "#{application}.dump.#{Time.now.strftime('%Y-%m-%d_%H-%M')}.sql.bz2"
54
+ text = capture "cat #{deploy_to}/current/config/database.yml"
55
+ yaml = YAML::load(text)
56
+ on_rollback { delete filename }
57
+
58
+ # Remote DB dump
59
+ run "mysqldump -u #{yaml[rails_env]['username']} -p #{yaml[rails_env]['database']} -h #{yaml[rails_env]['host']} | bzip2 -9 > #{sync_dir}/#{filename}" do |channel, stream, data|
60
+ if data =~ /^Enter password:/
61
+ channel.send_data "#{yaml[rails_env]['password']}\n"
62
+ else
63
+ puts data
64
+ end
65
+ end
66
+
67
+ # Download dump
68
+ download "#{sync_dir}/#{filename}", filename
69
+
70
+ run "rm #{sync_dir}/#{filename}"
71
+
72
+ # Local DB import
73
+ username, password, database = database_config('development')
74
+ system "bzip2 -d -c #{filename} | mysql -u #{username} --password='#{password}' #{database}; rm -f #{filename}"
75
+ system "rake db:migrate"
76
+
77
+ logger.important "sync database from the stage '#{stage}' to local finished"
78
+ end
79
+
80
+ #
81
+ # Reads the database credentials from the local config/database.yml file
82
+ # +db+ the name of the environment to get the credentials for
83
+ # Returns username, password, database
84
+ #
85
+ def database_config(db)
86
+ database = YAML::load_file('config/database.yml')
87
+ return database["#{db}"]['username'], database["#{db}"]['password'], database["#{db}"]['database']
88
+ end
89
+ end
90
+
91
+ end
@@ -0,0 +1,60 @@
1
+ before "deploy:setup", "import:setup"
2
+ after "deploy:update_code", "import:symlink"
3
+
4
+ namespace :import do
5
+ desc "Create data directory"
6
+ task :setup, :roles => :import do
7
+ run "mkdir -p #{shared_path}/data"
8
+ end
9
+
10
+ desc "Make symlink for data"
11
+ task :symlink, :roles => :import do
12
+ run "ln -nfs #{shared_path}/data #{release_path}/data"
13
+ end
14
+
15
+ desc "Upload XLS file"
16
+ task :push, :roles => :import do
17
+ upload "data/Dossier-Katalog.xls", "#{shared_path}/data/dossiers.xls"
18
+
19
+ run "xls2csv -d utf-8 -c';' #{shared_path}/data/dossiers.xls > #{shared_path}/data/dossiers.csv"
20
+ end
21
+
22
+ desc "Clone current environment database as import database."
23
+ task :seed_import_db, :roles => :import do
24
+ old_rails_env = rails_env
25
+ mysql.backup
26
+
27
+ set :rails_env, 'import'
28
+ mysql.restore
29
+
30
+ set :rails_env, old_rails_env
31
+ end
32
+
33
+ desc "Clone import database to current environment."
34
+ task :push_import_db, :roles => :import do
35
+ old_rails_env = rails_env
36
+ set :rails_env, 'import'
37
+ mysql.backup
38
+
39
+ set :rails_env, old_rails_env
40
+ mysql.restore
41
+ end
42
+
43
+ desc "Import CSV file."
44
+ task :import_csv, :roles => :import do
45
+ old_rails_env = rails_env
46
+ set :rails_env, 'import'
47
+
48
+ stream "cd #{deploy_to}/current && RAILS_ENV=#{rails_env} /usr/bin/env bundle exec rails runner 'Dossier.import_from_csv(\"data/dossiers.csv\")'"
49
+ set :rails_env, old_rails_env
50
+ end
51
+
52
+ desc "Do a full import."
53
+ task :default do
54
+ push
55
+ seed_import_db
56
+ import_csv
57
+ push_import_db
58
+ thinking_sphinx.rebuild
59
+ end
60
+ end
@@ -0,0 +1,7 @@
1
+ namespace :katalog do
2
+ desc "Create sphinx wordform and exception lists."
3
+ task :export_sphinx_lists, :roles => :app do
4
+ logger.info "Create sphinx wordform and exception lists."
5
+ run "cd #{deploy_to}/current && RAILS_ENV=#{rails_env} /usr/bin/env bundle exec rails runner 'SphinxAdminWordForm.send(:export_file); SphinxAdminException.send(:export_file)'"
6
+ end
7
+ end
@@ -0,0 +1 @@
1
+ Dir.glob(File.join(File.dirname(__FILE__), '/katalog/*.rb')).sort.each { |f| load f }
@@ -0,0 +1,17 @@
1
+ Capistrano::Configuration.instance.load do
2
+ before "deploy:setup", :new_relic
3
+ after "deploy:update_code", "new_relic:symlink"
4
+
5
+ namespace :new_relic do
6
+ desc "Create application yaml in capistrano shared path"
7
+ task :default do
8
+ run "mkdir -p #{shared_path}/config"
9
+ upload "config/newrelic.yml.example", "#{shared_path}/config/newrelic.yml", :via => :scp
10
+ end
11
+
12
+ desc "Make symlink for shared application yaml"
13
+ task :symlink do
14
+ run "ln -nfs #{shared_path}/config/newrelic.yml #{release_path}/config/newrelic.yml"
15
+ end
16
+ end
17
+ end
@@ -0,0 +1 @@
1
+ Dir.glob(File.join(File.dirname(__FILE__), '/new_relic/*.rb')).sort.each { |f| load f }
@@ -0,0 +1,17 @@
1
+ Capistrano::Configuration.instance.load do
2
+ before "deploy:setup", :settings_logic
3
+ after "deploy:update_code", "settings_logic:symlink"
4
+
5
+ namespace :settings_logic do
6
+ desc "Create application yaml in capistrano shared path"
7
+ task :default do
8
+ run "mkdir -p #{shared_path}/config"
9
+ upload "config/application.yml.example", "#{shared_path}/config/application.yml", :via => :scp
10
+ end
11
+
12
+ desc "Make symlink for shared application yaml"
13
+ task :symlink do
14
+ run "ln -nfs #{shared_path}/config/application.yml #{release_path}/config/application.yml"
15
+ end
16
+ end
17
+ end
@@ -0,0 +1 @@
1
+ Dir.glob(File.join(File.dirname(__FILE__), '/settings_logic/*.rb')).sort.each { |f| load f }
@@ -0,0 +1,23 @@
1
+ # Thinking Sphinx for Capistrano
2
+ require 'thinking_sphinx/deploy/capistrano'
3
+
4
+ after "deploy:setup", "thinking_sphinx:setup"
5
+
6
+ after "deploy:migrate" do
7
+ thinking_sphinx.symlink
8
+ thinking_sphinx.rebuild
9
+ end
10
+
11
+ namespace :thinking_sphinx do
12
+ desc "Prepare for sphinx config"
13
+ task :setup, :roles => :app do
14
+ run "mkdir -p #{shared_path}/config/sphinx"
15
+ run "mkdir -p #{shared_path}/db/sphinx"
16
+ end
17
+
18
+ desc "Make symlink for sphinx configs and data"
19
+ task :symlink, :roles => :app do
20
+ run "ln -nfs #{shared_path}/config/sphinx #{release_path}/config/sphinx"
21
+ run "ln -nfs #{shared_path}/db/sphinx #{release_path}/db/sphinx"
22
+ end
23
+ end
@@ -0,0 +1 @@
1
+ Dir.glob(File.join(File.dirname(__FILE__), '/thinking_sphinx/*.rb')).sort.each { |f| load f }
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: capones_recipes
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.2.0
5
+ version: 0.2.3
6
6
  platform: ruby
7
7
  authors:
8
8
  - Roman Simecek
@@ -122,14 +122,25 @@ files:
122
122
  - capones_recipes.gemspec
123
123
  - config/deploy.rb
124
124
  - lib/capones_recipes.rb
125
+ - lib/cookbook/rails.rb
125
126
  - lib/recipes/database.rb
127
+ - lib/recipes/database/mysql.rb
126
128
  - lib/recipes/database/sqlite.rb
127
129
  - lib/recipes/database/sync.rb
130
+ - lib/recipes/katalog.rb
131
+ - lib/recipes/katalog/import.rb
132
+ - lib/recipes/katalog/katalog.rb
133
+ - lib/recipes/new_relic.rb
134
+ - lib/recipes/new_relic/new_relic.rb
128
135
  - lib/recipes/rails.rb
129
136
  - lib/recipes/rails/database_yml.rb
130
137
  - lib/recipes/rails/mod_rails.rb
131
138
  - lib/recipes/rails31.rb
132
139
  - lib/recipes/rails31/rails31.rb
140
+ - lib/recipes/settings_logic.rb
141
+ - lib/recipes/settings_logic/settings_logic.rb
142
+ - lib/recipes/thinking_sphinx.rb
143
+ - lib/recipes/thinking_sphinx/thinking_sphinx.rb
133
144
  has_rdoc: true
134
145
  homepage: http://github.com/raskhadafi/capones-recipes
135
146
  licenses:
@@ -144,7 +155,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
144
155
  requirements:
145
156
  - - ">="
146
157
  - !ruby/object:Gem::Version
147
- hash: -2740591684227700900
158
+ hash: 4274435668643909164
148
159
  segments:
149
160
  - 0
150
161
  version: "0"