underglow 0.1.8 → 0.2.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 31e742746ec98fb112a733726f431c95450e59c8
4
- data.tar.gz: 744e5b604947bb209285b74c915fb3d8ae7e4ca9
3
+ metadata.gz: a9afa7d76bccc5002516cd987bdd8848e4ce28ea
4
+ data.tar.gz: 99e8c83643c201af223cc4c4fa51d3ceffa65b63
5
5
  SHA512:
6
- metadata.gz: 5e80ef5d396d3849321bf09e20d15c37d1bfa37c999f9fc970252ac1f116df0b5c5190488d73e7d7a6796f45eadc8de644d303dd7de114f8826169539db4d122
7
- data.tar.gz: 60e56026b9a6b3c6a8839f3f14ffb47761aba8b9a773eb5bf7ce58d0f61033abb43f8e6ae6990daa45ad7c8b8101189c555faaf2d23b0c1cc426291e085440c4
6
+ metadata.gz: 0cab59c67f916a5372c0e98189e1be02c673285ab9862dfe66b148c3118468337037335e0d06048275568f19bf3e3f0a8a9f92fa3d5f63dddb172c8b9df91908
7
+ data.tar.gz: f39009518c54ce2f8581b205731d290712cfc0f11d5ce99f6a173749a866dac90d6e2aa2f7fa3d00e7abba130629f478ccc526aacacb8a83399d32b387156ab1
data/Gemfile CHANGED
@@ -1,7 +1,8 @@
1
1
  source "http://rubygems.org"
2
2
 
3
- # Add dependencies to develop your gem here.
4
- # Include everything needed to run rake, tests, features, etc.
3
+ gem 'activesupport'
4
+ gem 'capistrano-rails', '>= 1.0.0'
5
+
5
6
  group :development do
6
7
  gem "rspec", "~> 2.8.0"
7
8
  gem "bundler"
@@ -1,26 +1,29 @@
1
- Capistrano::Configuration.instance.load do
2
- # Make sure gem 'capistrano-ext' is installed for this
3
- after "multistage:ensure" do
4
- set :rails_env, stage
5
- end
1
+ require 'active_support'
2
+ require 'active_support/core_ext/object/blank'
6
3
 
7
- # Run remote command via SSH
8
- def run_remote(command)
9
- exec "ssh #{stage} -t 'source ~/.profile && #{command}'"
10
- end
4
+ require 'pry'
11
5
 
12
- # Can't use File.exists? because it'll check the local filesystem, not remote
13
- def remote_file_exists?(path)
14
- 'true' == capture("if [ -e #{path} ]; then echo 'true'; fi").strip
15
- end
6
+ def remote_file_exists?(path)
7
+ test("[ -e #{command.options[:in]}/#{path} ]")
8
+ end
16
9
 
17
- def read_remote_file(path)
18
- capture("cat #{path}").strip
19
- end
10
+ def capture_remote_file(path)
11
+ return unless remote_file_exists?(path)
20
12
 
21
- # Sends kill signal if process is running
22
- def kill(process, signal)
23
- pidfile_path = "#{shared_path}/pids/#{process}.pid"
24
- run "if [ -e #{pidfile_path} ]; then kill -#{signal} `cat #{pidfile_path}` > /dev/null 2>&1; fi"
25
- end
13
+ capture(:cat, path).strip
26
14
  end
