pvcglue 0.9.1 → 0.9.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: 212d9eddb6cf1cf3c75a20d6b7aa913f1bc68d6b
4
- data.tar.gz: 5d74759df153a45c751d3d5cf64e0d6f1ea414a8
3
+ metadata.gz: bdc792eaea2d67f856dd33bf0823c6b46b984c0e
4
+ data.tar.gz: db46f4572b3151204063f5d9d7f30577c8cc7ed8
5
5
  SHA512:
6
- metadata.gz: 6c6ce7454bf80150ac10a315314c2efdd03285a29395f1cc9c5e4523d302e26fbabc189b3519d536e754bf8e8a2b85e022dc4c98ae7191d00f28a5b8228deb0f
7
- data.tar.gz: eea27fbb1d3edd84b2b4e6a566cdaa118108e82917713cc9b6c0704c734856e633fbe4d6d93d36f68475c5e4de27ee06421518f1a28dedf5babe45a57ed811c9
6
+ metadata.gz: 280cb61ab704549c9d4b981836046afa591ce7edcbd4ba9c40a4ee0fa7c57f999dd2b60b4a4032fed59d37d1d8a5d94ed0919ea7602a958fa82ba750b2214683
7
+ data.tar.gz: dc5f5edf764add9e331fd25aa4bf696c0d03d417062645e79fb887abe1bc7423c9159d4926ebee784d4ed479689d813d5168ed998e8ff07e15497b0650f879bf
data/README.md CHANGED
@@ -1,14 +1,10 @@
1
- ###
2
- There is an issue with gem 'tilt', '>=2.0.0', use
3
-
4
- gem 'tilt', '<2.0.0'
5
-
6
- in your project's Gemfile, as a temporary workaournd.
7
1
  # PVC Glue
2
+ ###Pico Virtual Cloud
3
+ The "glue" that creates a tightly integrated (and very small) virtual cloud for your Rails applications.
8
4
 
9
- Pico Virtual Cloud Glue creates a tightly integrated (very small) virtual cloud for your Rails application.
5
+ PVC Glue is an cloud application manager for Rails applications using your own (virtual) servers.
10
6
 
11
- An opinionated cloud application manager for Rails applications using your own servers.
7
+ PVC Glue was developed as a professional grade replacement for Heroku (and others).
12
8
 
13
9
  ![pvcglue diagram](/../master/images/pvcglue.png?raw=true "PVC Glue Server Diagram")
14
10
 
@@ -16,25 +12,36 @@ Currently supported stack:
16
12
 
17
13
  * SSL support: none, manual and automatic with Let's Encrypt
18
14
  * Ubuntu 16.04 LTS
19
- * Provision servers automatically on Digital Ocean (and Linode)
15
+ * Provision servers automatically on Digital Ocean (and Linode*)
20
16
  * No need to install anything on servers first (you just need SSH access)
21
- * Ruby >= 1.9 (multiple versions supported on same server)
17
+ * Ruby >= 1.9 (multiple versions supported on same server!)
22
18
  * Rails >= 3.2
23
19
  * RVM
24
20
  * Postgresql 9.6
25
21
  * Nginx
26
- * Passenger > 5.0
27
- * Memcached
28
- * Redis
22
+ * Phusion Passenger (>= 5.x)
23
+ * Memcached*
24
+ * Redis*
25
+ * Designed to easily support multiple staging environments
29
26
 
30
27
  Workers:
31
28
 
32
- * Delayed Job
33
- * Rescue
29
+ * Delayed Job*
30
+ * Rescue*
31
+
32
+ (* Coming soon)
33
+
34
+ # Quick Start
35
+
36
+ ##New developer starting to working a application with PVC Glue already set up
37
+
38
+ For each development machine used, the "manager" must be configured once.
39
+
40
+ pvc manager configure
34
41
 
35
42
  # This is a work in progress
36
43
 
37
- Although this project is being used on productions sites, this should be considered "Alpha" code, as things my change without notice until version 1.0. :)
44
+ Although this project is being used on productions sites, this should be considered "Beta" code, as things my change without notice until version 1.0. :)
38
45
 
39
46
  # First Time Set Up for Existing Project
40
47
 
@@ -170,12 +177,12 @@ https://github.com/radar/guides/blob/master/gem-development.md#releasing-the-gem
170
177
  Add these lines to your application's Gemfile. `dotenv-rails` must be listed first!
171
178
 
172
179
  ################# Must be the first Gem ###################
173
- gem 'dotenv-rails', "0.11.1"
180
+ gem 'dotenv-rails'
174
181
  ################# Must be the first Gem ###################
175
182
 
176
- Then add these lines to your application's Gemfile, whereever you like (usually at the end):
183
+ Then add these lines to your application's Gemfile, wherever you like (usually at the end):
177
184
 
