omeka-recipes 0.2.1 → 0.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.
- data/.travis.yml +4 -0
- data/CHANGELOG +23 -0
- data/README.md +28 -15
- data/Rakefile +10 -0
- data/lib/omeka-recipes/application.rb +1 -1
- data/lib/omeka-recipes/deploy.rb +30 -0
- data/lib/omeka-recipes/omeka.rb +60 -1
- data/lib/omeka-recipes/symlinks.rb +1 -1
- data/lib/omeka-recipes/version.rb +1 -1
- data/lib/templates/maintenance.html.erb +59 -0
- data/tests/fixtures/config.rb +5 -0
- data/tests/fixtures/db.ini +7 -0
- data/tests/fixtures/test.rb +24 -0
- data/tests/omeka_test.rb +8 -0
- data/tests/recipes_test.rb +27 -0
- metadata +13 -4
data/.travis.yml
ADDED
data/CHANGELOG
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
## 0.3.0
|
2
|
+
|
3
|
+
Additional tasks for deploy for cleaning up, performing git-style upgrades,
|
4
|
+
and mapping setup directories for the `#{shared_path}`.
|
5
|
+
|
6
|
+
* Travis integration
|
7
|
+
* Maintenance pages for system upgrades
|
8
|
+
* Seppuku for destroying everything
|
9
|
+
|
10
|
+
|
11
|
+
## 0.2.1
|
12
|
+
|
13
|
+
This release contained mainly bug fixes and fixed consistency issues with the
|
14
|
+
descriptions of individual tasks.
|
15
|
+
|
16
|
+
* Ensure '|OmekaRecipes|' surrounds all tasks. Jeremy Boggs (clioweb)
|
17
|
+
* Fixes VERSION constant redefinition
|
18
|
+
* Added IniFile dependency to gem
|
19
|
+
|
20
|
+
## 0.2.0
|
21
|
+
|
22
|
+
Initial release of the gem.
|
23
|
+
|
data/README.md
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
# Omeka::Recipes
|
2
2
|
|
3
|
+
[](http://travis-ci.org/waynegraham/omeka-recipes)
|
4
|
+
|
3
5
|
Useful Capistrano recipes including:
|
4
6
|
|
5
7
|
* Create MySQL database and user on server (via prompts)
|
@@ -9,21 +11,31 @@ Useful Capistrano recipes including:
|
|
9
11
|
|
10
12
|
## Included Tasks
|
11
13
|
|
12
|
-
*
|
13
|
-
*
|
14
|
-
*
|
15
|
-
*
|
16
|
-
*
|
17
|
-
*
|
18
|
-
*
|
19
|
-
*
|
20
|
-
*
|
21
|
-
*
|
22
|
-
*
|
23
|
-
*
|
24
|
-
*
|
25
|
-
*
|
26
|
-
*
|
14
|
+
* cap apache:reload # |OmekaRecipes| Reload Apache
|
15
|
+
* cap apache:restart # |OmekaRecipes| Restart Apache
|
16
|
+
* cap apache:start # |OmekaRecipes| Start Apache
|
17
|
+
* cap apache:stop # |OmekaRecipes| Stop Apache
|
18
|
+
* cap db:create_ini # |OmekaRecipes| Create db.ini in shared pa...
|
19
|
+
* cap db:mysql:dump # |OmekaRecipes| Performs a compressed data...
|
20
|
+
* cap db:mysql:fetch_dump # |OmekaRecipes| Downloads the compressed d...
|
21
|
+
* cap db:mysql:restore # |OmekaRecipes| Restores the database from...
|
22
|
+
* cap db:mysql:setup # |OmekaRecipes| Create MySQL database and ...
|
23
|
+
* cap deploy # |OmekaRecipes| Deploy omeka, github-style
|
24
|
+
* cap deploy:seppuku # |OmekaRecipes| Destroys everything
|
25
|
+
* cap deploy:setup_dirs # |OmekaRecipes| Create shared dirs
|
26
|
+
* cap deploy:symlink # |OmekaRecipes| Alias for symlinks:make
|
27
|
+
* cap log:rotate # |OmekaRecipes| Install log rotation scrip...
|
28
|
+
* cap log:tail # |OmekaRecipes| Tail all log files
|
29
|
+
* cap omeka:db_ini # |OmekaRecipes| Add the db.ini to the shar...
|
30
|
+
* cap omeka:fix_archive_permissions # |OmekaRecipes| Ensure the archive directo...
|
31
|
+
* cap omeka:get_plugins # |OmekaRecipes| Deploy the plugins defined...
|
32
|
+
* cap omeka:get_themes # |OmekaRecipes| Deploy the themes defined ...
|
33
|
+
* cap omeka:link_archive_dir # |OmekaRecipes| Link the archive directoy ...
|
34
|
+
* cap omeka:maintenance:start # |OmekaRecipes| Add a maitenance page for ...
|
35
|
+
* cap omeka:move_archive_dir # |OmekaRecipes| Move the archive directory...
|
36
|
+
* cap omeka:move_files_to_shared # |OmekaRecipes| Move a pristine copy of th...
|
37
|
+
* cap omeka:rename_files # |OmekaRecipes| Rename files
|
38
|
+
* cap symlinks:make # |OmekaRecipes| Make all the symlinks in a...`
|
27
39
|
|
28
40
|
## Installation
|
29
41
|
|
@@ -164,3 +176,4 @@ See the [LICENSE](https://github.com/waynegraham/omeka-recipes/blob/master/LICEN
|
|
164
176
|
|
165
177
|
* Jeremy Boggs ([clioweb](clioweb))
|
166
178
|
* Wayne Graham ([waynegraham](https://github.com/waynegraham))
|
179
|
+
|
data/Rakefile
CHANGED
@@ -32,7 +32,7 @@ Capistrano::Configuration.instance.load do
|
|
32
32
|
set :rvm_ruby_string, '1.9.3' unless exists?(:rvm_ruby_string)
|
33
33
|
end
|
34
34
|
|
35
|
-
set :shared_dirs, %w(
|
35
|
+
set :shared_dirs, %w(archive) unless exists?(:shared_dirs)
|
36
36
|
|
37
37
|
namespace :app do
|
38
38
|
task :setup, :roles => :app do
|
@@ -0,0 +1,30 @@
|
|
1
|
+
Capistrano::Configuration.instance.load do
|
2
|
+
set :shared_children, %w(system logs pids config archive)
|
3
|
+
|
4
|
+
namespace :deploy do
|
5
|
+
desc '|OmekaRecipes| Deploy omeka, github-style'
|
6
|
+
task :default, :roles => :app, :except => { :no_release => true } do
|
7
|
+
update
|
8
|
+
end
|
9
|
+
|
10
|
+
|
11
|
+
desc '|OmekaRecipes| Destroys everything'
|
12
|
+
task :seppuku, :roles => :app, :except => { :no_release => true } do
|
13
|
+
run "rm -rf #{current_path}; rm -rf #{shared_path}"
|
14
|
+
end
|
15
|
+
|
16
|
+
desc '|OmekaRecipes| Create shared dirs'
|
17
|
+
task :setup_dirs, :roles => :app, :except => { :no_release => true } do
|
18
|
+
commands = shared_dirs.map do |path|
|
19
|
+
"mkdir -p #{shared_path}/#{path}"
|
20
|
+
end
|
21
|
+
run commands.join(" && ")
|
22
|
+
end
|
23
|
+
|
24
|
+
desc '|OmekaRecipes| Alias for symlinks:make'
|
25
|
+
task :symlink, :roles => :app, :except => { :no_release => true } do
|
26
|
+
symlinks.make
|
27
|
+
end
|
28
|
+
|
29
|
+
end
|
30
|
+
end
|
data/lib/omeka-recipes/omeka.rb
CHANGED
@@ -39,6 +39,13 @@ Capistrano::Configuration.instance.load do
|
|
39
39
|
run "touch #{shared_path}/db.ini"
|
40
40
|
end
|
41
41
|
|
42
|
+
desc '|OmekaRecipes| Move a pristine copy of the archives/files directory to the shared_path'
|
43
|
+
task :move_files_to_shared, :except => { :no_release => true } do
|
44
|
+
#run "touch #{shared_path}/db.ini"
|
45
|
+
run "mkdir -p #{shared_path}/application/logs/"
|
46
|
+
run "touch #{shared_path}/application/logs/erros.log"
|
47
|
+
end
|
48
|
+
|
42
49
|
desc '|OmekaRecipes| Deploy the plugins defined in the plugins hash'
|
43
50
|
task :get_plugins do
|
44
51
|
git_clone(plugins, 'plugins')
|
@@ -49,11 +56,63 @@ Capistrano::Configuration.instance.load do
|
|
49
56
|
git_clone(themes, 'themes')
|
50
57
|
end
|
51
58
|
|
59
|
+
namespace :maintenance do
|
60
|
+
desc <<-DESC
|
61
|
+
|OmekaRecipes| Add a maitenance page for visitors. Disables your Omeka
|
62
|
+
isntance by writing a "#{maintenance_basename}.html" file to each web
|
63
|
+
server. The servers must be configured to detect the presence of the file,
|
64
|
+
and if it is present, display the maintenance page instead of performaning
|
65
|
+
the request.
|
66
|
+
|
67
|
+
$ cap omeka:maintenance:start \\
|
68
|
+
REASON="hardware upgrade" \\
|
69
|
+
UNTIL="12pm EST"
|
70
|
+
|
71
|
+
You can use a different template for the maintenace page by setting the
|
72
|
+
:maintenace_template_path variable in your deploy.rb. The template file
|
73
|
+
should either be a plaintext or an erb file.
|
74
|
+
DESC
|
75
|
+
task :start, :roles => :web, :except => { :no_release => true } do
|
76
|
+
require 'erb'
|
77
|
+
on_rollback { run "rm -f #{shared_path}/system/maintenance.html" }
|
78
|
+
|
79
|
+
warn <<-HTACCESS
|
80
|
+
# Please add something like this to your site's Apache htaccess to redirect users to the maintenance page.
|
81
|
+
# More Info: http://www.shiftcommathree.com/articles/make-your-rails-maintenance-page-respond-with-a-503
|
82
|
+
|
83
|
+
ErrorDocument 503 /system/maintenance.html
|
84
|
+
RewriteEngine On
|
85
|
+
RewriteCond %{REQUEST_URI} !\.(css|gif|jpg|png)$
|
86
|
+
RewriteCond %{DOCUMENT_ROOT}/system/maintenance.html -f
|
87
|
+
RewriteCond %{SCRIPT_FILENAME} !maintenance.html
|
88
|
+
RewriteRule ^.*$ - [redirect=503,last]
|
89
|
+
HTACCESS
|
90
|
+
|
91
|
+
reason = ENV['REASON']
|
92
|
+
deadline = ENV['UNTIL']
|
93
|
+
|
94
|
+
template = File.read(maintenance_template_path)
|
95
|
+
result = ERB.new(template).result(binding)
|
96
|
+
|
97
|
+
put result, "#{shared_path}/system/maintenance.html", :mode => 0644
|
98
|
+
end
|
99
|
+
|
100
|
+
desc <<-DESC
|
101
|
+
Enables the application web-accessible again. Removes the \n
|
102
|
+
"maintenance.html" page generated by deploy:maitenance:start,
|
103
|
+
which, (if your server is configured properly) will make Omeka web-
|
104
|
+
accessible again.
|
105
|
+
DESC
|
106
|
+
task :end, :roles => :web, :except => { :no_release => true } do
|
107
|
+
run "rm -f #{shared_path}/system/#{maintenance_basename}.html"
|
108
|
+
end
|
109
|
+
end
|
52
110
|
end
|
53
111
|
|
54
112
|
after 'deploy:cold', 'omeka:fix_archive_permissions', 'omeka:move_archive_dir'
|
113
|
+
after 'deploy:setup', 'omeka:move_files_to_shared'
|
55
114
|
#before 'deploy:create_symlink', 'omeka:move_archive_dir'
|
56
|
-
after 'deploy:create_symlink', 'omeka:link_archive_dir'
|
115
|
+
#after 'deploy:create_symlink', 'omeka:link_archive_dir'
|
57
116
|
after 'deploy', 'omeka:get_themes', 'omeka:get_plugins', 'omeka:rename_files'
|
58
117
|
|
59
118
|
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Capistrano::Configuration.instance.load do
|
2
2
|
# these are set to the same structure in shared <=> current
|
3
|
-
set :normal_symlinks, %w(
|
3
|
+
set :normal_symlinks, %w(archive db.ini) unless exists?(:normal_symlinks)
|
4
4
|
|
5
5
|
# weird symlinks go somewhere else
|
6
6
|
set :weird_symlinks, {'db.ini' => 'db.ini.changeme'} unless exists?( :weird_symlinks )
|
@@ -0,0 +1,59 @@
|
|
1
|
+
<!DOCTYPE HTML>
|
2
|
+
<html lang="en">
|
3
|
+
<head>
|
4
|
+
<meta charset="utf-8">
|
5
|
+
<title>Maintenance</title>
|
6
|
+
<style>
|
7
|
+
::-moz-selection {
|
8
|
+
background: #b3d4fc;
|
9
|
+
text-shadow: none;
|
10
|
+
}
|
11
|
+
::selection {
|
12
|
+
background: #b3d4fc;
|
13
|
+
text-shadow: none;
|
14
|
+
}
|
15
|
+
html {
|
16
|
+
padding: 30px 10px;
|
17
|
+
font-size: 20px;
|
18
|
+
line-height: 1.4;
|
19
|
+
color: #737373;
|
20
|
+
background: #f0f0f0;
|
21
|
+
-webkit-text-size-adjust: 100%;
|
22
|
+
-ms-text-size-adjust: 100%;
|
23
|
+
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
|
24
|
+
max-width: 500px;
|
25
|
+
_width: 500px;
|
26
|
+
padding: 30ps 20px 50px;
|
27
|
+
border: 1px solid #b3b3b3;
|
28
|
+
border-radius: 4px;
|
29
|
+
margin: 0 auto;
|
30
|
+
box-shadow: 0 1px 10px #a7a7a7, inset 0 1px 0 #fff;
|
31
|
+
background: #fcfcfc;
|
32
|
+
}
|
33
|
+
#container {
|
34
|
+
max-width: 380px;
|
35
|
+
_width: 380px;
|
36
|
+
margin: 0 auto;
|
37
|
+
}
|
38
|
+
h1 {
|
39
|
+
margin: 0 10px;
|
40
|
+
font-size: 50px;
|
41
|
+
text-align: center;
|
42
|
+
}
|
43
|
+
p { margin: 1em 0 }
|
44
|
+
</style>
|
45
|
+
</head>
|
46
|
+
<body>
|
47
|
+
<div id="container">
|
48
|
+
<h1>The system is down</h1>
|
49
|
+
<p>
|
50
|
+
The system is down for <%= reason ? reason : 'maintenance' %> as of
|
51
|
+
<%= Time.now.strftime("%H:%M %Z") %>.
|
52
|
+
</p>
|
53
|
+
|
54
|
+
<p>
|
55
|
+
It'll be back <%= deadline ? deadline : "shortly" %>.
|
56
|
+
</p>
|
57
|
+
</div>
|
58
|
+
</body>
|
59
|
+
</html>
|
@@ -0,0 +1,24 @@
|
|
1
|
+
|
2
|
+
|
3
|
+
def fetch_db_ini
|
4
|
+
require 'fileutils'
|
5
|
+
require 'IniFile'
|
6
|
+
|
7
|
+
file_path = "./db.ini"
|
8
|
+
@db_config = IniFile.new(:filename => file_path).to_h
|
9
|
+
end
|
10
|
+
|
11
|
+
def prepare_from_ini
|
12
|
+
puts @db_config['database']['username']
|
13
|
+
puts @db_config['database']['password']
|
14
|
+
puts @db_config['database']['host']
|
15
|
+
puts @db_config['database']['name']
|
16
|
+
puts @db_config['database']['prefix']
|
17
|
+
puts @db_config['database']['charset']
|
18
|
+
|
19
|
+
end
|
20
|
+
|
21
|
+
fetch_db_ini
|
22
|
+
test = prepare_from_ini
|
23
|
+
|
24
|
+
|
data/tests/omeka_test.rb
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
require 'utils'
|
2
|
+
require 'capistrano/configuration'
|
3
|
+
|
4
|
+
class RecipesTest < Test::Unit::TestCase
|
5
|
+
|
6
|
+
def setup
|
7
|
+
@config = Capistrano::Configuration.new
|
8
|
+
@config.stubs(:logger).returns(stub_everything)
|
9
|
+
end
|
10
|
+
|
11
|
+
|
12
|
+
def test_current_release_does_not_cause_error_on_dry_run
|
13
|
+
@config.dry_run = true
|
14
|
+
@config.load 'deploy'
|
15
|
+
@config.load do
|
16
|
+
set :application, 'foo'
|
17
|
+
task :dry_run_test do
|
18
|
+
fetch :current_release
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
assert_nothing_raised do
|
23
|
+
@config.dry_run_test
|
24
|
+
end
|
25
|
+
|
26
|
+
end
|
27
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: omeka-recipes
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-09-
|
12
|
+
date: 2012-09-28 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: capistrano
|
@@ -102,6 +102,8 @@ extra_rdoc_files:
|
|
102
102
|
files:
|
103
103
|
- .gitignore
|
104
104
|
- .rvmrc
|
105
|
+
- .travis.yml
|
106
|
+
- CHANGELOG
|
105
107
|
- Gemfile
|
106
108
|
- LICENSE
|
107
109
|
- README.md
|
@@ -111,11 +113,18 @@ files:
|
|
111
113
|
- lib/omeka-recipes/apache.rb
|
112
114
|
- lib/omeka-recipes/application.rb
|
113
115
|
- lib/omeka-recipes/db.rb
|
116
|
+
- lib/omeka-recipes/deploy.rb
|
114
117
|
- lib/omeka-recipes/log.rb
|
115
118
|
- lib/omeka-recipes/omeka.rb
|
116
119
|
- lib/omeka-recipes/symlinks.rb
|
117
120
|
- lib/omeka-recipes/version.rb
|
121
|
+
- lib/templates/maintenance.html.erb
|
118
122
|
- omeka-recipes.gemspec
|
123
|
+
- tests/fixtures/config.rb
|
124
|
+
- tests/fixtures/db.ini
|
125
|
+
- tests/fixtures/test.rb
|
126
|
+
- tests/omeka_test.rb
|
127
|
+
- tests/recipes_test.rb
|
119
128
|
homepage: https://github.com/waynegraham/omeka-recipes
|
120
129
|
licenses: []
|
121
130
|
post_install_message:
|
@@ -130,7 +139,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
130
139
|
version: '0'
|
131
140
|
segments:
|
132
141
|
- 0
|
133
|
-
hash:
|
142
|
+
hash: 4283888623917739916
|
134
143
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
135
144
|
none: false
|
136
145
|
requirements:
|
@@ -139,7 +148,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
139
148
|
version: '0'
|
140
149
|
segments:
|
141
150
|
- 0
|
142
|
-
hash:
|
151
|
+
hash: 4283888623917739916
|
143
152
|
requirements: []
|
144
153
|
rubyforge_project:
|
145
154
|
rubygems_version: 1.8.24
|