15
+
16
+ # SSH with pseudo-tty
17
+ def execute_with_tty(*args)
18
+ exec "ssh #{host.user}@#{host.hostname} -t '#{command(*args).to_command}'"
19
+ end
20
+
21
+ # Sends kill signal to process is running
22
+ def kill_process(process, signal)
23
+ within "#{shared_path}/pids" do
24
+ pid = capture_remote_file("#{process}.pid")
25
+ # binding.pry
26
+
27
+ execute :kill, "-#{signal}", pid unless pid.blank?
28
+ end
29
+ end
@@ -0,0 +1,11 @@
1
+ namespace :deploy do
2
+ task :chmod_binstubs do
3
+ on roles(:app) do
4
+ within release_path do
5
+ execute :chmod, "775", "-R", "bin"
6
+ end
7
+ end
8
+ end
9
+
10
+ after "updated", "chmod_binstubs"
11
+ end
@@ -0,0 +1,73 @@
1
+ namespace :rails do
2
+ desc "Run rails console"
3
+ task console: :'deploy:set_rails_env' do
4
+ on roles(:app) do
5
+ within current_path do
6
+ with rails_env: fetch(:rails_env) do
7
+ execute_with_tty "bin/rails", "c"
8
+ end
9
+ end
10
+ end
11
+ end
12
+
13
+ task c: :console
14
+
15
+ # Ex: cap production rake:invoke TASK=db:migrate TRACE=true ENV=FOO=bar,BAZ=boo"
16
+ desc "Run rails rake task"
17
+ task rake: :'deploy:set_rails_env' do
18
+ on roles(:app) do
19
+ within current_path do
20
+ with rails_env: fetch(:rails_env) do
21
+ # Build environment variables that we need
22
+ # to pass in
23
+ env = (ENV.delete('ENV') || "")
24
+ env_hash = env.split(',').each_with_object({}) do |pair, hash|
25
+ key, value = pair.split('=')
26
+
27
+ hash[key.downcase.to_sym] = value
28
+ end
29
+
30
+ with env_hash do
31
+ args = ["bin/rake", ENV['TASK']]
32
+ args << "--trace" if ENV['TRACE']
33
+
34
+ execute(*args)
35
+ end
36
+ end
37
+ end
38
+ end
39
+ end
40
+
41
+ desc "Run rails runner"
42
+ task runner: 'deploy:set_rails_env' do
43
+ on roles(:app) do
44
+ within current_path do
45
+ with rails_env: fetch(:rails_env) do
46
+ execute "bin/rails", "runner", ENV['FILE']
47
+ end
48
+ end
49
+ end
50
+ end
51
+
52
+ desc "View rails log"
53
+ task log: 'deploy:set_rails_env' do
54
+ on roles(:app) do
55
+ within current_path do
56
+ with rails_env: fetch(:rails_env) do
57
+ execute_with_tty "vi", "log/#{fetch(:stage)}.log"
58
+ end
59
+ end
60
+ end
61
+ end
62
+
63
+ desc "Tail rails log"
64
+ task tail: 'deploy:set_rails_env' do
65
+ on roles(:app) do
66
+ within current_path do
67
+ with rails_env: fetch(:rails_env) do
68
+ execute "tail", "-f", "log/#{fetch(:stage)}.log"
69
+ end
70
+ end
71
+ end
72
+ end
73
+ end
@@ -0,0 +1,18 @@
1
+ namespace :unicorn do
2
+ # Sends a USR2 signal to master unicorn to spawn a new master (based on the updated codebase)
3
+ # When new master spawns new workers, the old master process is killed
4
+ # This allows for zero downtime
5
+ desc "Restarts Unicorn gracefully to serve updated code"
6
+ task :restart do
7
+ on roles(:web) do
8
+ kill_process "unicorn", "USR2"
9
+ end
10
+ end
11
+
12
+ desc "Kill Unicorn"
13
+ task :reset do
14
+ on roles(:web) do
15
+ kill_process "unicorn", "SIGTERM"
16
+ end
17
+ end
18
+ end
@@ -1,6 +1,7 @@
1
+ # First require capistrano helpers
1
2
  require 'underglow/capistrano/helpers'
2
- require 'underglow/capistrano/deploy'
3
- require 'underglow/capistrano/deploy/db'
4
- require 'underglow/capistrano/deploy/rails'
5
- require 'underglow/capistrano/deploy/rake'
6
- require 'underglow/capistrano/deploy/unicorn'
3
+
4
+ # Load all capistrano tasks
5
+ Dir.glob(File.expand_path("../capistrano/tasks/*.rake", __FILE__)).each do |task|
6
+ load task
7
+ end
@@ -1,3 +1,3 @@
1
1
  module Underglow
2
- VERSION = "0.1.8"
2
+ VERSION = "0.2.0"
3
3
  end
data/underglow.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "underglow"
8
- s.version = "0.1.8"
8
+ s.version = "0.2.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["James Hu"]
12
- s.date = "2014-10-27"
12
+ s.date = "2014-12-01"
13
13
  s.description = "A library that makes life easier."
14
14
  s.email = "axsuul@gmail.com"
