punk 0.1.2 → 0.3.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.
Files changed (145) hide show
  1. checksums.yaml +4 -4
  2. data/.editorconfig +9 -0
  3. data/.github/workflows/ship.yml +3 -1
  4. data/.github/workflows/test.yml +26 -1
  5. data/.rdoc_options +23 -0
  6. data/.rgignore +1 -0
  7. data/.rspec +2 -0
  8. data/Gemfile +7 -8
  9. data/Gemfile.lock +28 -41
  10. data/README.md +7 -1
  11. data/Rakefile +0 -1
  12. data/VERSION +1 -1
  13. data/app/migrations/001_lets_punk.rb +3 -0
  14. data/app/routes/hello.rb +4 -0
  15. data/env/.gitignore +3 -0
  16. data/env/spec/test.sh +3 -0
  17. data/lib/punk/actions/.keep +0 -0
  18. data/lib/punk/actions/groups/list.rb +24 -0
  19. data/lib/punk/actions/sessions/clear.rb +21 -0
  20. data/lib/punk/actions/sessions/create.rb +64 -0
  21. data/lib/punk/actions/sessions/list.rb +18 -0
  22. data/lib/punk/actions/sessions/verify.rb +24 -0
  23. data/lib/punk/actions/tenants/list.rb +18 -0
  24. data/lib/punk/actions/users/list_group.rb +18 -0
  25. data/lib/punk/actions/users/list_tenant.rb +18 -0
  26. data/lib/punk/actions/users/show.rb +18 -0
  27. data/lib/punk/commands/list.rb +12 -6
  28. data/lib/punk/config/defaults.json +3 -0
  29. data/lib/punk/config/schema.json +3 -0
  30. data/lib/punk/core/app.rb +4 -6
  31. data/lib/punk/core/commander.rb +12 -7
  32. data/lib/punk/core/exec.rb +2 -0
  33. data/lib/punk/core/load.rb +0 -1
  34. data/lib/punk/framework/command.rb +5 -1
  35. data/lib/punk/framework/plugins/validation.rb +0 -14
  36. data/lib/punk/helpers/loggable.rb +1 -1
  37. data/lib/punk/migrations/001_punk.rb +103 -0
  38. data/lib/punk/models/.keep +0 -0
  39. data/lib/punk/models/group.rb +20 -0
  40. data/lib/punk/models/group_user_metadata.rb +17 -0
  41. data/lib/punk/models/identity.rb +29 -0
  42. data/lib/punk/models/session.rb +89 -0
  43. data/lib/punk/models/tenant.rb +19 -0
  44. data/lib/punk/models/tenant_user_metadata.rb +17 -0
  45. data/lib/punk/models/user.rb +31 -0
  46. data/lib/punk/routes/groups.rb +31 -0
  47. data/lib/punk/routes/plivo.rb +4 -0
  48. data/lib/punk/routes/sessions.rb +108 -0
  49. data/lib/punk/routes/swagger.rb +9 -0
  50. data/lib/punk/routes/tenants.rb +29 -0
  51. data/lib/punk/routes/users.rb +36 -0
  52. data/lib/punk/services/.keep +0 -0
  53. data/lib/punk/services/challenge_claim.rb +46 -0
  54. data/lib/punk/services/create_identities.rb +25 -0
  55. data/lib/punk/services/generate_swagger.rb +25 -0
  56. data/lib/punk/services/prove_claim.rb +29 -0
  57. data/lib/punk/services/secret.rb +9 -0
  58. data/lib/punk/templates/groups/list.jbuilder +7 -0
  59. data/lib/punk/templates/plivo.slim +16 -0
  60. data/lib/punk/templates/sessions/list.jbuilder +6 -0
  61. data/lib/punk/templates/sessions/pending.jbuilder +4 -0
  62. data/lib/punk/templates/tenants/list.jbuilder +7 -0
  63. data/lib/punk/templates/tenants/list.slim +8 -0
  64. data/lib/punk/templates/users/list.jbuilder +7 -0
  65. data/lib/punk/templates/users/list.rcsv +4 -0
  66. data/lib/punk/templates/users/show.jbuilder +5 -0
  67. data/lib/punk/views/groups/list.rb +22 -0
  68. data/lib/punk/views/plivo_store.rb +15 -0
  69. data/lib/punk/views/sessions/list.rb +22 -0
  70. data/lib/punk/views/sessions/pending.rb +28 -0
  71. data/lib/punk/views/tenants/list.rb +22 -0
  72. data/lib/punk/views/users/list.rb +22 -0
  73. data/lib/punk/views/users/show.rb +22 -0
  74. data/lib/punk/workers/.keep +0 -0
  75. data/lib/punk/workers/expire_sessions.rb +9 -0
  76. data/lib/punk/workers/geocode_session_worker.rb +48 -0
  77. data/lib/punk/workers/identify_session_worker.rb +45 -0
  78. data/lib/punk/workers/secret.rb +18 -0
  79. data/lib/punk/workers/send_email_worker.rb +51 -0
  80. data/lib/punk/workers/send_sms_worker.rb +40 -0
  81. data/punk.gemspec +147 -21
  82. data/schema.psql +345 -0
  83. data/spec/actions/groups/punk/list_groups_action_spec.rb +36 -0
  84. data/spec/actions/sessions/punk/clear_session_action_spec.rb +29 -0
  85. data/spec/actions/sessions/punk/create_session_action_spec.rb +33 -0
  86. data/spec/actions/sessions/punk/list_sessions_action_spec.rb +26 -0
  87. data/spec/actions/sessions/punk/verify_session_action_spec.rb +59 -0
  88. data/spec/actions/tenants/punk/list_tenants_action_spec.rb +25 -0
  89. data/spec/actions/users/punk/list_group_users_action_spec.rb +26 -0
  90. data/spec/actions/users/punk/list_tenant_users_action_spec.rb +26 -0
  91. data/spec/factories/group.rb +12 -0
  92. data/spec/factories/group_user_metadata.rb +10 -0
  93. data/spec/factories/identity.rb +19 -0
  94. data/spec/factories/session.rb +12 -0
  95. data/spec/factories/tenant.rb +10 -0
  96. data/spec/factories/tenant_user_metadata.rb +10 -0
  97. data/spec/factories/user.rb +12 -0
  98. data/spec/lib/commands/auth_spec.rb +11 -0
  99. data/spec/lib/commands/generate_spec.rb +7 -0
  100. data/spec/lib/commands/http_spec.rb +23 -0
  101. data/spec/lib/commands/list_spec.rb +7 -0
  102. data/spec/lib/commands/swagger_spec.rb +7 -0
  103. data/spec/lib/engine/punk_env_spec.rb +13 -0
  104. data/spec/lib/engine/punk_exec_spec.rb +9 -0
  105. data/spec/lib/engine/punk_init_spec.rb +9 -0
  106. data/spec/lib/engine/punk_store_spec.rb +10 -0
  107. data/spec/lib/punk.env +7 -0
  108. data/spec/models/punk/group_spec.rb +50 -0
  109. data/spec/models/punk/group_user_metadata_spec.rb +61 -0
  110. data/spec/models/punk/identity_spec.rb +61 -0
  111. data/spec/models/punk/session_spec.rb +156 -0
  112. data/spec/models/punk/tenant_spec.rb +51 -0
  113. data/spec/models/punk/tenant_user_metadata_spec.rb +61 -0
  114. data/spec/models/punk/user_spec.rb +115 -0
  115. data/spec/routes/groups/get_groups_spec.rb +33 -0
  116. data/spec/routes/plivo/get_plivo_spec.rb +11 -0
  117. data/spec/routes/sessions/delete_session_spec.rb +11 -0
  118. data/spec/routes/sessions/get_sessions_spec.rb +30 -0
  119. data/spec/routes/sessions/patch_session_spec.rb +11 -0
  120. data/spec/routes/sessions/post_session_spec.rb +11 -0
  121. data/spec/routes/swagger/get_swagger_spec.rb +12 -0
  122. data/spec/routes/tenants/get_tenants_spec.rb +31 -0
  123. data/spec/routes/users/get_users_spec.rb +60 -0
  124. data/spec/services/punk/challenge_claim_service_spec.rb +7 -0
  125. data/spec/services/punk/create_identities_service_spec.rb +14 -0
  126. data/spec/services/punk/generate_swagger_service_spec.rb +7 -0
  127. data/spec/services/punk/prove_claim_service_spec.rb +7 -0
  128. data/spec/services/punk/secret_service_spec.rb +7 -0
  129. data/spec/spec_helper.rb +122 -0
  130. data/spec/vcr_cassettes/PUNK_GeocodeSessionWorker/updates_the_session_data.yml +57 -0
  131. data/spec/vcr_cassettes/PUNK_IdentifySessionWorker/updates_the_session_data.yml +112 -0
  132. data/spec/views/punk/plivo_store_spec.rb +7 -0
  133. data/spec/views/sessions/punk/list_sessions_view_spec.rb +7 -0
  134. data/spec/views/sessions/punk/pending_session_view_spec.rb +7 -0
  135. data/spec/views/tenants/punk/list_tenants_view_spec.rb +7 -0
  136. data/spec/views/users/punk/list_groups_view_spec.rb +7 -0
  137. data/spec/views/users/punk/list_users_view_spec.rb +7 -0
  138. data/spec/workers/punk/expire_sessions_worker_spec.rb +31 -0
  139. data/spec/workers/punk/geocode_session_worker_spec.rb +14 -0
  140. data/spec/workers/punk/identify_session_worker_spec.rb +15 -0
  141. data/spec/workers/punk/secret_worker_spec.rb +20 -0
  142. data/spec/workers/punk/send_email_worker_spec.rb +46 -0
  143. data/spec/workers/punk/send_sms_worker_spec.rb +33 -0
  144. metadata +154 -16
  145. data/lib/punk/views/all.rb +0 -4
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f9b16de9d4ac3d5579796c30191e700b3e5e43fb1459cf69f93544f5706339f1
4
- data.tar.gz: 2fc221a6f391e00de04e4923d1fc4c8189f13ba0ca88478cd914831f619030d4
3
+ metadata.gz: 02d2a524887bd63a01e56b8f95e42f484ea2fe2b881595ffeb521e2658aabc5f
4
+ data.tar.gz: 6ef472cb4212009585a6e0aa5c3d5460aa3ee2e6dbb3eb07aaf0238e673fd28c
5
5
  SHA512:
6
- metadata.gz: 8bb6a5c695c2ddd75be4296004c1da7da9f617c8cde852b5bd96df360001a4571302aff1c909f72fa831e1edd7f358e8f2e28b3f7797721d67bda74251a242d8
7
- data.tar.gz: 1dbe20b4be3319b5aaee2d5d21a2bb486f536a23ef98efd05151d5e3d048dadb29124f9ab868811986cd494c866de5220c4127d1d8cf7f76a31f21d621a0c576
6
+ metadata.gz: 6c93503cdb55dc5a3df437f5af392232c12b86e8c03426486dcf2b7dfcf4e9c2b2918a80cd03fa0a20798ada7287797ddd830405fcf40fbee1833474b742555d
7
+ data.tar.gz: c920f18c82d66f6027a4d119d0285c05343176f4439c8b2b40566e6e3c9749be288fcb9133ec6a15ce777c45eaa81c463e3b19f2d2322c9a44fc6d34f8b143c7
@@ -0,0 +1,9 @@
1
+ root = true
2
+
3
+ [*]
4
+ charset = utf-8
5
+ indent_style = space
6
+ indent_size = 2
7
+ end_of_line = lf
8
+ insert_final_newline = true
9
+ trim_trailing_whitespace = true
@@ -21,6 +21,8 @@ jobs:
21
21
  touch $HOME/.gem/credentials
22
22
  chmod 0600 $HOME/.gem/credentials
23
23
  printf -- "---\n:rubygems_api_key: ${GEM_HOST_API_KEY}\n" > $HOME/.gem/credentials
24
- bundle exec rake release LOCAL_BRANCH=$GITHUB_REF
24
+ bundle exec rake gemspec
25
+ bundle exec rake build
26
+ gem push pkg/*
25
27
  env:
26
28
  GEM_HOST_API_KEY: "${{secrets.RUBYGEMS_AUTH_TOKEN}}"
@@ -7,6 +7,28 @@ jobs:
7
7
  runs-on: ubuntu-latest
8
8
  env:
9
9
  PUNK_ENV: test
10
+ COVERALLS_REPO_TOKEN: "${{secrets.COVERALLS_REPO_TOKEN}}"
11
+ IPSTACK_ACCESS_KEY: "${{secrets.IPSTACK_ACCESS_KEY}}"
12
+ USERSTACK_API_KEY: "${{secrets.USERSTACK_API_KEY}}"
13
+ DATABASE_URL: "postgres://postgres:postgres@localhost/punk_test"
14
+
15
+ services:
16
+ postgres:
17
+ image: postgres
18
+ env:
19
+ POSTGRES_PASSWORD: postgres
20
+ options: >-
21
+ --health-cmd pg_isready
22
+ --health-interval 10s
23
+ --health-timeout 5s
24
+ --health-retries 5
25
+ ports:
26
+ - 5432:5432
27
+ memcached:
28
+ image: memcached
29
+ ports:
30
+ - 11211:11211
31
+ options: --health-cmd "timeout 5 bash -c 'cat < /dev/null > /dev/udp/127.0.0.1/11211'" --health-interval 10s --health-timeout 5s --health-retries 5
10
32
  steps:
11
33
  - uses: actions/checkout@v2
12
34
  - name: Set up Ruby
@@ -17,4 +39,7 @@ jobs:
17
39
  - name: Lint files
18
40
  run: bundle exec rubocop
19
41
  - name: Run specs
20
- run: bundle exec rspec
42
+ run: |
43
+ bundle exec ruby ./bin/punk db create
44
+ bundle exec ruby ./bin/punk db migrate
45
+ bundle exec rspec
@@ -0,0 +1,23 @@
1
+ --- !ruby/object:RDoc::Options
2
+ encoding: UTF-8
3
+ static_path: []
4
+ rdoc_include:
5
+ - "."
6
+ - "/Users/jason/dev/rocket_engine"
7
+ charset: UTF-8
8
+ exclude:
9
+ hyperlink_all: false
10
+ line_numbers: false
11
+ locale:
12
+ locale_dir: locale
13
+ locale_name:
14
+ main_page:
15
+ markup: markdown
16
+ output_decoration: true
17
+ page_dir:
18
+ show_hash: false
19
+ tab_width: 8
20
+ template_stylesheets: []
21
+ title:
22
+ visibility: :protected
23
+ webcvs:
@@ -0,0 +1 @@
1
+ *.lock
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --color
2
+ --require spec_helper
data/Gemfile CHANGED
@@ -47,7 +47,7 @@ gem 'aasm', '~> 5.1'
47
47
 
48
48
  # Authentication
49
49
  gem 'http-accept', '~> 2.1'
50
- gem 'maxmind-db', '~> 1.1'
50
+ gem 'ipstack', '~> 0.1'
51
51
  gem 'rbnacl', '~> 7.1'
52
52
  gem 'userstack', '~> 0.1'
53
53
 
@@ -62,15 +62,15 @@ gem 'mailgun-ruby', '~> 1.2'
62
62
  gem 'plivo', '~> 4.15'
63
63
 
64
64
  # HTTP Framework
65
- gem 'roda', '~> 3.39'
65
+ gem 'roda', '~> 3.40'
66
66
  gem 'roda-route_list', '~> 2.1'
67
67
 
68
68
  # HTML Rendering
69
69
  gem 'slim', '~> 4.1'
70
70
 
71
71
  # JSON Rendering
72
- gem 'jbuilder', '~> 2.10'
73
- gem 'oj', '~> 3.10'
72
+ gem 'jbuilder', '~> 2.11'
73
+ gem 'oj', '~> 3.11'
74
74
  gem 'tilt-jbuilder', '~> 0.7'
75
75
 
76
76
  # Documentation Generation
@@ -81,7 +81,8 @@ gem 'swagger_yard', '~> 1.0'
81
81
  gem 'activesupport', '~> 6.1'
82
82
 
83
83
  # Monitoring
84
- gem 'sentry-raven', '~> 3.1'
84
+ gem 'sentry-ruby', '~> 4.1'
85
+ gem 'sentry-sidekiq', '~> 4.1'
85
86
  gem 'skylight', '~> 4.3'
86
87
 
87
88
  # Phone Numbers
@@ -96,18 +97,16 @@ end
96
97
 
97
98
  # Testing
98
99
  group :test do
99
- gem 'capybara', '~> 3.34'
100
100
  gem 'coveralls', '~> 0.8'
101
101
  gem 'factory_bot', '~> 6.1'
102
102
  gem 'faker', '~> 2.15'
103
103
  gem 'rack-test', '~> 1.1'
104
104
  gem 'rspec', '~> 3.10'
105
105
  gem 'rspec-its', '~> 1.3'
106
- gem 'rubocop', '~> 1.7'
106
+ gem 'rubocop', '~> 1.8'
107
107
  gem 'rubocop-rails', '~> 2.9'
108
108
  gem 'rubocop-rspec', '~> 2.1'
109
109
  gem 'rubocop-sequel', '~> 0.1'
110
- gem 'selenium-webdriver', '~> 3.142'
111
110
  gem 'timecop', '~> 0.9'
112
111
  gem 'vcr', '~> 6.0'
113
112
  gem 'webmock', '~> 3.11'
@@ -3,7 +3,7 @@ GEM
3
3
  specs:
4
4
  aasm (5.1.1)
5
5
  concurrent-ruby (~> 1.0)
6
- activesupport (6.1.0)
6
+ activesupport (6.1.1)
7
7
  concurrent-ruby (~> 1.0, >= 1.0.2)
8
8
  i18n (>= 1.6, < 2)
9
9
  minitest (>= 5.1)
@@ -13,25 +13,16 @@ GEM
13
13
  public_suffix (>= 2.0.2, < 5.0)
14
14
  amazing_print (1.2.2)
15
15
  ansi (1.5.0)
16
- ast (2.4.1)
16
+ ast (2.4.2)
17
17
  bootsnap (1.5.1)
18
18
  msgpack (~> 1.0)
19
19
  builder (3.2.4)
20
20
  byebug (11.1.3)
21
- capybara (3.34.0)
22
- addressable
23
- mini_mime (>= 0.1.3)
24
- nokogiri (~> 1.8)
25
- rack (>= 1.6.0)
26
- rack-test (>= 0.6.3)
27
- regexp_parser (~> 1.5)
28
- xpath (~> 3.2)
29
- childprocess (3.0.0)
30
21
  chronic (0.10.2)
31
22
  coderay (1.1.3)
32
23
  commander (4.5.2)
33
24
  highline (~> 2.0.0)
34
- concurrent-ruby (1.1.7)
25
+ concurrent-ruby (1.1.8)
35
26
  connection_pool (2.2.3)
36
27
  coveralls (0.8.23)
37
28
  json (>= 1.8, < 3)
@@ -46,7 +37,7 @@ GEM
46
37
  thread_safe (~> 0.3, >= 0.3.1)
47
38
  diff-lcs (1.4.4)
48
39
  dim (1.2.8)
49
- docile (1.3.4)
40
+ docile (1.3.5)
50
41
  domain_name (0.5.20190701)
51
42
  unf (>= 0.0.5, < 1.0.0)
52
43
  dot_hash (1.1.8)
@@ -62,7 +53,7 @@ GEM
62
53
  faraday_middleware (1.0.0)
63
54
  faraday (~> 1.0)
64
55
  ffi (1.14.2)
65
- fugit (1.4.1)
56
+ fugit (1.4.2)
66
57
  et-orbi (~> 1.1, >= 1.1.8)
67
58
  raabro (~> 1.4)
68
59
  gemfile_updater (0.1.0)
@@ -83,7 +74,9 @@ GEM
83
74
  domain_name (~> 0.5)
84
75
  i18n (1.8.7)
85
76
  concurrent-ruby (~> 1.0)
86
- jbuilder (2.10.1)
77
+ ipstack (0.1.3)
78
+ nokogiri (>= 1.8, < 2.0)
79
+ jbuilder (2.11.1)
87
80
  activesupport (>= 5.0.0)
88
81
  json (2.5.1)
89
82
  juwelier (2.4.9)
@@ -105,12 +98,10 @@ GEM
105
98
  addressable (~> 2.7)
106
99
  mailgun-ruby (1.2.0)
107
100
  rest-client (~> 2.0.2)
108
- maxmind-db (1.1.1)
109
101
  method_source (1.0.0)
110
102
  mime-types (3.3.1)
111
103
  mime-types-data (~> 3.2015)
112
104
  mime-types-data (3.2020.1104)
113
- mini_mime (1.0.2)
114
105
  mini_portile2 (2.5.0)
115
106
  minitest (5.14.3)
116
107
  msgpack (1.3.3)
@@ -128,7 +119,7 @@ GEM
128
119
  multi_json (~> 1.3)
129
120
  multi_xml (~> 0.5)
130
121
  rack (>= 1.2, < 3)
131
- oj (3.10.18)
122
+ oj (3.11.1)
132
123
  papertrail (0.11.0)
133
124
  ansi (~> 1.5)
134
125
  chronic (~> 0.10)
@@ -171,13 +162,13 @@ GEM
171
162
  rchardet (1.8.0)
172
163
  rdoc (6.3.0)
173
164
  redis (4.2.5)
174
- regexp_parser (1.8.2)
165
+ regexp_parser (2.0.3)
175
166
  rest-client (2.0.2)
176
167
  http-cookie (>= 1.0.2, < 2.0)
177
168
  mime-types (>= 1.16, < 4.0)
178
169
  netrc (~> 0.8)
179
170
  rexml (3.2.4)
180
- roda (3.39.0)
171
+ roda (3.40.0)
181
172
  rack
182
173
  roda-route_list (2.1.0)
183
174
  roda
@@ -197,7 +188,7 @@ GEM
197
188
  diff-lcs (>= 1.2.0, < 2.0)
198
189
  rspec-support (~> 3.10.0)
199
190
  rspec-support (3.10.1)
200
- rubocop (1.8.0)
191
+ rubocop (1.8.1)
201
192
  parallel (~> 1.10)
202
193
  parser (>= 3.0.0.0)
203
194
  rainbow (>= 2.2.2, < 4.0)
@@ -206,7 +197,7 @@ GEM
206
197
  rubocop-ast (>= 1.2.0, < 2.0)
207
198
  ruby-progressbar (~> 1.7)
208
199
  unicode-display_width (>= 1.4.0, < 3.0)
209
- rubocop-ast (1.4.0)
200
+ rubocop-ast (1.4.1)
210
201
  parser (>= 2.7.1.5)
211
202
  rubocop-rails (2.9.1)
212
203
  activesupport (>= 4.2.0)
@@ -218,20 +209,19 @@ GEM
218
209
  rubocop-sequel (0.1.0)
219
210
  rubocop (~> 1.0)
220
211
  ruby-progressbar (1.11.0)
221
- rubyzip (2.3.0)
222
- selenium-webdriver (3.142.7)
223
- childprocess (>= 0.5, < 4.0)
224
- rubyzip (>= 1.2.2)
225
212
  semantic_logger (4.7.4)
226
213
  concurrent-ruby (~> 1.0)
227
214
  semver2 (3.4.2)
228
- sentry-raven (3.1.1)
215
+ sentry-ruby (4.1.4)
216
+ concurrent-ruby (~> 1.0, >= 1.0.2)
229
217
  faraday (>= 1.0)
218
+ sentry-sidekiq (4.1.2)
219
+ sentry-ruby (~> 4.1.2)
230
220
  sequel (5.40.0)
231
221
  sequel_pg (1.14.0)
232
222
  pg (>= 0.18.0, != 1.2.0)
233
223
  sequel (>= 4.38.0)
234
- sidekiq (6.1.2)
224
+ sidekiq (6.1.3)
235
225
  connection_pool (>= 2.2.2)
236
226
  rack (~> 2.0)
237
227
  redis (>= 4.2.0)
@@ -257,14 +247,14 @@ GEM
257
247
  temple (0.8.2)
258
248
  term-ansicolor (1.7.1)
259
249
  tins (~> 1.0)
260
- thor (1.0.1)
250
+ thor (1.1.0)
261
251
  thread_safe (0.3.6)
262
252
  tilt (2.0.10)
263
253
  tilt-jbuilder (0.7.1)
264
254
  jbuilder
265
255
  tilt (>= 1.3.0, < 3)
266
256
  timecop (0.9.2)
267
- tins (1.26.0)
257
+ tins (1.28.0)
268
258
  sync
269
259
  tzinfo (2.0.4)
270
260
  concurrent-ruby (~> 1.0)
@@ -274,13 +264,11 @@ GEM
274
264
  unicode-display_width (2.0.0)
275
265
  userstack (0.1.0)
276
266
  vcr (6.0.0)
277
- webmock (3.11.0)
267
+ webmock (3.11.1)
278
268
  addressable (>= 2.3.6)
279
269
  crack (>= 0.3.2)
280
270
  hashdiff (>= 0.4.0, < 2.0.0)
281
271
  wisper (2.0.1)
282
- xpath (3.2.0)
283
- nokogiri (~> 1.8)
284
272
  yard (0.9.26)
285
273
  zeitwerk (2.4.2)
286
274
 
@@ -294,7 +282,6 @@ DEPENDENCIES
294
282
  bootsnap (~> 1.5)
295
283
  bundler (~> 1.17)
296
284
  byebug (~> 11.1)
297
- capybara (~> 3.34)
298
285
  commander (~> 4.5)
299
286
  coveralls (~> 0.8)
300
287
  dalli (~> 2.7)
@@ -305,12 +292,12 @@ DEPENDENCIES
305
292
  faker (~> 2.15)
306
293
  gemfile_updater (~> 0.1)
307
294
  http-accept (~> 2.1)
308
- jbuilder (~> 2.10)
295
+ ipstack (~> 0.1)
296
+ jbuilder (~> 2.11)
309
297
  juwelier (~> 2.4)
310
298
  launchy (~> 2.5)
311
299
  mailgun-ruby (~> 1.2)
312
- maxmind-db (~> 1.1)
313
- oj (~> 3.10)
300
+ oj (~> 3.11)
314
301
  papertrail (~> 0.11)
315
302
  pg (~> 1.2)
316
303
  phony (~> 2.18)
@@ -325,17 +312,17 @@ DEPENDENCIES
325
312
  rack-unreloader (~> 1.7)
326
313
  rbnacl (~> 7.1)
327
314
  rdoc (~> 6.3)
328
- roda (~> 3.39)
315
+ roda (~> 3.40)
329
316
  roda-route_list (~> 2.1)
330
317
  rspec (~> 3.10)
331
318
  rspec-its (~> 1.3)
332
- rubocop (~> 1.7)
319
+ rubocop (~> 1.8)
333
320
  rubocop-rails (~> 2.9)
334
321
  rubocop-rspec (~> 2.1)
335
322
  rubocop-sequel (~> 0.1)
336
- selenium-webdriver (~> 3.142)
337
323
  semantic_logger (~> 4.7)
338
- sentry-raven (~> 3.1)
324
+ sentry-ruby (~> 4.1)
325
+ sentry-sidekiq (~> 4.1)
339
326
  sequel (~> 5.40)
340
327
  sequel_pg (~> 1.14)
341
328
  sidekiq (~> 6.1)
data/README.md CHANGED
@@ -1,11 +1,17 @@
1
1
  [![test](https://github.com/kranzky/punk/workflows/test/badge.svg)](https://github.com/kranzky/punk/actions?query=workflow%3Atest)
2
- [![ship](https://github.com/kranzky/punk/workflows/ship/badge.svg)](https://github.com/kranzky/punk/actions?query=workflow%3Aship)
2
+ [![Coverage Status](https://coveralls.io/repos/github/kranzky/punk/badge.svg?branch=main)](https://coveralls.io/github/kranzky/punk?branch=main)
3
3
  [![Gem Version](https://badge.fury.io/rb/punk.svg)](https://badge.fury.io/rb/punk)
4
4
 
5
5
  # Punk!
6
6
 
7
7
  Punk! is an omakase web framework for rapid prototyping.
8
8
 
9
+ ## Release Process
10
+
11
+ 1. `rake version:bump:whatever`
12
+ 2. `rake git:release BRANCH=main`
13
+ 3. Create new release on GitHub to trigger ship workflow
14
+
9
15
  ## Copyright
10
16
 
11
17
  Copyright (c) 2021 Jason Hutchens. See LICENSE for further details.
data/Rakefile CHANGED
@@ -20,7 +20,6 @@ Juwelier::Tasks.new do |gem|
20
20
  gem.email = "lloyd@kranzky.com"
21
21
  gem.authors = ["Lloyd Kranzky"]
22
22
  gem.required_ruby_version = ">= 2.1"
23
- # dependencies defined in Gemfile
24
23
  end
25
24
  Juwelier::RubygemsDotOrgTasks.new
26
25
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.2
1
+ 0.3.2
@@ -0,0 +1,3 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative '../../lib/punk/migrations/001_punk'
@@ -0,0 +1,4 @@
1
+ # frozen_string_literal: true
2
+
3
+ # route: GET /hello
4
+ PUNK.route('hello') { perform "world" }
@@ -0,0 +1,3 @@
1
+ production.sh
2
+ staging.sh
3
+ locals.sh
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env bash
2
+
3
+ export PUNK_TRACE=spec_test
File without changes
@@ -0,0 +1,24 @@
1
+ # frozen_string_literal: true
2
+
3
+ module PUNK
4
+ class ListGroupsAction < Action
5
+ args :user, :tenant
6
+
7
+ def validate
8
+ validates_not_null :user
9
+ validates_not_empty :user
10
+ return if user.blank?
11
+ validates_not_null :tenant
12
+ validates_not_empty :tenant
13
+ return if tenant.blank?
14
+ validates_type User, :user
15
+ validates_type Tenant, :tenant
16
+ end
17
+
18
+ def process
19
+ # TODO: repository here
20
+ # an action takes arguments (that may be entities) and returns a view object
21
+ present ListGroupsView, groups: user.groups_dataset.where(tenant: tenant).all
22
+ end
23
+ end
24
+ end