qrcode_pix_ruby 0.4.0 → 0.5.1
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 +4 -4
- data/.github/mergeable.yml +27 -0
- data/.github/workflows/ci.yml +4 -1
- data/.rubocop.yml +1 -1
- data/CHANGELOG.md +13 -0
- data/Dockerfile +1 -2
- data/README.md +55 -24
- data/Rakefile +2 -2
- data/demo/Dockerfile +7 -0
- data/demo/Gemfile +1 -0
- data/demo/config.ru +57 -45
- data/lib/qrcode_pix_ruby/payload.rb +22 -12
- data/lib/qrcode_pix_ruby/version.rb +1 -1
- data/lib/qrcode_pix_ruby.rb +1 -2
- metadata +5 -4
- data/.github/workflows/heroku.yml +0 -50
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 43111a8d138179416cd393edf5b747f3f7a171a4668a9130192b7f295b9b67b9
|
4
|
+
data.tar.gz: 2c55f8ac2b7e52eb0faec98bdf56b64cf9081137de9341fb6afaa8da7ad653f0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e1b002697b5de3cf6c688a29d06f8df6d90b2cc32502bdcb6409e7b177debe190321c48227175506255076e539337513b1526a870de12b9938ca982e4fda7c05
|
7
|
+
data.tar.gz: eb34d9eff0e6c22f9108fd00bf5ef5afaf8758815251e40c73331ef7caf5e50721e8cfb56d1ecbe2a48174868f4da0764b2987bc70477cbbd977e34f4e067e44
|
@@ -0,0 +1,27 @@
|
|
1
|
+
version: 2
|
2
|
+
mergeable:
|
3
|
+
- when: pull_request.opened
|
4
|
+
validate: []
|
5
|
+
pass:
|
6
|
+
- do: comment
|
7
|
+
payload:
|
8
|
+
body: Thanks for creating a pull request! A maintainer will review your changes shortly.
|
9
|
+
- when: pull_request.*
|
10
|
+
validate:
|
11
|
+
- do: description
|
12
|
+
no_empty:
|
13
|
+
enabled: true
|
14
|
+
message: Please, provide for us an awesome description to your PR 🤝
|
15
|
+
- do: dependent
|
16
|
+
changed:
|
17
|
+
file: '*'
|
18
|
+
required: ['CHANGELOG.md']
|
19
|
+
- when: schedule.repository
|
20
|
+
validate:
|
21
|
+
- do: stale
|
22
|
+
days: 3
|
23
|
+
type: pull_request, issues
|
24
|
+
pass:
|
25
|
+
- do: comment
|
26
|
+
payload:
|
27
|
+
body: It looks old 🕰️
|
data/.github/workflows/ci.yml
CHANGED
@@ -18,7 +18,7 @@ jobs:
|
|
18
18
|
runs-on: ubuntu-latest
|
19
19
|
strategy:
|
20
20
|
matrix:
|
21
|
-
ruby-version: [2.
|
21
|
+
ruby-version: [2.6, 2.7, 3.0]
|
22
22
|
env:
|
23
23
|
CODECOV_TOKEN: ${{secrets.CODECOV_TOKEN}}
|
24
24
|
steps:
|
@@ -29,6 +29,9 @@ jobs:
|
|
29
29
|
with:
|
30
30
|
ruby-version: ${{ matrix.ruby-version }}
|
31
31
|
|
32
|
+
- name: Update rubygems
|
33
|
+
run: gem update --system
|
34
|
+
|
32
35
|
- name: Install dependencies
|
33
36
|
run: bundle install
|
34
37
|
|
data/.rubocop.yml
CHANGED
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,18 @@
|
|
1
1
|
## [Unreleased]
|
2
2
|
|
3
|
+
- ...
|
4
|
+
|
5
|
+
## [0.6.0]- 2023-04-14
|
6
|
+
|
7
|
+
- Fixed CI
|
8
|
+
- Fixed CRC16 algorithm with rjust with 4 digits
|
9
|
+
|
10
|
+
## [0.5.0] - 2021-07-13
|
11
|
+
|
12
|
+
- Add option to pass Pix informations directly in initializer
|
13
|
+
- CI speedup
|
14
|
+
- Specs reorganization
|
15
|
+
|
3
16
|
## [0.4.0] - 2021-07-10
|
4
17
|
|
5
18
|
- Add URL option for PIX, in order to generate dynamic QR Codes
|
data/Dockerfile
CHANGED
data/README.md
CHANGED
@@ -31,27 +31,45 @@ Or install it yourself as:
|
|
31
31
|
|
32
32
|
## Usage (examples)
|
33
33
|
|
34
|
+
### Available parameters
|
35
|
+
|
36
|
+
- pix_key/url
|
37
|
+
- repeatable
|
38
|
+
- currency
|
39
|
+
- country_code
|
40
|
+
- description
|
41
|
+
- postal_code
|
42
|
+
- merchant_name
|
43
|
+
- merchant_city
|
44
|
+
- transaction_id
|
45
|
+
- amount
|
46
|
+
|
34
47
|
### Static QR Code
|
35
48
|
|
36
49
|
```ruby
|
37
50
|
require 'qrcode_pix_ruby'
|
38
51
|
|
39
|
-
pix
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
52
|
+
pix = QrcodePixRuby::Payload.new(
|
53
|
+
pix_key: 'minhachavedopix',
|
54
|
+
description: 'Pagamento do pedido 123456',
|
55
|
+
merchant_name: 'Fulano de Tal',
|
56
|
+
merchant_city: 'SAO PAULO',
|
57
|
+
transaction_id: 'TID12345',
|
58
|
+
amount: '100.00',
|
59
|
+
currency: '986',
|
60
|
+
country_code: 'BR',
|
61
|
+
postal_code: '01131010',
|
62
|
+
repeatable: false
|
63
|
+
)
|
64
|
+
|
65
|
+
# If needed, change the attributes value later
|
66
|
+
pix.pix_key = 'minhaoutrachavepix'
|
67
|
+
pix.merchant_city = 'BRASILIA'
|
50
68
|
|
51
69
|
# QRCode copia-e-cola
|
52
70
|
puts pix.payload
|
53
71
|
|
54
|
-
# QRCode
|
72
|
+
# QRCode for images
|
55
73
|
puts pix.base64
|
56
74
|
```
|
57
75
|
|
@@ -60,13 +78,18 @@ puts pix.base64
|
|
60
78
|
```ruby
|
61
79
|
require 'qrcode_pix_ruby'
|
62
80
|
|
63
|
-
pix
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
81
|
+
pix = QrcodePixRuby::Payload.new(
|
82
|
+
url: 'https://example.com',
|
83
|
+
merchant_name: 'Fulano de Tal',
|
84
|
+
merchant_city: 'SAO PAULO',
|
85
|
+
amount: '100.00',
|
86
|
+
transaction_id: 'TID12345',
|
87
|
+
repeatable: false
|
88
|
+
)
|
89
|
+
|
90
|
+
# If needed, change the attributes value later
|
91
|
+
pix.url = 'https://another-example.com'
|
92
|
+
pix.amount = 1.50
|
70
93
|
|
71
94
|
# QRCode copia-e-cola
|
72
95
|
puts pix.payload
|
@@ -77,7 +100,7 @@ puts pix.base64
|
|
77
100
|
|
78
101
|
🚨 Important note: BACEN (Banco Central do Brasil) sets a variety of rules for each field in QRCode Payload (maximum number of characters, invalid values, mandatory and optional fields, and so on). So, pay attention that a QRCode payload+base64 generated by the gem can be valid, theorically, but may not be accepted in banking apps because of these restrictions (that are out of scope of gem).
|
79
102
|
|
80
|
-
## Execute tests/specs
|
103
|
+
## Execute tests/specs locally
|
81
104
|
|
82
105
|
To execute gem tests locally, use Docker with the commands below:
|
83
106
|
|
@@ -92,13 +115,18 @@ docker build -t qrcode_pix_ruby_specs .
|
|
92
115
|
docker run -v $(pwd):/app/ -it qrcode_pix_ruby_specs
|
93
116
|
```
|
94
117
|
|
95
|
-
##
|
118
|
+
## Execute demo locally
|
96
119
|
|
97
|
-
|
120
|
+
To execute demo locally, use Docker with the commands below:
|
98
121
|
|
99
|
-
|
122
|
+
```bash
|
123
|
+
git clone https://github.com/pedrofurtado/qrcode_pix_ruby
|
124
|
+
cd qrcode_pix_ruby/demo/
|
125
|
+
docker build -t qrcode_pix_ruby_demo .
|
100
126
|
|
101
|
-
|
127
|
+
# Then, access http://localhost:3000 the see demo in action.
|
128
|
+
docker run -p 3000:3000 -it qrcode_pix_ruby_demo
|
129
|
+
```
|
102
130
|
|
103
131
|
## Useful links
|
104
132
|
|
@@ -125,6 +153,9 @@ https://qrcode-pix-ruby.herokuapp.com
|
|
125
153
|
* https://github.com/EnssureIT/faz-um-pix
|
126
154
|
* https://github.com/jesobreira/pixkey
|
127
155
|
* https://github.com/pedrinholemes/pix-br
|
156
|
+
* https://github.com/ceciliadeveza/gerarqrcodepix
|
157
|
+
* https://www.bcb.gov.br/content/estabilidadefinanceira/SiteAssets/Manual%20do%20BR%20Code.pdf
|
158
|
+
* https://www.bcb.gov.br/content/estabilidadefinanceira/spb_docs/ManualBRCode.pdf
|
128
159
|
|
129
160
|
## Contributing
|
130
161
|
|
data/Rakefile
CHANGED
data/demo/Dockerfile
ADDED
data/demo/Gemfile
CHANGED
data/demo/config.ru
CHANGED
@@ -4,22 +4,15 @@ require 'qrcode_pix_ruby'
|
|
4
4
|
|
5
5
|
def generate_html_with(env)
|
6
6
|
qrcode_data = Rack::Request.new(env).params
|
7
|
-
payload
|
8
|
-
data_uri
|
9
|
-
pix
|
7
|
+
payload = ''
|
8
|
+
data_uri = ''
|
9
|
+
pix = QrcodePixRuby::Payload.new
|
10
10
|
|
11
11
|
unless qrcode_data.empty?
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
pix.merchant_city = qrcode_data['merchant_city'] unless qrcode_data['merchant_city'].nil?
|
17
|
-
pix.transaction_id = qrcode_data['transaction_id'] unless qrcode_data['transaction_id'].nil?
|
18
|
-
pix.amount = qrcode_data['amount'] unless qrcode_data['amount'].nil?
|
19
|
-
pix.currency = qrcode_data['currency'] unless qrcode_data['currency'].nil?
|
20
|
-
pix.country_code = qrcode_data['country_code'] unless qrcode_data['country_code'].nil?
|
21
|
-
pix.postal_code = qrcode_data['postal_code'] unless qrcode_data['postal_code'].nil?
|
22
|
-
pix.repeatable = qrcode_data['repeatable'] == 't' unless qrcode_data['repeatable'].nil?
|
12
|
+
qrcode_data.keys.each do |key|
|
13
|
+
v = qrcode_data[key]
|
14
|
+
pix.public_send("#{key}=", key == 'repeatable' ? v == 't' : v) unless v.empty? || v.nil?
|
15
|
+
end
|
23
16
|
|
24
17
|
payload = <<-HTML
|
25
18
|
<label for='payload'>Payload</label>
|
@@ -29,7 +22,7 @@ def generate_html_with(env)
|
|
29
22
|
</div>
|
30
23
|
HTML
|
31
24
|
|
32
|
-
data_uri = "<img style='max-width: 100%;' src='#{pix.base64}'>"
|
25
|
+
data_uri = "<img style='max-width: 100%; display: block; margin: 0 auto;' src='#{pix.base64}'>"
|
33
26
|
end
|
34
27
|
|
35
28
|
StringIO.new <<-HTML
|
@@ -61,60 +54,81 @@ def generate_html_with(env)
|
|
61
54
|
<strong>QRCode informations</strong>
|
62
55
|
<br>
|
63
56
|
<br>
|
64
|
-
<form action='
|
57
|
+
<form action='/' method='post'>
|
65
58
|
<div class='mb-3'>
|
66
|
-
<
|
59
|
+
<div class='form-text'>
|
60
|
+
For static Pix, please fill the 'Pix key' field.<br>
|
61
|
+
For dynamic Pix, fill the 'URL' field.<br>
|
62
|
+
Do not fill both fields.
|
63
|
+
</div>
|
64
|
+
</div>
|
65
|
+
<div class='mb-3'>
|
66
|
+
<label for='pix_key'>* Pix key</label>
|
67
67
|
<input type='text' class='form-control' id='pix_key' value='#{qrcode_data["pix_key"]}' name='pix_key'>
|
68
|
+
<div class='form-text'>
|
69
|
+
Formats of Pix keys:<br>
|
70
|
+
CPF: 12345678910 (only numbers)<br>
|
71
|
+
Phone: +5511912345678 (+55 + DDD + phone, only numbers)<br>
|
72
|
+
Email: example@mail.com<br>
|
73
|
+
Random: a6hf7jdk3nc8iK (generated by bank)
|
74
|
+
</div>
|
68
75
|
</div>
|
76
|
+
<div class='mb-3 text-center'> or</div>
|
69
77
|
<div class='mb-3'>
|
70
|
-
<label for='url'
|
71
|
-
<input type='
|
78
|
+
<label for='url'>* URL</label>
|
79
|
+
<input type='url' pattern='https?:\/\/.+' class='form-control' id='url' value='#{qrcode_data["url"]}' name='url'>
|
72
80
|
</div>
|
81
|
+
<hr>
|
73
82
|
<div class='mb-3'>
|
74
|
-
<label for='
|
75
|
-
<input required type='text' class='form-control' id='
|
83
|
+
<label for='merchant_name'>* Merchant name</label>
|
84
|
+
<input required maxlength='10' type='text' class='form-control' id='merchant_name' value='#{qrcode_data["merchant_name"]}' name='merchant_name'>
|
76
85
|
</div>
|
77
86
|
<div class='mb-3'>
|
78
|
-
<label for='
|
79
|
-
<input required type='text' class='form-control' id='
|
87
|
+
<label for='merchant_city'>* Merchant city</label>
|
88
|
+
<input required maxlength='10' type='text' class='form-control' id='merchant_city' value='#{qrcode_data["merchant_city"]}' name='merchant_city'>
|
80
89
|
</div>
|
81
90
|
<div class='mb-3'>
|
82
|
-
<label for='
|
83
|
-
<
|
91
|
+
<label for='country_code'>* Country</label>
|
92
|
+
<select required id='country_code' name='country_code' class='form-select'>
|
93
|
+
<option></option>
|
94
|
+
<option value='BR' #{qrcode_data['country_code'] == 'BR' ? 'selected' : ''}>Brazil</option>
|
95
|
+
</select>
|
84
96
|
</div>
|
85
97
|
<div class='mb-3'>
|
86
|
-
<label for='
|
87
|
-
<
|
98
|
+
<label for='currency'>* Currency</label>
|
99
|
+
<select required id='currency' name='currency' class='form-select'>
|
100
|
+
<option></option>
|
101
|
+
<option value='986' #{qrcode_data['currency'] == '986' ? 'selected' : ''}>Brazilian Real (R$)</option>
|
102
|
+
</select>
|
88
103
|
</div>
|
89
104
|
<div class='mb-3'>
|
90
|
-
<label for='
|
91
|
-
<input
|
105
|
+
<label for='description'>Description</label>
|
106
|
+
<input maxlength='10' type='text' class='form-control' id='description' value='#{qrcode_data["description"]}' name='description'>
|
92
107
|
</div>
|
93
108
|
<div class='mb-3'>
|
94
|
-
<label for='
|
95
|
-
<
|
96
|
-
|
97
|
-
</select>
|
109
|
+
<label for='transaction_id'>Transaction ID</label>
|
110
|
+
<input maxlength='10' pattern='[a-zA-z0-9]*' type='text' class='form-control' id='transaction_id' value='#{qrcode_data["transaction_id"]}' name='transaction_id'>
|
111
|
+
<div class='form-text'>Only numbers and simple characters, without whitespaces.</div>
|
98
112
|
</div>
|
99
113
|
<div class='mb-3'>
|
100
|
-
<label for='
|
101
|
-
<
|
102
|
-
|
103
|
-
</select>
|
114
|
+
<label for='amount'>Amount</label>
|
115
|
+
<input type='number' step='0.01' pattern='[0-9]{1,}\.[0-9][0-9]' class='form-control' id='amount' value='#{qrcode_data["amount"]}' name='amount'>
|
116
|
+
<div class='form-text'>Only numbers with 2 decimal places.</div>
|
104
117
|
</div>
|
105
118
|
<div class='mb-3'>
|
106
119
|
<label for='postal_code'>Postal code</label>
|
107
|
-
<input type='
|
120
|
+
<input maxlength='8' pattern='[0-9]{8}' type='tel' class='form-control' id='postal_code' value='#{qrcode_data["postal_code"]}' name='postal_code'>
|
121
|
+
<div class='form-text'>Only numbers.</div>
|
108
122
|
</div>
|
109
123
|
<div class='mb-3'>
|
110
|
-
<label for='repeatable'>
|
124
|
+
<label for='repeatable'>Can be paid multiple times?</label>
|
111
125
|
<select required id='repeatable' name='repeatable' class='form-select'>
|
112
|
-
<option
|
113
|
-
<option value='t'>Yes</option>
|
114
|
-
<option value='f'>No</option>
|
126
|
+
<option></option>
|
127
|
+
<option value='t' #{qrcode_data['repeatable'] == 't' ? 'selected' : ''}>Yes</option>
|
128
|
+
<option value='f' #{qrcode_data['repeatable'] == 'f' ? 'selected' : ''}>No</option>
|
115
129
|
</select>
|
116
130
|
</div>
|
117
|
-
<div class='d-grid gap-2'>
|
131
|
+
<div class='d-grid gap-2' style='padding-bottom: 20px;'>
|
118
132
|
<button type='submit' class='btn btn-lg btn-primary'>Generate</button>
|
119
133
|
</div>
|
120
134
|
</form>
|
@@ -124,8 +138,6 @@ def generate_html_with(env)
|
|
124
138
|
<br>
|
125
139
|
<br>
|
126
140
|
#{payload}
|
127
|
-
<br>
|
128
|
-
<br>
|
129
141
|
#{data_uri}
|
130
142
|
</div>
|
131
143
|
</div>
|
@@ -3,6 +3,8 @@
|
|
3
3
|
require 'rqrcode'
|
4
4
|
|
5
5
|
module QrcodePixRuby
|
6
|
+
class PayloadArgumentError < ArgumentError; end
|
7
|
+
|
6
8
|
class Payload
|
7
9
|
ID_PAYLOAD_FORMAT_INDICATOR = '00'
|
8
10
|
ID_POINT_OF_INITIATION_METHOD = '01'
|
@@ -22,17 +24,17 @@ module QrcodePixRuby
|
|
22
24
|
ID_ADDITIONAL_DATA_FIELD_TEMPLATE_TXID = '05'
|
23
25
|
ID_CRC16 = '63'
|
24
26
|
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
27
|
+
ATTRIBUTES = %i[pix_key url repeatable currency country_code description postal_code
|
28
|
+
merchant_name merchant_city transaction_id amount].freeze
|
29
|
+
|
30
|
+
def initialize(**kwargs)
|
31
|
+
verify_kwargs(kwargs.keys)
|
32
|
+
|
33
|
+
ATTRIBUTES.each do |attribute|
|
34
|
+
singleton_class.class_eval { attr_accessor attribute }
|
35
|
+
instance_variable_set("@#{attribute}", kwargs[attribute])
|
36
|
+
end
|
37
|
+
end
|
36
38
|
|
37
39
|
def payload
|
38
40
|
p = ''
|
@@ -68,6 +70,14 @@ module QrcodePixRuby
|
|
68
70
|
|
69
71
|
private
|
70
72
|
|
73
|
+
def verify_kwargs(keys)
|
74
|
+
unknowns = keys - ATTRIBUTES
|
75
|
+
|
76
|
+
return unless unknowns.any?
|
77
|
+
|
78
|
+
raise QrcodePixRuby::PayloadArgumentError, "Unknown attributes: #{unknowns.join(', ')}"
|
79
|
+
end
|
80
|
+
|
71
81
|
def emv(id, value)
|
72
82
|
size = value.to_s.length.to_s.rjust(2, '0')
|
73
83
|
"#{id}#{size}#{value}"
|
@@ -114,7 +124,7 @@ module QrcodePixRuby
|
|
114
124
|
end
|
115
125
|
end
|
116
126
|
|
117
|
-
"#{ID_CRC16}04#{result.to_s(16).upcase}"
|
127
|
+
"#{ID_CRC16}04#{result.to_s(16).upcase.rjust(4, '0')}"
|
118
128
|
end
|
119
129
|
end
|
120
130
|
end
|
data/lib/qrcode_pix_ruby.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: qrcode_pix_ruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Pedro Furtado
|
@@ -11,7 +11,7 @@ authors:
|
|
11
11
|
autorequire:
|
12
12
|
bindir: exe
|
13
13
|
cert_chain: []
|
14
|
-
date:
|
14
|
+
date: 2023-04-14 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: rqrcode
|
@@ -80,8 +80,8 @@ executables: []
|
|
80
80
|
extensions: []
|
81
81
|
extra_rdoc_files: []
|
82
82
|
files:
|
83
|
+
- ".github/mergeable.yml"
|
83
84
|
- ".github/workflows/ci.yml"
|
84
|
-
- ".github/workflows/heroku.yml"
|
85
85
|
- ".github/workflows/rubygems.yml"
|
86
86
|
- ".gitignore"
|
87
87
|
- ".rspec"
|
@@ -95,6 +95,7 @@ files:
|
|
95
95
|
- Rakefile
|
96
96
|
- bin/console
|
97
97
|
- bin/setup
|
98
|
+
- demo/Dockerfile
|
98
99
|
- demo/Gemfile
|
99
100
|
- demo/config.ru
|
100
101
|
- lib/qrcode_pix_ruby.rb
|
@@ -124,7 +125,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
124
125
|
- !ruby/object:Gem::Version
|
125
126
|
version: '0'
|
126
127
|
requirements: []
|
127
|
-
rubygems_version: 3.
|
128
|
+
rubygems_version: 3.4.10
|
128
129
|
signing_key:
|
129
130
|
specification_version: 4
|
130
131
|
summary: Ruby gem for Qrcode generation of Pix (Pagamento Instantâneo Brasileiro -
|
@@ -1,50 +0,0 @@
|
|
1
|
-
name: Publish to Heroku
|
2
|
-
|
3
|
-
on:
|
4
|
-
push:
|
5
|
-
branches: [master]
|
6
|
-
|
7
|
-
jobs:
|
8
|
-
deploy:
|
9
|
-
runs-on: ubuntu-latest
|
10
|
-
steps:
|
11
|
-
- uses: actions/checkout@v2
|
12
|
-
|
13
|
-
- name: Install Ruby
|
14
|
-
uses: ruby/setup-ruby@v1
|
15
|
-
with:
|
16
|
-
ruby-version: 3.0
|
17
|
-
|
18
|
-
- name: Install dependencies
|
19
|
-
run: |
|
20
|
-
cd demo/
|
21
|
-
bundle install
|
22
|
-
bundle update qrcode_pix_ruby
|
23
|
-
cd ../
|
24
|
-
|
25
|
-
- name: Define Heroku credentials
|
26
|
-
run: |
|
27
|
-
cat > ~/.netrc <<EOF
|
28
|
-
machine api.heroku.com
|
29
|
-
login $HEROKU_EMAIL
|
30
|
-
password $HEROKU_API_KEY
|
31
|
-
machine git.heroku.com
|
32
|
-
login $HEROKU_EMAIL
|
33
|
-
password $HEROKU_API_KEY
|
34
|
-
EOF
|
35
|
-
env:
|
36
|
-
HEROKU_API_KEY: ${{ secrets.HEROKU_API_KEY }}
|
37
|
-
HEROKU_EMAIL: ${{ secrets.HEROKU_EMAIL }}
|
38
|
-
|
39
|
-
- name: Define Heroku git remote
|
40
|
-
run: heroku git:remote --app $HEROKU_APP_NAME
|
41
|
-
env:
|
42
|
-
HEROKU_APP_NAME: ${{ secrets.HEROKU_APP_NAME }}
|
43
|
-
|
44
|
-
- name: Publish to Heroku
|
45
|
-
run: |
|
46
|
-
git config user.name 'Pedro Furtado'
|
47
|
-
git config user.email 'pedro.felipe.azevedo.furtado@gmail.com'
|
48
|
-
git add --all
|
49
|
-
git commit -m 'Publish to Heroku'
|
50
|
-
git push heroku `git subtree split --prefix demo master`:master --force
|