smartcloud 0.1.0.beta4 → 0.1.0.rc4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c2193237edead97e61dd871f7ae5ae00af0a9005d40b0beeba2ab8ac3e010e68
4
- data.tar.gz: bd48522fff882387e0d66713801e8f263a8140f572cf1fc3fdb83ba7fcf682e1
3
+ metadata.gz: 1794aa20175c247580a192b55b7a35a3fe06beb53c34d43976db4f7956ed7d3d
4
+ data.tar.gz: c369d0bd11bfe758349901c32310ed74c73fec943d16d44ab44ebbdf4f8d8c27
5
5
  SHA512:
6
- metadata.gz: d545a880e5e673c37d78c37a6ebf31234bf9f1d68f002a3535cd623e8b49ff84e6b6e7b028367a6657e963fe9606cbe388d0d096389d5c5c76858a2203f286ae
7
- data.tar.gz: 762d37be0e30f250c140d7fd21d8a0f01a40810d06baa136fcd4f775bb607a17a37efdff433a6fc7a5dec4dfe925bfdf4305a86b95abee3951cd42a8c7b7cf63
6
+ metadata.gz: b97865250155b0797e319b697b47ee37d1e961118f112c61aa540dc4f459f7dde2d75b3042cafcb0b29a255a475dd28a878eabd2f1817cda502e65b7ca18c993
7
+ data.tar.gz: c7d05795219cde5f68ad0e33766d607a1ce90226a8d08715033555789a06ae3fe5d1c63764d90b8d4b83f5a6c7b207e4fd515e14d2e2a992d181e11bc2abf4a8
@@ -17,11 +17,20 @@ module Smartcloud
17
17
  end
18
18
 
19
19
  def pack_rails
20
- return unless bundle_install?
21
- return unless precompile_assets?
22
- return unless start_web_server?
20
+ if File.exist? "tmp/smartcloud/packed"
21
+ begin
22
+ pid = File.read('tmp/smartcloud/packed').to_i
23
+ Process.kill('QUIT', pid)
24
+ rescue Errno::ESRCH # No such process
25
+ end
26
+ exec "bundle", "exec", "puma", "--config", "config/puma.rb"
27
+ else
28
+ return unless bundle_install?
29
+ return unless precompile_assets?
30
+ return unless test_web_server?
23
31
 
24
- exit 0
32
+ exit 0
33
+ end
25
34
  end
26
35
 
27
36
  # Perform bundle install
@@ -64,17 +73,34 @@ module Smartcloud
64
73
  end
65
74
  end
66
75
 
67
- # Perform starting of web server
68
- def start_web_server?
69
- logger.debug "Starting Web Server ..."
70
-
71
- # Remove server.pid if it exists
72
- FileUtils.rm("tmp/pids/server.pid") if File.exist? "tmp/pids/server.pid"
73
-
74
- if system("bundle", "exec", "puma", "-C", "config/puma.rb", out: File::NULL)
75
- return true
76
+ # Perform testing of web server
77
+ def test_web_server?
78
+ logger.info "Setting up Web Server ..."
79
+
80
+ # tmp folder
81
+ FileUtils.mkdir_p("tmp/smartcloud")
82
+ FileUtils.rm_f("tmp/smartcloud/packed")
83
+
84
+ # Spawn Process
85
+ pid = Process.spawn("bundle", "exec", "puma", "--config", "config/puma.rb", out: File::NULL)
86
+ Process.detach(pid)
87
+
88
+ # Sleep
89
+ sleep 5
90
+
91
+ # Check PID running
92
+ status = nil
93
+ begin
94
+ Process.kill(0, pid)
95
+ system("echo '#{pid}' > tmp/smartcloud/packed")
96
+ status = true
97
+ rescue Errno::ESRCH # No such process
98
+ logger.info "Web Server could not start"
99
+ status = false
76
100
  end
77
- return false
101
+
102
+ # Return status
103
+ return status
78
104
  end
79
105
 
80
106
  def set_logger_formatter_arrow
@@ -24,7 +24,6 @@ WORKDIR "/app"
24
24
 