178
- gem 'pvcglue', "~> 0.1.18", :group => :development
185
+ gem 'pvcglue', "~> 0.9.2", :group => :development
179
186
  gem 'pvcglue_dbutils', "~> 0.5.3"
180
187
 
181
188
  And then execute:
data/bin/pvc CHANGED
@@ -5,12 +5,36 @@ require 'benchmark'
5
5
  # Allow use of Capistrano style environment syntax and convert to 'standard' syntax
6
6
  # Example: `pvc production bootstrap` ==> `pvc bootstrap --stage=production`
7
7
  # TODO: refactor to use a list of user specified environments
8
- if ARGV.count >= 2 && %w[local vmtest test alpha beta gamma delta preview production staging all].include?(ARGV[0])
9
- ARGV[0], ARGV[1] = ARGV[1], "--stage=#{ARGV[0]}"
10
- end
11
8
 
12
9
  Pvcglue.logger.info('Starting up...')
13
- Pvcglue.logger.debug { ARGV.inspect }
14
- # puts Benchmark.measure { Pvcglue::CLI.start }
15
- # pvc_puts.warn("----- Done #{Benchmark.measure { Pvcglue::CLI.start }}")
16
- Pvcglue.logger.info("----- Done #{Benchmark.measure { Pvcglue::CLI.start }}")
10
+ # Pvcglue.logger.info("----- Done #{Benchmark.measure { Pvcglue::CLI.start }}")
11
+ # ap Pvcglue.instance_variables
12
+ def capistrano_style_environment
13
+ Pvcglue.logger.debug { ARGV.inspect }
14
+ if ARGV.count >= 2
15
+ if %w[local vmtest test alpha beta gamma delta preview production staging].include?(ARGV[0])
16
+ ARGV[0], ARGV[1] = ARGV[1], "--stage=#{ARGV[0]}"
17
+ Pvcglue.logger.debug { ARGV.inspect }
18
+ Pvcglue::CLI.start
19
+ elsif ARGV[0] == 'all'
20
+ Pvcglue.logger.error('Not supported, yet. :(')
21
+ elsif ARGV[0].include?(',')
22
+ stages = ARGV[0].split(',')
23
+ original_argv_1 = ARGV[1]
24
+ stages.each do |stage|
25
+ # puts "********** Stage: #{stage} **********"
26
+ ARGV[0] = stage
27
+ Pvcglue.logger.debug { ARGV.inspect }
28
+ # Pvcglue.reset!
29
+ puts `pvc #{ARGV.join(' ')}`
30
+ # Pvcglue::CLI.start
31
+ end
32
+ else
33
+ Pvcglue::CLI.start
34
+ end
35
+ end
36
+ end
37
+
38
+ Pvcglue.logger.info("----- Done #{Benchmark.measure { capistrano_style_environment }}")
39
+
40
+
@@ -33,6 +33,44 @@ require 'pry'
33
33
  # pvc manager bootstrap --cloud_manager_override=local_cloud.pvcglue.toml --save_before_upload=save --verbose
34
34
 
35
35
  module Pvcglue
36
+ # def self.reset!
37
+ # ap Pvcglue.instance_variables
38
+ # ap Pvcglue.class_variables
39
+ #
40
+ # raise("Now working!")
41
+ # Pvcglue.constants.select { |c| Pvcglue.const_get(c).is_a? Class }.each do |pvc_class|
42
+ # pvc_class.instance_variables.each do |var|
43
+ # pvc_class.remove_instance_variable(var)
44
+ # end
45
+ #
46
+ # if pvc_class.respond_to?(:class_variables)
47
+ # pvc_class.class_variables.each do |var|
48
+ # pvc_class.remove_class_variable(var)
49
+ # end
50
+ # end
51
+ # end
52
+ #
53
+ # Pvcglue::Packages.constants.select { |c| Pvcglue::Packages.const_get(c).is_a? Class }.each do |pvc_class|
54
+ # pvc_class.instance_variables.each do |var|
55
+ # pvc_class.remove_instance_variable(var)
56
+ # end
57
+ # if pvc_class.respond_to?(:class_variables)
58
+ # pvc_class.class_variables.each do |var|
59
+ # pvc_class.remove_class_variable(var)
60
+ # end
61
+ # end
62
+ # end
63
+ #
64
+ # self.instance_variables.each do |var|
65
+ # # ap var.inspect
66
+ # # ap self.instance_variable_get(var)
67
+ # # self.instance_variable_set var, nil
68
+ # self.remove_instance_variable(var)
69
+ # # ap self.instance_variable_get(var)
70
+ #
71
+ # end
72
+ # end
73
+
36
74
  mattr_accessor :command_line_options do
37
75
  {}
38
76
  end