15
15
  s.extra_rdoc_files = [
@@ -25,12 +25,10 @@ Gem::Specification.new do |s|
25
25
  "Rakefile",
26
26
  "lib/underglow.rb",
27
27
  "lib/underglow/capistrano.rb",
28
- "lib/underglow/capistrano/deploy.rb",
29
- "lib/underglow/capistrano/deploy/db.rb",
30
- "lib/underglow/capistrano/deploy/rails.rb",
31
- "lib/underglow/capistrano/deploy/rake.rb",
32
- "lib/underglow/capistrano/deploy/unicorn.rb",
33
28
  "lib/underglow/capistrano/helpers.rb",
29
+ "lib/underglow/capistrano/tasks/deploy.rake",
30
+ "lib/underglow/capistrano/tasks/rails.rake",
31
+ "lib/underglow/capistrano/tasks/unicorn.rake",
34
32
  "lib/underglow/extensions/array.rb",
35
33
  "lib/underglow/extensions/string.rb",
36
34
  "lib/underglow/extensions/symbol.rb",
@@ -56,17 +54,23 @@ Gem::Specification.new do |s|
56
54
  s.specification_version = 4
57
55
 
58
56
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
57
+ s.add_runtime_dependency(%q<activesupport>, [">= 0"])
58
+ s.add_runtime_dependency(%q<capistrano-rails>, [">= 1.0.0"])
59
59
  s.add_development_dependency(%q<rspec>, ["~> 2.8.0"])
60
60
  s.add_development_dependency(%q<bundler>, [">= 0"])
61
61
  s.add_development_dependency(%q<jeweler>, ["~> 1.8.8"])
62
62
  s.add_development_dependency(%q<pry>, [">= 0"])
63
63
  else
64
+ s.add_dependency(%q<activesupport>, [">= 0"])
65
+ s.add_dependency(%q<capistrano-rails>, [">= 1.0.0"])
64
66
  s.add_dependency(%q<rspec>, ["~> 2.8.0"])
65
67
  s.add_dependency(%q<bundler>, [">= 0"])
66
68
  s.add_dependency(%q<jeweler>, ["~> 1.8.8"])
67
69
  s.add_dependency(%q<pry>, [">= 0"])
68
70
  end
69
71
  else
72
+ s.add_dependency(%q<activesupport>, [">= 0"])
73
+ s.add_dependency(%q<capistrano-rails>, [">= 1.0.0"])
70
74
  s.add_dependency(%q<rspec>, ["~> 2.8.0"])
71
75
  s.add_dependency(%q<bundler>, [">= 0"])
72
76
  s.add_dependency(%q<jeweler>, ["~> 1.8.8"])
metadata CHANGED
@@ -1,15 +1,43 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: underglow
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.8
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Hu
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-10-27 00:00:00.000000000 Z
11
+ date: 2014-12-01 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: activesupport
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - '>='
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - '>='
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: capistrano-rails
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - '>='
32
+ - !ruby/object:Gem::Version
33
+ version: 1.0.0
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - '>='
39
+ - !ruby/object:Gem::Version
40
+ version: 1.0.0
13
41
  - !ruby/object:Gem::Dependency
14
42
  name: rspec
15
43
  requirement: !ruby/object:Gem::Requirement
@@ -82,12 +110,10 @@ files:
82
110
  - Rakefile
83
111
  - lib/underglow.rb
84
112
  - lib/underglow/capistrano.rb
85
- - lib/underglow/capistrano/deploy.rb
86
- - lib/underglow/capistrano/deploy/db.rb
87
- - lib/underglow/capistrano/deploy/rails.rb
88
- - lib/underglow/capistrano/deploy/rake.rb
89
- - lib/underglow/capistrano/deploy/unicorn.rb
90
113
  - lib/underglow/capistrano/helpers.rb
114
+ - lib/underglow/capistrano/tasks/deploy.rake
115
+ - lib/underglow/capistrano/tasks/rails.rake
116
+ - lib/underglow/capistrano/tasks/unicorn.rake
91
117
  - lib/underglow/extensions/array.rb
92
118
  - lib/underglow/extensions/string.rb
93
119
  - lib/underglow/extensions/symbol.rb
@@ -1,8 +0,0 @@
1
- Capistrano::Configuration.instance.load do
2
- namespace :db do
3
- desc "Seed database"
4
- task :seed, roles: :db do
5
- run "#{rake_command} db:seed"
6
- end
7
- end
8
- end
@@ -1,20 +0,0 @@
1
- Capistrano::Configuration.instance.load do
2
- namespace :rails do
3
- desc "Run rails console"
4
- task :console, roles: :app do
5
- run_remote "cd #{current_path} && #{deploy_to}/environment bin/rails c"
6
- end
7
-
8
- desc "View rails log"
9
- task :log, roles: :app do
10
- run_remote "cd #{current_path} && vi log/#{stage}.log"
11
- end
12
-
13
- desc "Tail rails log"
14
- task :tail, roles: :app do
15
- run_remote "cd #{current_path} && tail -f log/#{stage}.log"
16
- end
17
-
18
- alias_task :c, :console
19
- end
20
- end
@@ -1,33 +0,0 @@
1
- Capistrano::Configuration.instance.load do
2
- # So we can use rake within commands
3
- after "multistage:ensure" do
4
- set :rake_command, "RAILS_ENV=#{stage} #{current_path}/bin/rake -f #{current_path}/Rakefile"
5
- end
6
-
7
- before "deploy:update_code" do
8
- # We are about to update code, so we need to use release path because the current path will be the old code
9
- set :rake_command, "RAILS_ENV=#{stage} #{release_path}/bin/rake -f #{release_path}/Rakefile"
10
- end
11
-
12
- namespace :rake do
13
- # Note: do not name this task to "run"
14
- desc "Invoke a rake task, ex: cap production rake:invoke TASK=db:migrate TRACE=true ENV=FOO=BAR,BAZ=BOO"
15
- task :invoke do
16
- arguments = []
17
-
18
- # Extract special environment variables
19
- trace = ENV.delete('TRACE')
20
- task = ENV.delete('TASK')
21
- env = ENV.delete('ENV')
22
-
23
- # Build arguments list
24
- arguments << "--trace" if trace
25
- arguments_command = arguments.join(' ')
26
-
27
- # Build environment variables to pass in
28
- env_command = env.split(',').join(' ') if env
29
-
30
- run "#{env_command} #{rake_command} #{task} #{arguments_command}"
31
- end
32
- end
33
- end
@@ -1,16 +0,0 @@
1
- Capistrano::Configuration.instance.load do
2
- namespace :unicorn do
3
- # Sends a USR2 signal to master unicorn to spawn a new master (based on the updated codebase)
4
- # When new master spawns new workers, the old master process is killed
5
- # This allows for zero downtime
6
- desc "Restarts Unicorn gracefully to serve updated code"
7
- task :restart, roles: :web do
8
- kill "unicorn", "USR2"
9
- end
10
-
11
- desc "Kill Unicorn"
12
- task :reset, roles: :web do
13
- kill "unicorn", "SIGTERM"
14
- end
15
- end
16
- end
@@ -1,38 +0,0 @@
1
- Capistrano::Configuration.instance.load do
2
- # this task gets called last by capistrano when required to restart stuff
3
- namespace :deploy do
4
- # Custom web enable/disable tasks by simply added active suffix to maintenance page
5
- namespace :web do
6
- desc "Present a maintenance page to visitors."
7
- task :disable do
8
- require 'haml'
9
- on_rollback { run "rm #{shared_path}/system/maintenance.html" }
10
-
11
- reason = ENV['REASON']
12
- deadline = ENV['UNTIL']
13
- template = File.read('app/views/layouts/maintenance.html.haml')
14
- html = Haml::Engine.new(template).render(binding)
15
-
16
- put html, "#{shared_path}/system/maintenance.html", mode: 0644
17
- end
18
- end
19
-
20
- namespace :assets do
21
- desc "Precompile assets only if they haven't changed"
22
- task :precompile, roles: :web, except: { no_release: true } do
23
- # if there's no current revision, then this is the first deploy, then we must precompile regardless
24
- # otherwise, only precompile if assets have changed
25
- if !remote_file_exists?("#{current_path}/REVISION") or capture("cd #{release_path} && #{source.local.log(source.next_revision(current_revision))} vendor/assets/ app/assets/ | wc -l").to_i > 0
26
- run %Q{cd #{release_path} && #{rake_command} RAILS_ENV=#{stage} #{asset_env} assets:precompile}
27
- else
28
- logger.info "Skipping asset pre-compilation because there were no asset changes"
29
- end
30
- end
31
- end
32
- end
33
-
34
- # Give executable permissions to binstubs
35
- after "bundle:install" do
36
- run "chmod 775 -R #{release_path}/bin"
37
- end
38
- end