25
25
  # Gems
26
26
  RUN gem install smartcloud --pre && \
27
- gem install bundler && \
28
- gem install god
27
+ gem install bundler
29
28
 
30
29
  CMD ["buildpacker", "start"]
@@ -293,6 +293,7 @@ module Smartcloud
293
293
  # Setup rails env
294
294
  env_path = "#{container_path}/env"
295
295
  system("grep -q '^## Rails' #{env_path} || echo '## Rails' >> #{env_path}")
296
+ system("grep -q '^MALLOC_ARENA_MAX=' #{env_path} || echo '# MALLOC_ARENA_MAX=2' >> #{env_path}")
296
297
  system("grep -q '^RAILS_ENV=' #{env_path} || echo 'RAILS_ENV=production' >> #{env_path}")
297
298
  system("grep -q '^RACK_ENV=' #{env_path} || echo 'RACK_ENV=production' >> #{env_path}")
298
299
  system("grep -q '^RAILS_LOG_TO_STDOUT=' #{env_path} || echo 'RAILS_LOG_TO_STDOUT=enabled' >> #{env_path}")
@@ -307,20 +308,6 @@ module Smartcloud
307
308
  FileUtils.mkdir_p("#{container_path}/app/public")
308
309
  FileUtils.mkdir_p("#{container_path}/app/node_modules")
309
310
 
310
- # Setup Godfile
311
- unless File.exist? "#{container_path_with_version}/Godfile"
312
- logger.warn "Godfile not detected. Adding a default Godfile. It is recommended to add your own Godfile."
313
- page = <<~"HEREDOC"
314
- God.watch do |w|
315
- w.name = "web"
316
- w.start = "bundle exec puma -C config/puma.rb"
317
- w.behavior(:clean_pid_file)
318
- w.keepalive
319
- end
320
- HEREDOC
321
- system("echo '#{page}' > #{container_path_with_version}/Godfile")
322
- end
323
-
324
311
  # Creating & Starting container
325
312
  container_id = `docker ps -a -q --filter='name=^#{appname}_1$' --filter='status=running'`.chomp
326
313
  new_container = container_id.empty? ? "#{appname}_1" : "#{appname}_2"
@@ -330,13 +317,14 @@ module Smartcloud
330
317
  if system("docker create \
331
318
  --name='#{new_container}' \
332
319
  --env-file='#{container_path}/env' \
333
- --expose='5000' \
320
+ --expose='3000' \
334
321
  --volume='#{Smartcloud.config.user_home_path}/.smartcloud/config:#{Smartcloud.config.user_home_path}/.smartcloud/config' \
335
322
  --volume='#{container_path_with_version}:/app' \
336
323
  --volume='#{container_path}/app/vendor/bundle:/app/vendor/bundle' \
337
324
  --volume='#{container_path}/app/public:/app/public' \
338
325
  --volume='#{container_path}/app/node_modules:/app/node_modules' \
339
326
  --restart='always' \
327
+ --init \
340
328
  --network='nginx-network' \
341
329
  smartcloud/buildpacks/rails", out: File::NULL)
342
330
 
@@ -344,10 +332,15 @@ module Smartcloud
344
332
  system("docker network connect mysql-network #{new_container}")
345
333
 
346
334
  if system("docker start --attach #{new_container}")
347
- self.stop_app(old_container)
348
- self.clean_up(container_path)
349
- logger.info "Launched Application ... Success."
350
- exit 10
335
+ logger.debug "Starting Web Server ..."
336
+ if system("docker start #{new_container}")
337
+ sleep 5
338
+ puts "Web Server started successfully."
339
+ self.stop_app(old_container)
340
+ self.clean_up(container_path)
341
+ logger.info "Launched Application ... Success."
342
+ exit 10
343
+ end
351
344
  else
352
345
  self.stop_app("#{new_container}")
353
346
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: smartcloud
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0.beta4
4
+ version: 0.1.0.rc4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Timeboard
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-09-04 00:00:00.000000000 Z
11
+ date: 2019-09-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: net-ssh