pushapp 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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 5346ed0413dd7cec4958c67f1bfe0593eb84c0b5
4
- data.tar.gz: 3ccebfa60836dcf1f6101009ff4354f548540394
3
+ metadata.gz: 29e1709edb9f11e1d53da1056e29e02b2083fbf5
4
+ data.tar.gz: 256aa9bcebac136299544ecfe84b81aac263ed0f
5
5
  SHA512:
6
- metadata.gz: 1e310f5df0d17b031878c09f73e8f716c967aca4c0e2d32873ae401b394bc60e091b4d2aa0422bc91699b55382e52a325418a0ce6b6c1aa128a5d71cd98ae6ca
7
- data.tar.gz: aed3285137b373fd8a69fa5a5dac8ea7d1916ef9883418972dc88ee9f96a2f7c78cd319d87343627980c721ecd3d2b6c1d7f8e103408f3f9cacd7aed93de21ee
6
+ metadata.gz: 1ed832d2791477b269fa653c6b84f193ede75e567ca717eef086fc857fffb1d60c2ce11eeb55e5e9672d018b207cfa06a731c95daa01424ef19d569e721cc730
7
+ data.tar.gz: d802a27dd8d8c8aae5864768cedc4b7be8a164701819f1ef927affd30ca691b07da390d38a3022d281e65db4c745ce60b2b6e9047e5c32deb7537d0ad117c93d
@@ -135,7 +135,7 @@ class Pushapp::Remote
135
135
  end
136
136
 
137
137
  def merge_options task_options={}
138
- Pushapp.rmerge(task_options, options).merge(remote: name)
138
+ Pushapp.rmerge(task_options, options).merge(remote: self)
139
139
  end
140
140
 
141
141
  end
@@ -15,6 +15,26 @@ module Pushapp
15
15
  def run
16
16
  end
17
17
 
18
+ def env
19
+ Hash[env_options.map {|k, v| [k.to_s, v.to_s] }]
20
+ end
21
+
22
+ def env_options
23
+ options[:env] || {}
24
+ end
25
+
26
+ def sudo
27
+ options[:sudo] || 'sudo'
28
+ end
29
+
30
+ def system cmd
31
+ Pipe.run cmd
32
+ end
33
+
34
+ def app_name_from_path
35
+ options[:remote].path ? options[:remote].path.split('/').last : nil
36
+ end
37
+
18
38
  def self.register_as name
19
39
  Pushapp::Config.register_task name, self
20
40
  end
@@ -5,7 +5,72 @@ module Pushapp
5
5
  class ForemanExport < Base
6
6
 
7
7
  def run
8
- logger.info 'Forman exporting...'
8
+ system "#{sudo} bundle exec foreman export #{arguments}"
9
+ end
10
+
11
+ private
12
+
13
+ def arguments
14
+ args = ["#{foreman_format} #{foreman_location}"]
15
+ args << "-f #{foreman_procfile}" if foreman_procfile
16
+ args << "-a #{foreman_app}" if foreman_app
17
+ args << "-u #{foreman_user}" if foreman_user
18
+ args << "-d #{foreman_directory}" if foreman_directory
19
+ args << "-e #{foreman_env}" if foreman_env
20
+ args << "-l #{foreman_log}"
21
+ args << "-p #{options[:foreman_port]}" if options[:foreman_port]
22
+ args << "-c #{options[:foreman_concurrency]}" if options[:foreman_concurrency]
23
+ args << "-t #{options[:foreman_template]}" if options[:foreman_template]
24
+ args.join(' ')
25
+ end
26
+
27
+ def foreman_format
28
+ options[:foreman_format] || "upstart"
29
+ end
30
+
31
+ def foreman_location
32
+ options[:foreman_location] || foreman_format == 'upstart' ? '/etc/init' : nil
33
+ end
34
+
35
+ def foreman_procfile
36
+ options[:foreman_procfile] || find_procfile
37
+ end
38
+
39
+ def foreman_app
40
+ options[:foreman_app] || app_name_from_path
41
+ end
42
+
43
+ def foreman_user
44
+ options[:foreman_user] || options[:remote].user
45
+ end
46
+
47
+ def foreman_directory
48
+ options[:foreman_directory] || options[:remote].path
49
+ end
50
+
51
+ def foreman_env
52
+ options[:foreman_env] || find_dot_env_file
53
+ end
54
+
55
+ def foreman_log
56
+ options[:foreman_log] || 'log/foreman'
57
+ end
58
+
59
+ def find_dot_env_file
60
+ dot_env = ['.env', rails_env].compact.join('.')
61
+ return dot_env if File.exists?(dot_env)
62
+ return '.env' if File.exists?('.env')
63
+ end
64
+
65
+ def find_procfile
66
+ procfile = ['config/deploys/Procfile', rails_env].join('.')
67
+ return procfile if File.exists?(procfile)
68
+ procfile = ['Procfile', rails_env].join('.')
69
+ return procfile if File.exists?(procfile)
70
+ end
71
+
72
+ def rails_env
73
+ env['RAILS_ENV']
9
74
  end
10
75
 
11
76
  register_as :foreman_export
