heroku_whiz 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 5800f5f32cb8db97a0533705239764f93beda9e9f5bd05440d2e3a29c82e2b68
4
+ data.tar.gz: 6e3b4e3ff383822c3c6db9b62f4010f422e3a85cec747f70eba7f4d6e61885e1
5
+ SHA512:
6
+ metadata.gz: '049384d28472b0b534610be275db670e977509be3af49132907ad6f5b6825ea20ae9c13a1f8e6a88196d023e27e1456fccc418ac250f506d89e96e6f7580f507'
7
+ data.tar.gz: feef8ec4211b1e8e9d7a790a5ae06c35997b5fb62f2da53eec1d0eb91f68cbef49eee1e3914e8a21a251d22cb30a2e72f00483c4a7f4bbc8e43e217239737546
checksums.yaml.gz.sig ADDED
@@ -0,0 +1,2 @@
1
+ ��g�5�+ *Vd�6h��0�p����3f��_�r�A��kv����������pr�3"{Չ�T$����(;c�i.j�Eb��H�5�AJrhǰ�������ڻ&��no�_�9���* ��t��c�%V��[?t۶|`����p<��ĕ0��~U��Ý�I�es1���
2
+ ���Dl�w �C�9��o�?m��QA�����;�]E�F@����f�tcZ��z�K�P�7��8�?��_�FӲ\+w ��I��.ob�ܱѣ���e��-f�=��s�~�{����خ8߯-���c� -���oG�Ek��A�V�s�I��%��.Ir�Yw��eK�B��?#���#�4�5��6�C&�L�x5!۷��
@@ -0,0 +1,184 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ # file: heroku_whiz.rb
4
+
5
+ # created: 8th March 2022
6
+ # description: Handy (experimental) Heroku gem for noobs to create a
7
+ # simple Heroku app in a whiz!
8
+
9
+ # note: If this gem becomes outdated because of a change in the Heroku app
10
+ # setup process, please inform the owner of this project via *Issues*
11
+ # on GitHub (https://github.com/jrobertson/heroku_whiz).
12
+
13
+
14
+ require 'open-uri'
15
+ require 'fileutils'
16
+ require 'clipboard'
17
+
18
+
19
+ # Resources
20
+ #
21
+ # * [Deploying Rack-based Apps](https://devcenter.heroku.com/articles/rack#pure-rack-apps)
22
+
23
+
24
+ # Example usage:
25
+ #
26
+ # hw = HerokuWhiz.new dir: '/home/james/heroku', template: 'rack', appname: 'hello2', debug: true
27
+ #
28
+ # hw.wipe_clean # removes the previous local app file directory
29
+ # hw.create # creates the local app file directory
30
+ # #hw.local_run # runs the web app locally
31
+ # hw.local_testrun # tests the local web app returns the correct page
32
+ # hw.deploy # creates the new app on Heroku
33
+ # hw.app_url #=> e.g. https://frozen-dusk-65820.herokuapp.com/
34
+
35
+
36
+ class HerokuWhiz
37
+
38
+ def initialize(dir: '.', template: 'rack', appname: 'myapp',
39
+ verbose: true, debug: false)
40
+
41
+ @dir, @template, @appname, @verbose = dir, template, appname, verbose
42
+
43
+ @app_path = File.join(@dir, @appname)
44
+
45
+
46
+ end
47
+
48
+ def app_url()
49
+
50
+ app = `heroku config`.lines.first.split[1]
51
+ s = "https://#{app}.herokuapp.com/"
52
+
53
+ Clipboard.copy s
54
+ puts 'app URL copied to clipboard.'
55
+
56
+ return s
57
+
58
+ end
59
+
60
+ def create()
61
+
62
+ case @template.to_sym
63
+ when :rack
64
+ create_rack()
65
+ else
66
+ return puts 'template not recognised!'
67
+ end
68
+
69
+ # build
70
+ `bundle install`
71
+ sleep 1
72
+
73
+ end
74
+
75
+ def wipe_clean(setup=:local)
76
+
77
+ return unless File.exists? @app_path
78
+
79
+ # remove the app files
80
+ #
81
+ %w(Gemfile config.ru Gemfile.lock).each do |file|
82
+
83
+ puts 'removing file ' + file if @debug
84
+ rm File.join(@app_path, file)
85
+ sleep 0.5
86
+
87
+ end
88
+
89
+ rm_rf File.join(@app_path, '.git')
90
+ rmdir File.join(@app_path, '.git')
91
+ rmdir @app_path
92
+
93
+ return unless setup == :both
94
+
95
+ app = `heroku config`.lines.first.split[1]
96
+ `heroku apps:destroy --confirm #{app}`
97
+
98
+ end
99
+
100
+ def deploy()
101
+
102
+ `git init`
103
+ sleep 0.5
104
+
105
+ `git add .`
106
+ sleep 0.5
107
+
108
+ `git commit -m 'pure rack app'`
109
+ sleep 0.5
110
+
111
+ #`heroku create #{@appname}`
112
+
113
+ # the above statement was commented out because there's a
114
+ # high probability the appname you have chosen has already been taken
115
+ # e.g. hello2 => hello2.herokuapp.com
116
+
117
+ `heroku create`
118
+ sleep 2
119
+
120
+ r = `git push heroku master`
121
+
122
+ end
123
+
124
+ def local_run()
125
+ `bundle exec rackup -p 9292 config.ru &`
126
+ end
127
+
128
+ def local_testrun()
129
+
130
+ r = IO.popen( "bundle exec rackup -p 9292 config.ru" )
131
+ puts 'r: ' + r.inspect if @debug
132
+ sleep 2
133
+
134
+ s = URI.open('http://127.0.0.1:9292').read
135
+ sleep 1
136
+
137
+ Process.kill('QUIT', r.pid)
138
+
139
+
140
+ puts 'SUCCESS! Ready to deploy' if s == "Hello World!\n"
141
+
142
+ end
143
+
144
+ private
145
+
146
+ def create_rack()
147
+
148
+ FileUtils.mkdir_p @app_path
149
+ FileUtils.chdir @app_path
150
+
151
+ # write the config.ru file
152
+ #
153
+ config = %q(
154
+ run lambda do |env|
155
+ [200, {'Content-Type'=>'text/plain'}, StringIO.new("Hello World!\n")]
156
+ end)
157
+ File.write File.join(@app_path, 'config.ru'), config
158
+
159
+ # write the Gemfile
160
+ #
161
+ gemfile = %q(
162
+ source 'https://rubygems.org'
163
+ gem 'rack'
164
+ gem 'puma'
165
+ )
166
+ File.write File.join(@app_path, 'Gemfile'), gemfile
167
+ sleep 0.5
168
+
169
+ end
170
+
171
+ def rm(file)
172
+ FileUtils.rm file if File.exists? file
173
+ end
174
+
175
+ def rm_rf(file)
176
+ FileUtils.rm_rf file if File.exists? file
177
+ end
178
+
179
+ def rmdir(file)
180
+ FileUtils.rmdir file if File.exists? file
181
+ end
182
+
183
+ end
184
+
data.tar.gz.sig ADDED
Binary file
metadata ADDED
@@ -0,0 +1,91 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: heroku_whiz
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - James Robertson
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain:
11
+ - |
12
+ -----BEGIN CERTIFICATE-----
13
+ MIIEXjCCAsagAwIBAgIBATANBgkqhkiG9w0BAQsFADAsMSowKAYDVQQDDCFnZW1t
14
+ YXN0ZXIvREM9amFtZXNyb2JlcnRzb24vREM9ZXUwHhcNMjIwMzA4MTk1NzM4WhcN
15
+ MjMwMzA4MTk1NzM4WjAsMSowKAYDVQQDDCFnZW1tYXN0ZXIvREM9amFtZXNyb2Jl
16
+ cnRzb24vREM9ZXUwggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQDIXmoN
17
+ nJ9L8ZoIT/ZvxHs1M52kxfArnddz64ZS0k8HzaWfgUT3rWLis4b/RJDvsb1uxMis
18
+ Wkeg1V5K0H/g5mvKyrVT8d+rmGzTEM08eC+PymxyZ4TcN1UAVz2s1PJUrAW0Qeku
19
+ vno1JbszRuhLFwQXxSp1bRbdsfx80PrklP9WPFHh2iR/F6NTlQ+SAIirfCfDhMki
20
+ mrunqADCvnAKnsuKiEnnjDua24nmsCdcTJHZ8TdLXqqJXGY5Iyyc5COVaj8SLYgJ
21
+ XkZFCHwcNQkKn94QSTERVRU6cnK/ZfSWAao+IDkQhZVLHMYTHTLvVJ5DXEAFdrjL
22
+ FT4wNJhdHVVIcyjoPyGQk/xHxWtJsdF67TKJ52vaDPoPxuBFPZuLii+s5oXWuL5D
23
+ B8NTOauLDyjcxKpxYGE2bneTck7DsWsTne0zRASfXbMryOpCGPdimeSHPSN4rrTn
24
+ G35h1O+yBvC0XUoZOEBLPmlGQmyFvpC/OJ9FomWTpUxC7znOyiap19Lw97MCAwEA
25
+ AaOBijCBhzAJBgNVHRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNVHQ4EFgQUUBL6U84l
26
+ 5lJD+C8Wcktyhr2496owJgYDVR0RBB8wHYEbZ2VtbWFzdGVyQGphbWVzcm9iZXJ0
27
+ c29uLmV1MCYGA1UdEgQfMB2BG2dlbW1hc3RlckBqYW1lc3JvYmVydHNvbi5ldTAN
28
+ BgkqhkiG9w0BAQsFAAOCAYEAGKCIZf7JdlUrF7FEaPSpXjJhnx1a2ycmtVM1cj5O
29
+ TI16sjKyBkrMjtufJ/D5uf5SvAjOznr0LKZZIdkmRBciAzj53zCDM6lNbWc1WR/k
30
+ QAYBzE15bELAd1odOnYa0H1vhRkeRpsPZKDVai66d1+rlVFOCygDoWPVEPkjlY3X
31
+ wX6OpHH0h0PnNBJgc6vztzxXhafYfFcrti+KPmXCl0yNl7f3lrJm5j2rFNKFAGpK
32
+ xLDt4NtIIgydn7uADv30WdE3eAlWbBiSndaPS786B9m95xLr9g+A+jNCKsYOOTfq
33
+ HwyJjXghKUSwQhLtXoMkXFZpn9sYgA8uyyxfk8gOS4d10aqVkkGxsEvM8oierBnc
34
+ ZwoeMRnUgam0t4/OfCefewn2lcvIEQ7qXRqrZ8KuTQoIO7gT5e6DrVzaGt/1+egO
35
+ n5lICiaMyvvvMKfV1rE1Pz0tCPqOu++rZFRC9XbrR+Vio0ha4mHPPAUsvY2f9DtE
36
+ ZOz9jhKlb8t2o3xNUKH/e3WN
37
+ -----END CERTIFICATE-----
38
+ date: 2022-03-08 00:00:00.000000000 Z
39
+ dependencies:
40
+ - !ruby/object:Gem::Dependency
41
+ name: clipboard
42
+ requirement: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - "~>"
45
+ - !ruby/object:Gem::Version
46
+ version: '1.3'
47
+ - - ">="
48
+ - !ruby/object:Gem::Version
49
+ version: 1.3.6
50
+ type: :runtime
51
+ prerelease: false
52
+ version_requirements: !ruby/object:Gem::Requirement
53
+ requirements:
54
+ - - "~>"
55
+ - !ruby/object:Gem::Version
56
+ version: '1.3'
57
+ - - ">="
58
+ - !ruby/object:Gem::Version
59
+ version: 1.3.6
60
+ description:
61
+ email: digital.robertson@gmail.com
62
+ executables: []
63
+ extensions: []
64
+ extra_rdoc_files: []
65
+ files:
66
+ - lib/heroku_whiz.rb
67
+ homepage: https://github.com/jrobertson/heroku_whiz
68
+ licenses:
69
+ - MIT
70
+ metadata: {}
71
+ post_install_message:
72
+ rdoc_options: []
73
+ require_paths:
74
+ - lib
75
+ required_ruby_version: !ruby/object:Gem::Requirement
76
+ requirements:
77
+ - - ">="
78
+ - !ruby/object:Gem::Version
79
+ version: '0'
80
+ required_rubygems_version: !ruby/object:Gem::Requirement
81
+ requirements:
82
+ - - ">="
83
+ - !ruby/object:Gem::Version
84
+ version: '0'
85
+ requirements: []
86
+ rubygems_version: 3.2.22
87
+ signing_key:
88
+ specification_version: 4
89
+ summary: Handy (experimental) Heroku gem for noobs to create a simple Heroku app in
90
+ a whiz!
91
+ test_files: []
metadata.gz.sig ADDED
@@ -0,0 +1 @@
1
+ 9��a��}�<�'c~GU�_�scb�K��_ �'���2���'(�~C�N@u �\z���ھঢ���,�0�q�R^�����HިIM ���ׇU�2Ob ������8��3�+XЦf�e�!៼��T���j�c�����P��l�)��4Z1)E����פ�ɼy8�s�O���{3%hf�qg����g�gu