biola_deploy 0.2.0 → 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.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 37876e7ccc26ce81b6860ff0084e35bc8dd8af0d
4
+ data.tar.gz: 80d9e9ee2f0806b33ff16db4e16b1149c607471e
5
+ SHA512:
6
+ metadata.gz: 4682ae61f9e974da52a8a58d92299b4dff53fd4b3a841b7fcda0a33c5ba3a4df76b2b737db953931039336e97385ece040ef235d28efeae8ce07a7d7989e9ffc
7
+ data.tar.gz: 4f975e99cc2cae4aca2aa325bee582d201611c84fc73e9d872cba9e86d1dec1c9a95b990e707bbf6c73dc24efb644beb3e850715b87f17163f545365e2ac9f57
@@ -1,3 +1,3 @@
1
1
  module BiolaDeploy
2
- VERSION = '0.2.0'
2
+ VERSION = '0.3.0'
3
3
  end
@@ -1,120 +1,13 @@
1
- require 'whiskey_disk/helpers'
2
1
  require 'fileutils'
3
2
  require 'uri'
4
3
 
5
4
  namespace :deploy do
6
- desc 'Create a new user for the app'
7
- task :create_user => :environment do
8
- unless app_user_exists?
9
- puts "creating user #{app_username}..."
10
- system "sudo useradd --system --shell /bin/false --home #{app_dir} #{app_username}"
11
- end
12
- end
13
-
14
- desc 'Put the logs in /var/log and sym link to ./logs'
15
- task :prepare_logs => :environment do
16
- puts 'preparing logs...'
17
-
18
- # ensure the base log directory for our apps exists
19
- system("sudo mkdir #{base_log_dir}") unless Dir.exists?(base_log_dir)
20
-
21
- # create the app's log directory under the base directory and make the app user the owner
22
- system "sudo mkdir #{app_log_dir}" unless Dir.exists?(app_log_dir)
23
- chown_to_app_user app_log_dir
24
-
25
- # symbolic link the system log directory to the app log directory
26
- Dir.chdir(app_dir) do
27
- system('rm -rf log') if Dir.exists?('log')
28
- FileUtils.ln_s(app_log_dir, 'log')
29
- end
30
- end
31
-
32
- desc 'Create the ./tmp directory with the correct permissions'
33
- task :prepare_tmp => :environment do
34
- puts 'preparing /tmp directory...'
35
- Dir.chdir(app_dir) do
36
- Dir.mkdir('tmp') unless Dir.exists?('tmp')
37
- make_globally_writable 'tmp'
38
- chown_to_app_user 'public'
39
- end
40
- end
41
-
42
- desc 'Set permissions on ./public'
43
- task :prepare_public => :environment do
44
- Dir.chdir(app_dir) do
45
- make_globally_writable 'public'
46
- chown_to_app_user 'public'
47
- end
48
- end
49
-
50
- desc 'Configure Nginx to serve the app'
51
- task :setup_webserver => :environment do
52
- File.open(webserver_app_config_file, 'w') do |file|
53
- config = if server?
54
- "
55
- server {
56
- listen 80;
57
- listen 443 ssl;
58
- server_name #{app_url.host};
59
- server_name #{app_url.host.split('.').first}.#{hostname};
60
-
61
- index index.html index.htm;
62
-
63
- location / {
64
- root #{app_public_dir};
65
- passenger_set_cgi_param HTTP_X_FORWARDED_PROTO $scheme;
66
- passenger_enabled on;
67
- }
68
- }
69
- "
70
- else
71
- "
72
- location #{app_url.path} {
73
- passenger_enabled on;
74
- passenger_base_uri #{app_url.path};
75
- passenger_user #{app_username};
76
- passenger_group #{app_username};
77
- passenger_set_cgi_param HTTP_X_FORWARDED_PROTO $scheme;
78
- }
79
- "
80
- end
81
-
82
- file.write config
83
- end
84
-
85
- # sym link the location path
86
- if location?
87
- FileUtils.ln_s(File.join(app_dir, 'public'), File.join(web_root_dir, app_url.path))
88
- end
89
- end
90
-
91
- desc 'Create the database'
92
- task :create_db do
93
- host = db_config['host'] || 'localhost'
94
-
95
- if db_config['adapter'] =~ /mysql/
96
- client = Mysql2::Client.new(:host => host, :username => ENV['DB_CREATE_USERNAME'], :password => ENV['DB_CREATE_PASSWORD'])
97
- db = db_config['database']
98
- user = db_config['username']
99
- password = db_config['password']
100
-
101
- client.query 'USE mysql'
102
- client.query "CREATE DATABASE IF NOT EXISTS #{db}"
103
- client.query "GRANT ALL PRIVILEGES ON #{db}.* TO '#{user}'@'%' IDENTIFIED BY '#{password}'"
104
- end
105
- end
106
-
107
5
  desc 'Run the database migrations'
108
6
  task :migrate_db => :environment do
109
7
  puts 'migrating the database...'
110
8
  Rake::Task['db:migrate'].invoke
111
9
  end
112
10
 
113
- desc 'TODO'
114
- task :setup_solr do
115
- # TODO
116
- end
117
-
118
11
  desc 'Reindex Solr if it exists'
119
12
  task :reindex_solr do
120
13
  if Rake::Task.task_defined? 'sunspot:reindex'
@@ -131,17 +24,6 @@ location #{app_url.path} {
131
24
  end
132
25
  end
133
26
 
