magentify 0.0.1 → 0.0.2

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/.gitignore CHANGED
@@ -15,3 +15,4 @@ spec/reports
15
15
  test/tmp
16
16
  test/version_tmp
17
17
  tmp
18
+ _files
@@ -0,0 +1,9 @@
1
+ Feature: Deployment
2
+ In order to deploy Magento
3
+ As a developer
4
+ I want my release to be uploaded and symlinks to shared resources created
5
+
6
+ Scenario: User runs $ cap deploy
7
+ Given an app
8
+ When I execute deploy
9
+ Then the PEOPLE_LIKE_YOU file should be written to shared
@@ -0,0 +1,14 @@
1
+ Feature: Magentify
2
+ In order to deploy Magento with Capistrano
3
+ As a developer
4
+ I want my project to be configured to use Magento specific deploy tasks
5
+
6
+ Scenario: User runs $ magentify .
7
+ Given an app
8
+ When I execute magentify .
9
+ Then deploy.rb should load mage.rb
10
+
11
+ Scenario: User runs $ cap -T
12
+ Given an app
13
+ When I execute cap -T
14
+ Then cap -T should list mage
@@ -0,0 +1,9 @@
1
+ Feature: Setup
2
+ In order to deploy Magento
3
+ As a developer
4
+ I want the correct folder structure created on the remote server
5
+
6
+ Scenario: User runs $ cap deploy:setup
7
+ Given an app
8
+ When I execute deploy:setup
9
+ Then the shared folder structure should be created
@@ -0,0 +1,38 @@
1
+ Given /^an app$/ do
2
+ # Create the git repo
3
+ FileUtils.mkdir_p @repo_dir
4
+ Dir.chdir(@repo_dir) do
5
+ system "git --bare init > /dev/null 2>&1"
6
+ end
7
+
8
+ # Create and capify the dummy app, and push it to the local repo
9
+ FileUtils.mkdir_p @app_dir
10
+ Dir.chdir(@app_dir) do
11
+ [
12
+ %Q{git init > /dev/null 2>&1} ,
13
+ %Q{mkdir config > /dev/null 2>&1},
14
+ %Q{magentify . > /dev/null 2>&1},
15
+ %Q{git add . > /dev/null 2>&1},
16
+ %Q{git commit -m "first commit" > /dev/null 2>&1},
17
+ %Q{git remote add origin file://#{@repo_dir} > /dev/null 2>&1},
18
+ %Q{git push origin master > /dev/null 2>&1}
19
+ ].each do |command|
20
+ system command
21
+ end
22
+ end
23
+
24
+ # Write a custom deploy file to the app, using an ERB template
25
+ deploy_variables = {
26
+ :deploy_to => File.join(@test_files_dir, "deployed"),
27
+ :repository => @repo_dir,
28
+ :git_executable => `which git`.strip,
29
+ :logged_in_user => Etc.getlogin
30
+ }
31
+
32
+ template_path = File.expand_path(File.join(__FILE__, "..", "..", "templates", "deploy.erb"))
33
+ compiled_template = ERB.new(File.read(template_path)).result(binding)
34
+
35
+ File.open(File.join(@app_dir, "config", "deploy.rb"), 'w') {|f|
36
+ f.write compiled_template
37
+ }
38
+ end
@@ -0,0 +1,10 @@
1
+ When /^I execute deploy$/ do
2
+ Dir.chdir(@app_dir) do
3
+ system "cap deploy:setup > /dev/null"
4
+ system "cap deploy > /dev/null"
5
+ end
6
+ end
7
+
8
+ Then /^the PEOPLE_LIKE_YOU file should be written to shared$/ do
9
+ File.exists?(File.join(@test_files_dir, "deployed", "shared", "PEOPLE_LIKE_YOU")).should be_true
10
+ end
@@ -0,0 +1,19 @@
1
+ When /^I execute magentify \.$/ do
2
+ Dir.chdir(@app_dir) do
3
+ system "magentify . > /dev/null"
4
+ end
5
+ end
6
+
7
+ Then /^deploy\.rb should load mage\.rb$/ do
8
+ pending # express the regexp above with the code you wish you had
9
+ end
10
+
11
+ When /^I execute cap \-T$/ do
12
+ Dir.chdir(@app_dir) do
13
+ system "cap -T > /dev/null"
14
+ end
15
+ end
16
+
17
+ Then /^cap \-T should list mage$/ do
18
+ pending # express the regexp above with the code you wish you had
19
+ end
@@ -0,0 +1,9 @@
1
+ When /^I execute deploy:setup$/ do
2
+ Dir.chdir(@app_dir) do
3
+ system "cap deploy:setup > /dev/null"
4
+ end
5
+ end
6
+
7
+ Then /^the shared folder structure should be created$/ do
8
+ pending # express the regexp above with the code you wish you had
9
+ end
@@ -0,0 +1,12 @@
1
+ # require 'spec'
2
+ require 'erb'
3
+ require 'etc'
4
+
5
+ Before do
6
+ @test_files_dir = File.join(Dir.pwd, "_files")
7
+ @app_dir = File.join(@test_files_dir, "app")
8
+ @repo_dir = File.join(@test_files_dir, "repo")
9
+
10
+ FileUtils.rm_r(@test_files_dir) if File.exists?(@test_files_dir)
11
+ FileUtils.mkdir_p(@test_files_dir)
12
+ end
@@ -0,0 +1,19 @@
1
+ set :application, "magento"
2
+ set :domain, "#{application}.com"
3
+ set :deploy_to, "<%= deploy_variables[:deploy_to] %>"
4
+
5
+ set :user, "<%= deploy_variables[:logged_in_user] %>"
6
+ set :repository, "file://<%= deploy_variables[:repository] %>"
7
+ set :scm, :git
8
+ # Or: `accurev`, `bzr`, `cvs`, `darcs`, `subversion`, `mercurial`, `perforce`, `subversion` or `none`
9
+ set :scm_command, "<%= deploy_variables[:git_executable] %>"
10
+
11
+ role :web, "localhost" # Your HTTP server, Apache/etc
12
+ role :app, "localhost" # This may be the same as your `Web` server
13
+ role :db, "localhost", :primary => true # This is where Rails migrations will run
14
+
15
+ set :keep_releases, 3
16
+
17
+ set :app_symlinks, ["/media", "/var", "/sitemaps", "/staging"]
18
+ set :app_shared_dirs, ["/app/etc", "/sitemaps", "/media", "/var", "/staging"]
19
+ set :app_shared_files, ["/app/etc/local.xml"]
@@ -1,3 +1,4 @@
1
+ load Gem.find_files('nonrails.rb').last.to_s
1
2
  set :app_symlinks, ["/media", "/var", "/sitemaps", "/staging"]
2
3
  set :app_shared_dirs, ["/app/etc", "/sitemaps", "/media", "/var", "/staging"]
3
4
  set :app_shared_files, ["/app/etc/local.xml"]
@@ -1,3 +1,3 @@
1
1
  module Magentify
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
@@ -0,0 +1,124 @@
1
+ # =========================================================================
2
+ # These are the tasks that are available to help with deploying web apps,
3
+ # and specifically, NON Rails applications. You can have cap give you a summary
4
+ # of them with `cap -T'.
5
+ # =========================================================================
6
+
7
+ namespace :deploy do
8
+ desc <<-DESC
9
+ [Overload] Deploys your project. This calls `update'. Note that \
10
+ this will generally only work for applications that have already been deployed \
11
+ once. For a "cold" deploy, you'll want to take a look at the `deploy:cold' \
12
+ task, which handles the cold start specifically.
13
+ DESC
14
+ task :default do
15
+ update
16
+ end
17
+
18
+ desc <<-DESC
19
+ [Overload] Touches up the released code. This is called by update_code \
20
+ after the basic deploy finishes.
21
+
22
+ This method should be overridden to meet the requirements of your allocation.
23
+ DESC
24
+ task :finalize_update, :except => { :no_release => true } do
25
+ #
26
+ end
27
+
28
+ desc <<-DESC
29
+ [Overload] Default actions cancelled
30
+ DESC
31
+ task :restart, :roles => :app, :except => { :no_release => true } do
32
+ #
33
+ end
34
+
35
+ desc <<-DESC
36
+ [Overload] Default actions cancelled.
37
+ DESC
38
+ task :migrate, :roles => :db, :only => { :primary => true } do
39
+ #
40
+ end
41
+
42
+ desc <<-DESC
43
+ [Overload] Default actions cancelled.
44
+ DESC
45
+ task :migrations do
46
+ set :migrate_target, :latest
47
+ #
48
+ end
49
+
50
+ desc <<-DESC
51
+ [Overload] Default actions only calls 'update'.
52
+ DESC
53
+ task :cold do
54
+ update
55
+ end
56
+
57
+ desc <<-DESC
58
+ [Overload] Default actions cancelled.
59
+ DESC
60
+ task :start, :roles => :app do
61
+ #
62
+ end
63
+
64
+ desc <<-DESC
65
+ [Overload] Default actions cancelled.
66
+ DESC
67
+ task :stop, :roles => :app do
68
+ #
69
+ end
70
+
71
+ namespace :web do
72
+ desc <<-DESC
73
+ Present a maintenance page to visitors. Disables your application's web \
74
+ interface by writing a "maintenance.html" file to each web server. The \
75
+ servers must be configured to detect the presence of this file, and if \
76
+ it is present, always display it instead of performing the request.
77
+
78
+ By default, the maintenance page will just say the site is down for \
79
+ "maintenance", and will be back "shortly", but you can customize the \
80
+ page by specifying the REASON and UNTIL environment variables:
81
+
82
+ $ cap deploy:web:disable \\
83
+ REASON="hardware upgrade" \\
84
+ UNTIL="12pm Central Time"
85
+
86
+ Further customization will require that you write your own task.
87
+ DESC
88
+ task :disable, :roles => :web, :except => { :no_release => true } do
89
+ require 'erb'
90
+ on_rollback { run "rm #{shared_path}/system/maintenance.html" }
91
+
92
+ warn <<-EOHTACCESS
93
+
94
+ # Please add something like this to your site's htaccess to redirect users to the maintenance page.
95
+ # More Info: http://www.shiftcommathree.com/articles/make-your-rails-maintenance-page-respond-with-a-503
96
+
97
+ ErrorDocument 503 /system/maintenance.html
98
+ RewriteEngine On
99
+ RewriteCond %{REQUEST_URI} !\.(css|gif|jpg|png)$
100
+ RewriteCond %{DOCUMENT_ROOT}/system/maintenance.html -f
101
+ RewriteCond %{SCRIPT_FILENAME} !maintenance.html
102
+ RewriteRule ^.*$ - [redirect=503,last]
103
+ EOHTACCESS
104
+
105
+ reason = ENV['REASON']
106
+ deadline = ENV['UNTIL']
107
+
108
+ template = File.read(File.join(File.dirname(__FILE__), "templates", "maintenance.rhtml"))
109
+ result = ERB.new(template).result(binding)
110
+
111
+ put result, "#{shared_path}/system/maintenance.html", :mode => 0644
112
+ end
113
+
114
+ desc <<-DESC
115
+ Makes the application web-accessible again. Removes the \
116
+ "maintenance.html" page generated by deploy:web:disable, which (if your \
117
+ web servers are configured correctly) will make your application \
118
+ web-accessible again.
119
+ DESC
120
+ task :enable, :roles => :web, :except => { :no_release => true } do
121
+ run "rm #{shared_path}/system/maintenance.html"
122
+ end
123
+ end
124
+ end
@@ -6,7 +6,7 @@ Gem::Specification.new do |gem|
6
6
  gem.email = ["alistair.stead@designdisclosure.com"]
7
7
  gem.description = %q{An extension to Capistrano to deploy Magento. Adding the specific requirements and additional tasks.}
8
8
  gem.summary = %q{Deploying Magento PHP applications with Capistrano.}
9
- gem.homepage = ""
9
+ gem.homepage = "https://github.com/alistairstead/Magentify"
10
10
 
11
11
  gem.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
12
12
  gem.files = `git ls-files`.split("\n")
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: magentify
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-03-07 00:00:00.000000000 Z
12
+ date: 2012-03-08 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: capistrano
16
- requirement: &70328495790360 !ruby/object:Gem::Requirement
16
+ requirement: &70095624644500 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,7 +21,7 @@ dependencies:
21
21
  version: 2.5.10
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70328495790360
24
+ version_requirements: *70095624644500
25
25
  description: An extension to Capistrano to deploy Magento. Adding the specific requirements
26
26
  and additional tasks.
27
27
  email:
@@ -37,11 +37,21 @@ files:
37
37
  - README.md
38
38
  - Rakefile
39
39
  - bin/magentify
40
+ - features/deploy.feature
41
+ - features/magentify.feature
42
+ - features/setup.feature
43
+ - features/step_definitions/common_steps.rb
44
+ - features/step_definitions/deploy_steps.rb
45
+ - features/step_definitions/magentify_steps.rb
46
+ - features/step_definitions/setup_steps.rb
47
+ - features/support/env.rb
48
+ - features/templates/deploy.erb
40
49
  - lib/mage.rb
41
50
  - lib/magentify.rb
42
51
  - lib/magentify/version.rb
52
+ - lib/nonrails.rb
43
53
  - magentify.gemspec
44
- homepage: ''
54
+ homepage: https://github.com/alistairstead/Magentify
45
55
  licenses: []
46
56
  post_install_message:
47
57
  rdoc_options: []
@@ -65,4 +75,13 @@ rubygems_version: 1.8.15
65
75
  signing_key:
66
76
  specification_version: 3
67
77
  summary: Deploying Magento PHP applications with Capistrano.
68
- test_files: []
78
+ test_files:
79
+ - features/deploy.feature
80
+ - features/magentify.feature
81
+ - features/setup.feature
82
+ - features/step_definitions/common_steps.rb
83
+ - features/step_definitions/deploy_steps.rb
84
+ - features/step_definitions/magentify_steps.rb
85
+ - features/step_definitions/setup_steps.rb
86
+ - features/support/env.rb
87
+ - features/templates/deploy.erb