@@ -0,0 +1,32 @@
1
+ require 'pushapp/tasks/base'
2
+
3
+ module Pushapp
4
+ module Tasks
5
+ class NginxExport < Nginx
6
+ def run
7
+ system "#{sudo} cp #{nginx_conf} #{nginx_sites}"
8
+
9
+ unless options[:nginx_skip_reload]
10
+ system "#{sudo} /etc/init.d/nginx reload"
11
+ end
12
+ end
13
+
14
+ register_as :nginx_export
15
+
16
+ private
17
+
18
+ def nginx_conf
19
+ options[:nginx_conf] || find_nginx_conf
20
+ end
21
+
22
+ def nginx_sites
23
+ options[:nginx_sites] || '/etc/nginx/sites-enabled'
24
+ end
25
+
26
+ def find_nginx_conf
27
+ file = "config/deploys/#{app_name_from_path}.nginx.conf"
28
+ return file if File.exists?(file)
29
+ end
30
+ end
31
+ end
32
+ end
@@ -15,14 +15,6 @@ module Pushapp
15
15
  [env, script]
16
16
  end
17
17
 
18
- def env
19
- Hash[env_options.map {|k, v| [k.to_s, v.to_s] }]
20
- end
21
-
22
- def env_options
23
- options[:env] || {}
24
- end
25
-
26
18
  def inspect
27
19
  "script: #{script}"
28
20
  end
@@ -0,0 +1,62 @@
1
+ require 'pushapp/tasks/base'
2
+
3
+ module Pushapp
4
+ module Tasks
5
+ class Upstart < Base
6
+ def upstart_job
7
+ @upstart_job ||= options[:upstart_job] || job_name_from_path
8
+ end
9
+
10
+ def upstart_jobs
11
+ options[:upstart_jobs] || []
12
+ end
13
+
14
+ def job_name_from_path
15
+ options[:remote].path ? options[:remote].path.split('/').last : nil
16
+ end
17
+
18
+ def jobs
19
+ @jobs ||= upstart_jobs.empty? ? [upstart_job] : upstart_jobs.map {|j| [upstart_job, j].compact.join("-")}
20
+ end
21
+
22
+ def run
23
+ jobs.each { |j| run_on(j) }
24
+ end
25
+
26
+ def run_on job
27
+ end
28
+ end
29
+
30
+ class UpstartStart < Upstart
31
+ def run_on job
32
+ system "#{sudo} initctl start #{job}"
33
+ end
34
+
35
+ register_as :upstart_start
36
+ end
37
+
38
+ class UpstartStop < Upstart
39
+ def run_on job
40
+ system "#{sudo} initctl stop #{job}"
41
+ end
42
+
43
+ register_as :upstart_stop
44
+ end
45
+
46
+ class UpstartRestart < Upstart
47
+ def run_on job
48
+ system "#{sudo} initctl start #{job} || initctl restart #{job}"
49
+ end
50
+
51
+ register_as :upstart_restart
52
+ end
53
+
54
+ class UpstartReload < Upstart
55
+ def run_on job
56
+ system "#{sudo} initctl start #{job} || initctl restart #{job}"
57
+ end
58
+
59
+ register_as :upstart_reload
60
+ end
61
+ end
62
+ end
@@ -1,3 +1,3 @@
1
1
  module Pushapp
2
- VERSION = '0.0.1'
2
+ VERSION = '0.0.2'
3
3
  end
@@ -1,4 +1,7 @@
1
1
  # Pushapp Configuration File
2
+ require 'pushapp/tasks/upstart'
3
+ require 'pushapp/tasks/nginx_export'
4
+ require 'pushapp/tasks/foreman_export'
2
5
 
3
6
  # Sample remote definition:
4
7
  #
@@ -17,14 +20,18 @@
17
20
  # worker: true
18
21
  # end
19
22
 
20
- remote 'staging', 'app@server3:/home/app/app-staging',
21
- web:true, db: true, env: {RAILS_ENV: 'staging'}
23
+ remote 'production', 'app@server3:/home/app/app', env: {RAILS_ENV: 'production'}
22
24
 
23
25
  on :setup do
24
- rake('db:create db:migrate db:seed') if options[:db]
26
+ task :nginx_export
27
+ rake('db:create db:migrate db:seed')
28
+ rake('precompile:assets', env: {RAILS_GROUP: :assets})
29
+ task(:foreman_export)
30
+ task(:upstart_restart)
25
31
  end
26
32
 
27
33
  on :push do
28
- rake('db:migrate') if options[:db]
29
- rake('precompile:assets', env: {RAILS_GROUP: :assets}) if options[:web]
34
+ rake('db:migrate')
35
+ rake('precompile:assets', env: {RAILS_GROUP: :assets})
36
+ task(:upstart_restart)
30
37
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pushapp
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yury Korolev
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-04-30 00:00:00.000000000 Z
11
+ date: 2013-05-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: thor
@@ -92,8 +92,10 @@ files:
92
92
  - lib/pushapp/remote.rb
93
93
  - lib/pushapp/tasks/base.rb
94
94
  - lib/pushapp/tasks/foreman_export.rb
95
+ - lib/pushapp/tasks/nginx_export.rb
95
96
  - lib/pushapp/tasks/rake.rb
96
97
  - lib/pushapp/tasks/script.rb
98
+ - lib/pushapp/tasks/upstart.rb
97
99
  - lib/pushapp/version.rb
98
100
  - pushapp.gemspec
99
101
  - templates/config.rb.erb