134
- desc 'Trigger a Passenger restart'
135
- task :restart_app => :environment do
136
- restart_file = 'tmp/restart.txt'
137
-
138
- puts 'restarting the app...'
139
- Dir.chdir(app_dir) do
140
- make_globally_writable restart_file if File.exists? restart_file
141
- FileUtils.touch restart_file
142
- end
143
- end
144
-
145
27
  desc 'Tell NewRelic about this deployment'
146
28
  task :tell_newrelic => :environment do
147
29
  require 'new_relic/command'
@@ -156,87 +38,28 @@ location #{app_url.path} {
156
38
  NewRelic::Command::Deployments.new :revision => version
157
39
  end
158
40
 
159
- desc 'Run all setup tasks'
160
- task :post_setup => [:create_db, :create_user, :prepare_logs, :prepare_tmp, :prepare_public, :setup_webserver, :setup_solr]
41
+ desc 'Trigger a Passenger restart'
42
+ task :restart_app => :environment do
43
+ restart_file = 'tmp/restart.txt'
44
+
45
+ puts 'restarting the app...'
46
+ Dir.chdir(app_dir) do
47
+ make_globally_writable restart_file if File.exists? restart_file
48
+ FileUtils.touch restart_file
49
+ end
50
+ end
161
51
 
162
52
  desc 'Run all deployment tasks'
163
53
  task :post_deploy => [:migrate_db, :reindex_solr, :precompile_assets, :tell_newrelic, :restart_app]
164
54
 
165
55
  private
166
- def web_root_dir
167
- ENV['WEB_ROOT']
168
- end
169
56
 
170
57
  def app_dir
171
58
  Rails.root.to_s
172
59
  end
173
60
 
174
- def app_public_dir
175
- File.join(app_dir, 'public')
176
- end
177
-
178
- def app_url
179
- URI.parse ENV['APP_URL']
180
- end
181
- alias :app_uri :app_url
182
-
183
- def url_type
184
- if app_url.path.to_s.gsub('/', '') == ''
185
- :server
186
- else
187
- :location
188
- end
189
- end
190
-
191
- def server?
192
- url_type == :server
193
- end
194
-
195
- def location?
196
- url_type == :location
197
- end
198
-
199
- def app_name
200
- ENV['APP_NAME']
201
- end
202
-
203
- def app_username
204
- app_name
205
- end
206
-
207
- def hostname
208
- system 'hostname --long'
209
- end
210
-
211
- def webserver_app_config_file
212
- "/etc/nginx/sites/#{app_name}.#{url_type}.conf"
213
- end
214
-
215
- def base_log_dir
216
- '/var/log/rails'
217
- end
218
-
219
- def app_log_dir
220
- File.join(base_log_dir, app_name)
221
- end
222
-
223
- def app_user_exists?
224
- !!system("id #{app_username}")
225
- end
226
-
227
- def chown_to_app_user(file)
228
- system "sudo chown -R #{app_username}:#{app_username} #{file}"
229
- end
230
-
231
61
  def make_globally_writable(file)
232
62
  permissions = File.directory?(file) ? 777 : 666
233
63
  system "sudo chmod #{permissions} #{file}"
234
64
  end
235
-
236
- def db_config
237
- return @db_config unless @db_config.nil?
238
-
239
- database_yml_path = File.join(changes_file_root, 'config', 'database.yml')
240
- @db_config = YAML::load(File.open(database_yml_path))[ENV['RAILS_ENV']]
241
- end
242
- end
65
+ end
metadata CHANGED
@@ -1,60 +1,46 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: biola_deploy
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
5
- prerelease:
4
+ version: 0.3.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - Adam Crownoble
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2012-04-11 00:00:00.000000000 Z
13
- dependencies:
14
- - !ruby/object:Gem::Dependency
15
- name: whiskey_disk
16
- requirement: &71291250 !ruby/object:Gem::Requirement
17
- none: false
18
- requirements:
19
- - - ! '>='
20
- - !ruby/object:Gem::Version
21
- version: 0.6.24
22
- type: :runtime
23
- prerelease: false
24
- version_requirements: *71291250
25
- description: Designed to automate deployment of Biola's applications to it's servers
26
- using whiskey_disk friendly rake tasks
11
+ date: 2013-10-01 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: Designed to automate deployment of Rails applications using rake tasks
27
14
  email: adam.crownoble@biola.edu
28
15
  executables: []
29
16
  extensions: []
30
17
  extra_rdoc_files: []
31
18
  files:
32
- - lib/biola_deploy.rb
33
19
  - lib/biola_deploy/version.rb
34
20
  - lib/biola_deploy/engine.rb
21
+ - lib/biola_deploy.rb
35
22
  - lib/tasks/deploy.rake
36
23
  homepage: https://bitbucket.org/biola/biola-deploy
37
24
  licenses: []
25
+ metadata: {}
38
26
  post_install_message:
39
27
  rdoc_options: []
40
28
  require_paths:
41
29
  - lib
42
30
  required_ruby_version: !ruby/object:Gem::Requirement
43
- none: false
44
31
  requirements:
45
- - - ! '>='
32
+ - - '>='
46
33
  - !ruby/object:Gem::Version
47
34
  version: '0'
48
35
  required_rubygems_version: !ruby/object:Gem::Requirement
49
- none: false
50
36
  requirements:
51
- - - ! '>='
37
+ - - '>='
52
38
  - !ruby/object:Gem::Version
53
39
  version: '0'
54
40
  requirements: []
55
41
  rubyforge_project:
56
- rubygems_version: 1.8.16
42
+ rubygems_version: 2.0.3
57
43
  signing_key:
58
- specification_version: 3
59
- summary: Easy deployment for Biola applications
44
+ specification_version: 4
45
+ summary: Easy deployment for Rails applications
60
46
  test_files: []