@@ -41,14 +79,14 @@ module Pvcglue
41
79
 
42
80
  logger = Logger.new(STDOUT)
43
81
  # DEBUG < INFO < WARN < ERROR < FATAL < UNKNOWN
44
- if ARGV.detect {|arg| arg.downcase == '--debug' || arg.downcase == '--verbose'}
45
- logger.level = Logger::DEBUG
82
+ if ARGV.detect { |arg| arg.downcase == '--debug' || arg.downcase == '--verbose' }
83
+ logger.level = Logger::DEBUG
46
84
  elsif ARGV.detect { |arg| arg.downcase == '--quiet' }
47
- logger.level = Logger::WARN
85
+ logger.level = Logger::WARN
48
86
  elsif ARGV.detect { |arg| arg.downcase == '--info' }
49
- logger.level = Logger::INFO
87
+ logger.level = Logger::INFO
50
88
  else
51
- logger.level = Logger::INFO
89
+ logger.level = Logger::INFO
52
90
  end
53
91
 
54
92
  logger.formatter = proc do |severity, datetime, progname, msg|
@@ -1,3 +1,4 @@
1
+ # TODO: Remove these requirements, is possible.
1
2
  require "active_support"
2
3
  require "active_support/core_ext" # for `with_indifferent_access`
3
4
 
@@ -13,6 +14,8 @@ module Pvcglue
13
14
  attr_accessor :port_in_node_context
14
15
  # attr_accessor :stage_secrets
15
16
 
17
+
18
+
16
19
  def data
17
20
  ::Pvcglue::Manager.initialize_cloud_data unless @data
18
21
  @data
@@ -332,6 +335,11 @@ module Pvcglue
332
335
  project[:gems] || {}
333
336
  end
334
337
 
338
+ def whenever_gem_installed?
339
+ data = File.read(Pvcglue.configuration.gemfile_file_name)
340
+ data =~ /^\s*gem\s+['"]whenever['"]/
341
+ end
342
+
335
343
  def db_rebuild
336
344
  !!stage[:db_rebuild]
337
345
  end
@@ -122,6 +122,7 @@ module Pvcglue
122
122
  end
123
123
 
124
124
  def find_app_name
125
+ # TODO: Just use something like `rails runner 'Rails.application.class.parent'` and then cache it to a temporary file
125
126
  # try known files...anyone know a better way, without loading Rails?
126
127
  rack_up = File.join(application_dir, 'config.ru')
127
128
  app_name = underscore($1) if File.exists?(rack_up) && File.read(rack_up) =~ /^run (.*)::/
@@ -168,6 +169,10 @@ module Pvcglue
168
169
  File.join(application_dir, '.ruby-version')
169
170
  end
170
171
 
172
+ def gemfile_file_name
173
+ File.join(application_dir, 'Gemfile')
174
+ end
175
+
171
176
  def ruby_version
172
177
  File.read(ruby_version_file_name).strip
173
178
  end
@@ -16,7 +16,8 @@ require 'capistrano/rails/assets'
16
16
  <% end %>
17
17
 
18
18
  require 'capistrano/rails/migrations'
19
- <% if Pvcglue.cloud.gems[:whenever] %>
19
+
20
+ <% if Pvcglue.cloud.whenever_gem_installed? %>
20
21
  set :whenever_identifier, ->{ "#{fetch(:application)}_#{fetch(:stage)}" }
21
22
  require 'whenever/capistrano'
22
23
  <% end %>
@@ -2,7 +2,6 @@
2
2
 
3
3
  set :application, '<%= Pvcglue.configuration.application_name %>'
4
4
  set :repo_url, '<%= Pvcglue.cloud.repo_url %>'
5
- set :tmp_dir, '/tmp/<%= Pvcglue.cloud.app_and_stage_name %>'
6
5
 
7
6
  set :branch, proc { `git rev-parse --abbrev-ref HEAD`.chomp }
8
7
 
@@ -1,5 +1,6 @@
1
1
  # This is a generated file. Do not modify...or else! :)
2
2
 
3
+ set :tmp_dir, '/tmp/ <%= Pvcglue.cloud.app_and_stage_name %> '
3
4
  set :stage, :<%= Pvcglue.cloud.stage_name %>
4
5
  set :rails_env, :<%= Pvcglue.cloud.stage_name %> # workaround for RAILS_ENV= being blank in delayed job tasks
5
6
  set :deploy_to, '<%= Pvcglue.cloud.deploy_to_app_dir %>'
@@ -1,3 +1,3 @@
1
1
  module Pvcglue
2
- VERSION = '0.9.1'
2
+ VERSION = '0.9.2'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pvcglue
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.1
4
+ version: 0.9.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - T. Andrew Lyric
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-02-22 00:00:00.000000000 Z
11
+ date: 2017-02-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler