From 23568775fa9f9ca1f2877fa6112d5e066cb9fce5 Mon Sep 17 00:00:00 2001 From: seenmyfate Date: Sun, 24 Mar 2013 17:16:40 +0000 Subject: [PATCH] initial commit --- .gitignore | 17 ++++++++++++ Gemfile | 4 +++ LICENSE.txt | 22 ++++++++++++++++ README.md | 39 ++++++++++++++++++++++++++++ Rakefile | 1 + capistrano-rails.gemspec | 19 ++++++++++++++ lib/capistrano/rails.rb | 2 ++ lib/capistrano/rails/assets.rb | 1 + lib/capistrano/rails/migrations.rb | 1 + lib/capistrano/tasks/assets.rake | 13 ++++++++++ lib/capistrano/tasks/migrations.rake | 14 ++++++++++ 11 files changed, 133 insertions(+) create mode 100644 .gitignore create mode 100644 Gemfile create mode 100644 LICENSE.txt create mode 100644 README.md create mode 100644 Rakefile create mode 100644 capistrano-rails.gemspec create mode 100644 lib/capistrano/rails.rb create mode 100644 lib/capistrano/rails/assets.rb create mode 100644 lib/capistrano/rails/migrations.rb create mode 100644 lib/capistrano/tasks/assets.rake create mode 100644 lib/capistrano/tasks/migrations.rake diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..d87d4be --- /dev/null +++ b/.gitignore @@ -0,0 +1,17 @@ +*.gem +*.rbc +.bundle +.config +.yardoc +Gemfile.lock +InstalledFiles +_yardoc +coverage +doc/ +lib/bundler/man +pkg +rdoc +spec/reports +test/tmp +test/version_tmp +tmp diff --git a/Gemfile b/Gemfile new file mode 100644 index 0000000..587359d --- /dev/null +++ b/Gemfile @@ -0,0 +1,4 @@ +source 'https://rubygems.org' + +# Specify your gem's dependencies in capistrano-rails.gemspec +gemspec diff --git a/LICENSE.txt b/LICENSE.txt new file mode 100644 index 0000000..42ccb85 --- /dev/null +++ b/LICENSE.txt @@ -0,0 +1,22 @@ +Copyright (c) 2013 Tom Clements + +MIT License + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/README.md b/README.md new file mode 100644 index 0000000..f96bd6b --- /dev/null +++ b/README.md @@ -0,0 +1,39 @@ +# Capistrano::Rails + +Rails specific tasks for Capistrano v3: + + - `cap deploy:migrate` + - `cap deploy:normalise_assets` + +Assumes that `RAILS_ENV` matches stage, tasks are currently early examples + +## Installation + +Add this line to your application's Gemfile: + + gem 'capistrano', github: 'capistrano/capistrano', branch: 'v3' + gem 'capistrano-rails', github: 'seenmyfate/capistrano-rails', branch: :master + +And then execute: + + $ bundle --binstubs + $ cap install + +## Usage + + # Capfile + + require 'capistrano/rails' + + # or require just what you need + + require 'capistrano/rails/assets' + require 'capistrano/rails/migrations' + +## Contributing + +1. Fork it +2. Create your feature branch (`git checkout -b my-new-feature`) +3. Commit your changes (`git commit -am 'Add some feature'`) +4. Push to the branch (`git push origin my-new-feature`) +5. Create new Pull Request diff --git a/Rakefile b/Rakefile new file mode 100644 index 0000000..2995527 --- /dev/null +++ b/Rakefile @@ -0,0 +1 @@ +require "bundler/gem_tasks" diff --git a/capistrano-rails.gemspec b/capistrano-rails.gemspec new file mode 100644 index 0000000..223075b --- /dev/null +++ b/capistrano-rails.gemspec @@ -0,0 +1,19 @@ +# -*- encoding: utf-8 -*- +lib = File.expand_path('../lib', __FILE__) +$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib) + +Gem::Specification.new do |gem| + gem.name = "capistrano-rails" + gem.version = '0.0.1' + gem.authors = ["Tom Clements"] + gem.email = ["seenmyfate@gmail.com"] + gem.description = %q{Rails specific Capistrano tasks} + gem.summary = %q{Rails specific Capistrano tasks} + gem.homepage = "https://github.com/seenmyfate/capistrano-rails" + + gem.files = `git ls-files`.split($/) + gem.test_files = gem.files.grep(%r{^(test|spec|features)/}) + gem.require_paths = ["lib"] + + gem.add_dependency 'capistrano' +end diff --git a/lib/capistrano/rails.rb b/lib/capistrano/rails.rb new file mode 100644 index 0000000..07e205b --- /dev/null +++ b/lib/capistrano/rails.rb @@ -0,0 +1,2 @@ +require 'capistrano/rails/assets' +require 'capistrano/rails/migrations' diff --git a/lib/capistrano/rails/assets.rb b/lib/capistrano/rails/assets.rb new file mode 100644 index 0000000..bca6045 --- /dev/null +++ b/lib/capistrano/rails/assets.rb @@ -0,0 +1 @@ +load File.expand_path("../../tasks/assets.rake", __FILE__) diff --git a/lib/capistrano/rails/migrations.rb b/lib/capistrano/rails/migrations.rb new file mode 100644 index 0000000..4812c69 --- /dev/null +++ b/lib/capistrano/rails/migrations.rb @@ -0,0 +1 @@ +load File.expand_path("../../tasks/migrations.rake", __FILE__) diff --git a/lib/capistrano/tasks/assets.rake b/lib/capistrano/tasks/assets.rake new file mode 100644 index 0000000..fc690c6 --- /dev/null +++ b/lib/capistrano/tasks/assets.rake @@ -0,0 +1,13 @@ +namespace :deploy do + desc 'Normalise asset timestamps' + task :normalise_assets do + on roles :web do + within release_path do + assets = %{public/images public/javascripts public/stylesheets} + execute :find, "#{assets} -exec touch -t #{asset_timestamp} {} ';'; true" + end + end + end + + after :finalize, 'deploy:normalise_assets' +end diff --git a/lib/capistrano/tasks/migrations.rake b/lib/capistrano/tasks/migrations.rake new file mode 100644 index 0000000..bfac2df --- /dev/null +++ b/lib/capistrano/tasks/migrations.rake @@ -0,0 +1,14 @@ +namespace :deploy do + + desc 'Runs rake db:migrate if migrations are set' + task :migrate do + on primary :db do + within release_path do + execute :rake, "db:migrate RAILS_ENV=#{fetch(:stage)}" + end + end + end + + after 'deploy:update', 'deploy:migrate' +end +