punk 0.1.2 → 0.3.2

Sign up to get free protection for your applications and to get access to all the features.
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