punk 0.3.6 → 0.4.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/workflows/test.yml +1 -1
- data/.rubocop.yml +1091 -93
- data/.standard.yml +2 -0
- data/Gemfile +60 -60
- data/Gemfile.lock +22 -17
- data/README.md +7 -3
- data/Rakefile +9 -7
- data/VERSION +1 -1
- data/app/migrations/001_lets_punk.rb +1 -1
- data/app/routes/hello.rb +1 -1
- data/bin/punk +5 -5
- data/lib/punk.rb +7 -7
- data/lib/punk/actions/sessions/create.rb +3 -3
- data/lib/punk/actions/sessions/verify.rb +2 -2
- data/lib/punk/commands/auth.rb +4 -4
- data/lib/punk/commands/generate.rb +5 -5
- data/lib/punk/commands/http.rb +4 -4
- data/lib/punk/commands/list.rb +10 -10
- data/lib/punk/core/app.rb +41 -41
- data/lib/punk/core/boot.rb +5 -5
- data/lib/punk/core/cli.rb +3 -3
- data/lib/punk/core/commander.rb +28 -28
- data/lib/punk/core/commands.rb +8 -8
- data/lib/punk/core/env.rb +27 -27
- data/lib/punk/core/exec.rb +8 -8
- data/lib/punk/core/interface.rb +19 -19
- data/lib/punk/core/load.rb +2 -2
- data/lib/punk/core/logger.rb +3 -3
- data/lib/punk/core/monkey.rb +1 -1
- data/lib/punk/core/pry.rb +2 -2
- data/lib/punk/core/settings.rb +4 -4
- data/lib/punk/core/version.rb +1 -1
- data/lib/punk/core/worker.rb +6 -6
- data/lib/punk/framework/all.rb +8 -8
- data/lib/punk/framework/model.rb +6 -5
- data/lib/punk/framework/plugins/all.rb +1 -1
- data/lib/punk/framework/plugins/validation.rb +8 -8
- data/lib/punk/framework/service.rb +5 -3
- data/lib/punk/framework/worker.rb +3 -3
- data/lib/punk/helpers/all.rb +5 -5
- data/lib/punk/helpers/loggable.rb +3 -3
- data/lib/punk/helpers/publishable.rb +1 -1
- data/lib/punk/helpers/renderable.rb +10 -10
- data/lib/punk/helpers/validatable.rb +7 -6
- data/lib/punk/migrations/001_punk.rb +12 -12
- data/lib/punk/models/group.rb +1 -1
- data/lib/punk/models/identity.rb +1 -1
- data/lib/punk/models/session.rb +7 -7
- data/lib/punk/models/tenant.rb +1 -1
- data/lib/punk/models/user.rb +2 -2
- data/lib/punk/plugins/all.rb +2 -2
- data/lib/punk/plugins/cors.rb +2 -2
- data/lib/punk/plugins/ssl.rb +1 -1
- data/lib/punk/routes/groups.rb +1 -1
- data/lib/punk/routes/plivo.rb +1 -1
- data/lib/punk/routes/sessions.rb +2 -2
- data/lib/punk/routes/swagger.rb +2 -2
- data/lib/punk/routes/tenants.rb +1 -1
- data/lib/punk/routes/users.rb +1 -1
- data/lib/punk/services/challenge_claim.rb +5 -5
- data/lib/punk/services/generate_swagger.rb +6 -6
- data/lib/punk/services/prove_claim.rb +1 -1
- data/lib/punk/startup/cache.rb +3 -3
- data/lib/punk/startup/database.rb +4 -4
- data/lib/punk/startup/environment.rb +6 -6
- data/lib/punk/startup/logger.rb +2 -2
- data/lib/punk/startup/task.rb +5 -5
- data/lib/punk/views/fail.rb +2 -2
- data/lib/punk/views/groups/list.rb +2 -2
- data/lib/punk/views/info.rb +2 -2
- data/lib/punk/views/plivo_store.rb +2 -2
- data/lib/punk/views/sessions/list.rb +2 -2
- data/lib/punk/views/sessions/pending.rb +2 -2
- data/lib/punk/views/tenants/list.rb +2 -2
- data/lib/punk/views/users/list.rb +2 -2
- data/lib/punk/views/users/show.rb +2 -2
- data/lib/punk/workers/geocode_session_worker.rb +3 -3
- data/lib/punk/workers/identify_session_worker.rb +1 -1
- data/lib/punk/workers/send_email_worker.rb +3 -3
- data/lib/punk/workers/send_sms_worker.rb +3 -3
- data/punk.gemspec +8 -4
- data/spec/actions/groups/punk/list_groups_action_spec.rb +9 -9
- data/spec/actions/sessions/punk/clear_session_action_spec.rb +11 -11
- data/spec/actions/sessions/punk/create_session_action_spec.rb +9 -9
- data/spec/actions/sessions/punk/list_sessions_action_spec.rb +8 -8
- data/spec/actions/sessions/punk/verify_session_action_spec.rb +24 -24
- data/spec/actions/tenants/punk/list_tenants_action_spec.rb +6 -6
- data/spec/actions/users/punk/list_group_users_action_spec.rb +6 -6
- data/spec/actions/users/punk/list_tenant_users_action_spec.rb +6 -6
- data/spec/factories/group.rb +1 -1
- data/spec/factories/group_user_metadata.rb +1 -1
- data/spec/factories/identity.rb +4 -4
- data/spec/factories/session.rb +1 -1
- data/spec/factories/tenant.rb +1 -1
- data/spec/factories/tenant_user_metadata.rb +1 -1
- data/spec/factories/user.rb +1 -1
- data/spec/lib/commands/generate_spec.rb +2 -2
- data/spec/lib/commands/list_spec.rb +2 -2
- data/spec/lib/commands/swagger_spec.rb +2 -2
- data/spec/lib/engine/punk_env_spec.rb +4 -4
- data/spec/lib/engine/punk_exec_spec.rb +2 -2
- data/spec/lib/engine/punk_init_spec.rb +2 -2
- data/spec/lib/engine/punk_store_spec.rb +2 -2
- data/spec/models/punk/group_spec.rb +4 -4
- data/spec/models/punk/group_user_metadata_spec.rb +2 -2
- data/spec/models/punk/identity_spec.rb +17 -17
- data/spec/models/punk/session_spec.rb +4 -4
- data/spec/models/punk/tenant_spec.rb +3 -3
- data/spec/models/punk/tenant_user_metadata_spec.rb +2 -2
- data/spec/models/punk/user_spec.rb +9 -9
- data/spec/routes/groups/get_groups_spec.rb +4 -4
- data/spec/routes/plivo/get_plivo_spec.rb +1 -1
- data/spec/routes/sessions/delete_session_spec.rb +1 -1
- data/spec/routes/sessions/get_sessions_spec.rb +5 -5
- data/spec/routes/sessions/patch_session_spec.rb +1 -1
- data/spec/routes/sessions/post_session_spec.rb +1 -1
- data/spec/routes/swagger/get_swagger_spec.rb +1 -1
- data/spec/routes/tenants/get_tenants_spec.rb +5 -5
- data/spec/routes/users/get_users_spec.rb +6 -6
- data/spec/services/punk/challenge_claim_service_spec.rb +2 -2
- data/spec/services/punk/create_identities_service_spec.rb +1 -1
- data/spec/services/punk/generate_swagger_service_spec.rb +2 -2
- data/spec/services/punk/prove_claim_service_spec.rb +2 -2
- data/spec/services/punk/secret_service_spec.rb +2 -2
- data/spec/spec_helper.rb +27 -27
- data/spec/views/punk/plivo_store_spec.rb +2 -2
- data/spec/views/sessions/punk/list_sessions_view_spec.rb +2 -2
- data/spec/views/sessions/punk/pending_session_view_spec.rb +2 -2
- data/spec/views/tenants/punk/list_tenants_view_spec.rb +2 -2
- data/spec/views/users/punk/list_groups_view_spec.rb +2 -2
- data/spec/views/users/punk/list_users_view_spec.rb +2 -2
- data/spec/workers/punk/geocode_session_worker_spec.rb +2 -2
- data/spec/workers/punk/identify_session_worker_spec.rb +3 -3
- data/spec/workers/punk/send_email_worker_spec.rb +1 -1
- metadata +18 -3
data/lib/punk/core/commands.rb
CHANGED
@@ -1,23 +1,23 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require_relative
|
3
|
+
require_relative "../framework/command"
|
4
4
|
|
5
5
|
module PUNK
|
6
|
-
def self.commands(target, scope=nil)
|
7
|
-
path = File.expand_path(File.join(__dir__,
|
6
|
+
def self.commands(target, scope = nil)
|
7
|
+
path = File.expand_path(File.join(__dir__, "..", "commands"))
|
8
8
|
PUNK.profile_debug("commands", path: path) do
|
9
|
-
Dir.glob(File.join(path,
|
9
|
+
Dir.glob(File.join(path, "**/*.rb")).sort.each { |file| require(file) }
|
10
10
|
end
|
11
|
-
path = File.expand_path(File.join(PUNK.get.app.path,
|
11
|
+
path = File.expand_path(File.join(PUNK.get.app.path, "commands"))
|
12
12
|
PUNK.profile_debug("commands", path: path) do
|
13
|
-
Dir.glob(File.join(path,
|
13
|
+
Dir.glob(File.join(path, "**/*.rb")).sort.each { |file| require(file) }
|
14
14
|
end
|
15
15
|
case target
|
16
16
|
when :commander
|
17
|
-
require_relative
|
17
|
+
require_relative "commander"
|
18
18
|
Command.commander
|
19
19
|
when :pry
|
20
|
-
require_relative
|
20
|
+
require_relative "pry"
|
21
21
|
Command.pry
|
22
22
|
when :spec
|
23
23
|
Command.spec(scope)
|
data/lib/punk/core/env.rb
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require
|
3
|
+
require "active_support/string_inquirer"
|
4
4
|
|
5
|
-
require
|
6
|
-
require
|
7
|
-
require
|
5
|
+
require "date"
|
6
|
+
require "fileutils"
|
7
|
+
require "dotenv"
|
8
8
|
|
9
9
|
module PUNK
|
10
10
|
class Env < Settings
|
11
11
|
def logger
|
12
|
-
SemanticLogger[
|
12
|
+
SemanticLogger["PUNK::Env"]
|
13
13
|
end
|
14
14
|
|
15
15
|
def initialize(*args)
|
@@ -47,10 +47,10 @@ module PUNK
|
|
47
47
|
private
|
48
48
|
|
49
49
|
def _load
|
50
|
-
_load_environment(File.join(PUNK.store.args.path,
|
50
|
+
_load_environment(File.join(PUNK.store.args.path, "..", "env"), ENV.fetch("PUNK_ENV"), PUNK.store.args.task)
|
51
51
|
@schema = {}
|
52
|
-
_load_schemas(File.join(__dir__,
|
53
|
-
_load_schemas(File.join(PUNK.store.args.path,
|
52
|
+
_load_schemas(File.join(__dir__, "..", "config"), ENV.fetch("PUNK_ENV"), PUNK.store.args.task)
|
53
|
+
_load_schemas(File.join(PUNK.store.args.path, "config"), ENV.fetch("PUNK_ENV"), PUNK.store.args.task)
|
54
54
|
@values = @schema.keys.zip(Array.new(@schema.length, nil)).to_h
|
55
55
|
_add_config(
|
56
56
|
task: PUNK.store.args.task,
|
@@ -58,8 +58,8 @@ module PUNK
|
|
58
58
|
path: PUNK.store.args.path
|
59
59
|
}
|
60
60
|
)
|
61
|
-
_load_configs(File.join(__dir__,
|
62
|
-
_load_configs(File.join(PUNK.store.args.path,
|
61
|
+
_load_configs(File.join(__dir__, "..", "config"), ENV.fetch("PUNK_ENV"), PUNK.store.args.task)
|
62
|
+
_load_configs(File.join(PUNK.store.args.path, "config"), ENV.fetch("PUNK_ENV"), PUNK.store.args.task)
|
63
63
|
_add_environment
|
64
64
|
_add_arguments
|
65
65
|
_validate
|
@@ -84,7 +84,7 @@ module PUNK
|
|
84
84
|
def _unflatten(data)
|
85
85
|
results = {}
|
86
86
|
data.each do |key, value|
|
87
|
-
name = key.join(
|
87
|
+
name = key.join(".")
|
88
88
|
search = results
|
89
89
|
while key.length > 1
|
90
90
|
item = key.shift
|
@@ -108,12 +108,12 @@ module PUNK
|
|
108
108
|
required = false
|
109
109
|
key.map! do |name|
|
110
110
|
match = /^(_?)([a-z_]+)(!?)$/.match(name)
|
111
|
-
raise InternalServerError, "Invalid schema key: #{key.join(
|
112
|
-
override &&= match[1] !=
|
113
|
-
required ||= match[3] ==
|
111
|
+
raise InternalServerError, "Invalid schema key: #{key.join(".")}" if match.nil?
|
112
|
+
override &&= match[1] != "_"
|
113
|
+
required ||= match[3] == "!"
|
114
114
|
match[2].to_sym
|
115
115
|
end
|
116
|
-
raise InternalServerError, "Duplicate schema key: #{key.join(
|
116
|
+
raise InternalServerError, "Duplicate schema key: #{key.join(".")}" if @schema.key?(key)
|
117
117
|
@schema[key] = {
|
118
118
|
required: required,
|
119
119
|
override: override,
|
@@ -122,9 +122,9 @@ module PUNK
|
|
122
122
|
end
|
123
123
|
end
|
124
124
|
|
125
|
-
def _load_schemas(base, name=nil, dir=nil)
|
125
|
+
def _load_schemas(base, name = nil, dir = nil)
|
126
126
|
base = File.expand_path(base)
|
127
|
-
_load_schema(File.join(base,
|
127
|
+
_load_schema(File.join(base, "schema.json"))
|
128
128
|
_load_schema(File.join(base, "schema_#{name}.json")) unless name.nil?
|
129
129
|
_load_schemas(File.join(base, dir), name) unless dir.nil?
|
130
130
|
end
|
@@ -133,7 +133,7 @@ module PUNK
|
|
133
133
|
@schema.each do |key, value|
|
134
134
|
next unless value[:required]
|
135
135
|
current_value = @values[key]
|
136
|
-
raise InternalServerError, "Missing required configuration value: #{key.join(
|
136
|
+
raise InternalServerError, "Missing required configuration value: #{key.join(".")}" if current_value.nil?
|
137
137
|
end
|
138
138
|
end
|
139
139
|
|
@@ -212,16 +212,16 @@ module PUNK
|
|
212
212
|
else
|
213
213
|
raise InternalServerError, "Unknown validation: #{validation}"
|
214
214
|
end
|
215
|
-
raise InternalServerError, "#{value} is invalid for #{key.join(
|
215
|
+
raise InternalServerError, "#{value} is invalid for #{key.join(".")}: #{validation}" unless valid
|
216
216
|
value
|
217
217
|
end
|
218
218
|
|
219
219
|
def _add_value(key, value)
|
220
220
|
schema = @schema[key]
|
221
|
-
raise InternalServerError, "Configuration not found in schema: #{key.join(
|
221
|
+
raise InternalServerError, "Configuration not found in schema: #{key.join(".")}" if schema.nil?
|
222
222
|
unless schema[:override]
|
223
223
|
current_value = @values[key]
|
224
|
-
raise InternalServerError, "Cannot override configuration value: #{key.join(
|
224
|
+
raise InternalServerError, "Cannot override configuration value: #{key.join(".")}" unless current_value.nil?
|
225
225
|
end
|
226
226
|
@values[key] = _typecast(key, value, schema[:validate], schema[:required])
|
227
227
|
end
|
@@ -238,9 +238,9 @@ module PUNK
|
|
238
238
|
_add_config(ActiveSupport::JSON.decode(File.read(path)))
|
239
239
|
end
|
240
240
|
|
241
|
-
def _load_configs(base, name=nil, dir=nil)
|
241
|
+
def _load_configs(base, name = nil, dir = nil)
|
242
242
|
base = File.expand_path(base)
|
243
|
-
_load_config(File.join(base,
|
243
|
+
_load_config(File.join(base, "defaults.json"))
|
244
244
|
_load_config(File.join(base, "#{name}.json")) unless name.nil?
|
245
245
|
_load_configs(File.join(base, dir), name) unless dir.nil?
|
246
246
|
end
|
@@ -251,12 +251,12 @@ module PUNK
|
|
251
251
|
Dotenv.load(path)
|
252
252
|
end
|
253
253
|
|
254
|
-
def _load_environment(base, name=nil, dir=nil)
|
254
|
+
def _load_environment(base, name = nil, dir = nil)
|
255
255
|
base = File.expand_path(base)
|
256
256
|
_load_environment(File.join(base, dir), name) unless dir.nil?
|
257
|
-
_load_dotenv(File.join(base,
|
257
|
+
_load_dotenv(File.join(base, "locals.sh"))
|
258
258
|
_load_dotenv(File.join(base, "#{name}.sh"))
|
259
|
-
_load_dotenv(File.join(base,
|
259
|
+
_load_dotenv(File.join(base, "defaults.sh"))
|
260
260
|
end
|
261
261
|
|
262
262
|
def _add_environment
|
@@ -264,7 +264,7 @@ module PUNK
|
|
264
264
|
key = key.downcase
|
265
265
|
match = /^punk_(.*)$/.match(key)
|
266
266
|
next unless match
|
267
|
-
key = match[1].split(
|
267
|
+
key = match[1].split("_").reject(&:empty?).map(&:to_sym)
|
268
268
|
_add_value(key, value)
|
269
269
|
end
|
270
270
|
end
|
data/lib/punk/core/exec.rb
CHANGED
@@ -7,24 +7,24 @@ module PUNK
|
|
7
7
|
if PUNK.get.app.reloadable?
|
8
8
|
PUNK.loader.require(path)
|
9
9
|
else
|
10
|
-
Dir.glob(File.join(path,
|
10
|
+
Dir.glob(File.join(path, "**/*.rb")).sort.each { |file| require(file) }
|
11
11
|
end
|
12
12
|
end
|
13
13
|
end
|
14
14
|
end
|
15
15
|
|
16
16
|
PUNK::Interface.register(:loader) do
|
17
|
-
require
|
17
|
+
require "rack/unreloader"
|
18
18
|
raise PUNK::InternalServerError, "App is not reloadable" unless PUNK.get.app.reloadable?
|
19
19
|
retval = Rack::Unreloader.new { PUNK::App }
|
20
|
-
require_relative
|
20
|
+
require_relative "./monkey_unreloader"
|
21
21
|
retval
|
22
22
|
end
|
23
23
|
|
24
24
|
PUNK::Interface.register(:app) do
|
25
|
-
require_relative
|
26
|
-
PUNK.require_all(File.join(__dir__,
|
27
|
-
PUNK.require_all(File.join(PUNK.get.app.path,
|
25
|
+
require_relative "app"
|
26
|
+
PUNK.require_all(File.join(__dir__, "..", "routes"))
|
27
|
+
PUNK.require_all(File.join(PUNK.get.app.path, "routes"))
|
28
28
|
retval = PUNK.get.app.reloadable ? PUNK.loader : PUNK::App.freeze.app
|
29
29
|
SemanticLogger.flush
|
30
30
|
retval
|
@@ -32,8 +32,8 @@ end
|
|
32
32
|
|
33
33
|
PUNK.inject :loader, :app
|
34
34
|
|
35
|
-
[
|
36
|
-
PUNK.require_all(File.join(__dir__,
|
35
|
+
["actions", "models", "views", "services", "workers"].each do |dir|
|
36
|
+
PUNK.require_all(File.join(__dir__, "..", dir))
|
37
37
|
PUNK.require_all(File.join(PUNK.get.app.path, dir))
|
38
38
|
end
|
39
39
|
|
data/lib/punk/core/interface.rb
CHANGED
@@ -1,18 +1,18 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require
|
4
|
-
require
|
5
|
-
require
|
3
|
+
require "active_support/dependencies/autoload"
|
4
|
+
require "active_support/core_ext"
|
5
|
+
require "active_support/json"
|
6
6
|
|
7
|
-
require
|
7
|
+
require "oj"
|
8
8
|
Oj.optimize_rails
|
9
9
|
|
10
|
-
require
|
11
|
-
require
|
10
|
+
require "forwardable"
|
11
|
+
require "dim"
|
12
12
|
|
13
|
-
require_relative
|
14
|
-
require_relative
|
15
|
-
require_relative
|
13
|
+
require_relative "version"
|
14
|
+
require_relative "error"
|
15
|
+
require_relative "monkey"
|
16
16
|
|
17
17
|
module PUNK
|
18
18
|
extend SingleForwardable
|
@@ -27,30 +27,30 @@ module PUNK
|
|
27
27
|
end
|
28
28
|
|
29
29
|
PUNK::Interface.register(:store) do
|
30
|
-
require
|
30
|
+
require "ostruct"
|
31
31
|
store = OpenStruct.new
|
32
32
|
store.state = :included
|
33
33
|
Thread.current[:rr] = store
|
34
34
|
end
|
35
35
|
|
36
36
|
PUNK::Interface.register(:bootstrap) do
|
37
|
-
raise PUNK::InternalServerError,
|
38
|
-
require_relative
|
39
|
-
require_relative
|
37
|
+
raise PUNK::InternalServerError, "Must call PUNK.init first!" if PUNK.state != :initialised
|
38
|
+
require_relative "settings"
|
39
|
+
require_relative "logger"
|
40
40
|
end
|
41
41
|
|
42
42
|
PUNK::Interface.register(:config) do |c|
|
43
43
|
c.bootstrap
|
44
|
-
PUNK.profile_trace(
|
45
|
-
require_relative
|
44
|
+
PUNK.profile_trace("config") do
|
45
|
+
require_relative "env"
|
46
46
|
PUNK.get.load!
|
47
|
-
require_relative
|
47
|
+
require_relative "commands"
|
48
48
|
end
|
49
49
|
end
|
50
50
|
|
51
51
|
PUNK::Interface.register(:boot) do |c|
|
52
52
|
c.config
|
53
|
-
retval = PUNK.profile_trace(
|
53
|
+
retval = PUNK.profile_trace("boot") { require_relative "boot" }
|
54
54
|
PUNK.logger.info "Punk! v#{PUNK.version}"
|
55
55
|
PUNK.db.fetch("SELECT version(), timeofday()") do |row|
|
56
56
|
row.each_value { |value| PUNK.logger.info value }
|
@@ -60,12 +60,12 @@ end
|
|
60
60
|
|
61
61
|
PUNK::Interface.register(:load) do |c|
|
62
62
|
c.boot
|
63
|
-
PUNK.profile_debug(
|
63
|
+
PUNK.profile_debug("load") { require_relative "load" }
|
64
64
|
end
|
65
65
|
|
66
66
|
PUNK::Interface.register(:exec) do |c|
|
67
67
|
c.load
|
68
|
-
retval = PUNK.profile_debug(
|
68
|
+
retval = PUNK.profile_debug("exec") { require_relative "exec" }
|
69
69
|
PUNK.logger.tagged(PUNK.env, PUNK.task) do
|
70
70
|
PUNK.logger.info PUNK.get.app.name
|
71
71
|
end
|
data/lib/punk/core/load.rb
CHANGED
data/lib/punk/core/logger.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require
|
3
|
+
require "semantic_logger"
|
4
4
|
|
5
5
|
module PUNK
|
6
6
|
include SemanticLogger::Loggable
|
@@ -22,9 +22,9 @@ module PUNK
|
|
22
22
|
|
23
23
|
SemanticLogger.default_level =
|
24
24
|
case PUNK.store.args.task
|
25
|
-
when
|
25
|
+
when "console", "script"
|
26
26
|
:info
|
27
|
-
when
|
27
|
+
when "spec"
|
28
28
|
:debug
|
29
29
|
else
|
30
30
|
:trace
|
data/lib/punk/core/monkey.rb
CHANGED
data/lib/punk/core/pry.rb
CHANGED
@@ -22,9 +22,9 @@ ensure
|
|
22
22
|
end
|
23
23
|
|
24
24
|
def reload!
|
25
|
-
[
|
25
|
+
["actions", "models", "views", "services", "workers"].each do |dir|
|
26
26
|
path = File.join(PUNK.get.app.path, dir)
|
27
|
-
Dir.glob(File.join(path,
|
27
|
+
Dir.glob(File.join(path, "**/*.rb")).each { |file| load(file) }
|
28
28
|
end
|
29
29
|
"Reloaded all actions, models, views, services and workers."
|
30
30
|
ensure
|
data/lib/punk/core/settings.rb
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require
|
3
|
+
require "dot_hash"
|
4
4
|
|
5
5
|
module PUNK
|
6
6
|
class Settings < DotHash::Settings
|
7
|
-
|
7
|
+
alias_method :key?, :has_key?
|
8
8
|
|
9
9
|
delegate :inspect, to: :_inspect_hash
|
10
10
|
|
@@ -13,9 +13,9 @@ module PUNK
|
|
13
13
|
if match && key?(match[1]) && !key?(key)
|
14
14
|
value = execute(match[1], *args, &block)
|
15
15
|
case match[2]
|
16
|
-
when
|
16
|
+
when "?"
|
17
17
|
return value if value.is_a?(TrueClass) || value.is_a?(FalseClass)
|
18
|
-
when
|
18
|
+
when "!"
|
19
19
|
raise InternalServerError, "Value is nil: #{key}" if value.nil?
|
20
20
|
return value
|
21
21
|
end
|
data/lib/punk/core/version.rb
CHANGED
data/lib/punk/core/worker.rb
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require_relative
|
4
|
-
require
|
5
|
-
require
|
3
|
+
require_relative "../../punk"
|
4
|
+
require "sidekiq"
|
5
|
+
require "sidekiq-cron"
|
6
6
|
|
7
|
-
PUNK.init(task:
|
7
|
+
PUNK.init(task: "worker", config: {app: {name: "Roadie"}}).exec
|
8
8
|
|
9
|
-
Sidekiq.logger = SemanticLogger[
|
9
|
+
Sidekiq.logger = SemanticLogger["PUNK::SKQ"]
|
10
10
|
Sidekiq.logger.class.alias_method(:with_context, :tagged)
|
11
11
|
|
12
|
-
path = File.expand_path(File.join(PUNK.get.app.path,
|
12
|
+
path = File.expand_path(File.join(PUNK.get.app.path, "..", "config", "schedule.yml"))
|
13
13
|
Sidekiq::Cron::Job.load_from_hash(YAML.load_file(path))
|
data/lib/punk/framework/all.rb
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require_relative
|
4
|
-
require_relative
|
5
|
-
require_relative
|
6
|
-
require_relative
|
7
|
-
require_relative
|
8
|
-
require_relative
|
9
|
-
require_relative
|
10
|
-
require_relative
|
3
|
+
require_relative "plugins/all"
|
4
|
+
require_relative "model"
|
5
|
+
require_relative "runnable"
|
6
|
+
require_relative "service"
|
7
|
+
require_relative "worker"
|
8
|
+
require_relative "action"
|
9
|
+
require_relative "view"
|
10
|
+
require_relative "command"
|
data/lib/punk/framework/model.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require
|
3
|
+
require "aasm"
|
4
4
|
|
5
5
|
AASM::Configuration.hide_warnings = true
|
6
6
|
|
@@ -22,17 +22,18 @@ module PUNK
|
|
22
22
|
|
23
23
|
plugin PUNK::Plugins::Validation
|
24
24
|
|
25
|
-
def validate
|
25
|
+
def validate
|
26
|
+
end
|
26
27
|
|
27
28
|
def inspect
|
28
29
|
id.present? ? "#{id}|#{self}" : to_s
|
29
30
|
end
|
30
31
|
|
31
|
-
def self.sample_dataset(count=1)
|
32
|
-
order(Sequel.lit(
|
32
|
+
def self.sample_dataset(count = 1)
|
33
|
+
order(Sequel.lit("random()")).limit(count)
|
33
34
|
end
|
34
35
|
|
35
|
-
def self.sample(count=1)
|
36
|
+
def self.sample(count = 1)
|
36
37
|
query = sample_dataset(count)
|
37
38
|
count == 1 ? query.first : query.all
|
38
39
|
end
|