punk 0.0.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.
Files changed (74) hide show
  1. checksums.yaml +7 -0
  2. data/.document +5 -0
  3. data/Gemfile +121 -0
  4. data/Gemfile.lock +353 -0
  5. data/LICENSE +24 -0
  6. data/README.md +7 -0
  7. data/Rakefile +31 -0
  8. data/VERSION +1 -0
  9. data/bin/punk +18 -0
  10. data/lib/punk.rb +32 -0
  11. data/lib/punk/commands/auth.rb +57 -0
  12. data/lib/punk/commands/generate.rb +54 -0
  13. data/lib/punk/commands/http.rb +71 -0
  14. data/lib/punk/commands/list.rb +28 -0
  15. data/lib/punk/config/console/defaults.json +5 -0
  16. data/lib/punk/config/defaults.json +47 -0
  17. data/lib/punk/config/schema.json +55 -0
  18. data/lib/punk/config/script/defaults.json +5 -0
  19. data/lib/punk/config/server/development.json +9 -0
  20. data/lib/punk/config/spec/defaults.json +5 -0
  21. data/lib/punk/core/app.rb +233 -0
  22. data/lib/punk/core/boot.rb +9 -0
  23. data/lib/punk/core/cli.rb +13 -0
  24. data/lib/punk/core/commander.rb +82 -0
  25. data/lib/punk/core/commands.rb +26 -0
  26. data/lib/punk/core/env.rb +290 -0
  27. data/lib/punk/core/error.rb +10 -0
  28. data/lib/punk/core/exec.rb +38 -0
  29. data/lib/punk/core/interface.rb +76 -0
  30. data/lib/punk/core/load.rb +9 -0
  31. data/lib/punk/core/logger.rb +33 -0
  32. data/lib/punk/core/monkey.rb +7 -0
  33. data/lib/punk/core/monkey_unreloader.rb +18 -0
  34. data/lib/punk/core/pry.rb +39 -0
  35. data/lib/punk/core/settings.rb +38 -0
  36. data/lib/punk/core/version.rb +7 -0
  37. data/lib/punk/core/worker.rb +13 -0
  38. data/lib/punk/framework/action.rb +29 -0
  39. data/lib/punk/framework/all.rb +10 -0
  40. data/lib/punk/framework/command.rb +117 -0
  41. data/lib/punk/framework/model.rb +52 -0
  42. data/lib/punk/framework/plugins/all.rb +3 -0
  43. data/lib/punk/framework/plugins/validation.rb +55 -0
  44. data/lib/punk/framework/runnable.rb +31 -0
  45. data/lib/punk/framework/service.rb +67 -0
  46. data/lib/punk/framework/view.rb +26 -0
  47. data/lib/punk/framework/worker.rb +34 -0
  48. data/lib/punk/helpers/all.rb +8 -0
  49. data/lib/punk/helpers/loggable.rb +79 -0
  50. data/lib/punk/helpers/publishable.rb +9 -0
  51. data/lib/punk/helpers/renderable.rb +75 -0
  52. data/lib/punk/helpers/swagger.rb +20 -0
  53. data/lib/punk/helpers/validatable.rb +57 -0
  54. data/lib/punk/plugins/all.rb +4 -0
  55. data/lib/punk/plugins/cors.rb +19 -0
  56. data/lib/punk/plugins/ssl.rb +13 -0
  57. data/lib/punk/startup/cache.rb +11 -0
  58. data/lib/punk/startup/database.rb +57 -0
  59. data/lib/punk/startup/environment.rb +10 -0
  60. data/lib/punk/startup/logger.rb +20 -0
  61. data/lib/punk/startup/task.rb +10 -0
  62. data/lib/punk/templates/fail.jbuilder +4 -0
  63. data/lib/punk/templates/fail.rcsv +6 -0
  64. data/lib/punk/templates/fail.slim +9 -0
  65. data/lib/punk/templates/fail.xml.slim +6 -0
  66. data/lib/punk/templates/info.jbuilder +3 -0
  67. data/lib/punk/templates/info.rcsv +2 -0
  68. data/lib/punk/templates/info.slim +6 -0
  69. data/lib/punk/templates/info.xml.slim +3 -0
  70. data/lib/punk/views/all.rb +4 -0
  71. data/lib/punk/views/fail.rb +21 -0
  72. data/lib/punk/views/info.rb +20 -0
  73. data/punk.gemspec +246 -0
  74. metadata +747 -0
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ class SwaggerRouteHandler < YARD::Handlers::Ruby::Base
4
+ handles method_call(:route)
5
+ namespace_only
6
+ process do
7
+ name = statement.parameters.first.jump(:tstring_content, :ident).source
8
+ object = YARD::CodeObjects::ClassObject.new(namespace, name)
9
+ register(object)
10
+ parse_block(statement.last.last, namespace: object, scope: :class)
11
+ end
12
+ end
13
+
14
+ class SwaggerOnHandler < YARD::Handlers::Ruby::Base
15
+ handles method_call(:on)
16
+ namespace_only
17
+ process do
18
+ parse_block(statement.last.last, namespace: namespace, scope: :class)
19
+ end
20
+ end
@@ -0,0 +1,57 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'sequel/plugins/validation_helpers'
4
+ require_relative '../framework/plugins/validation'
5
+
6
+ module PUNK
7
+ module Validatable
8
+ include Sequel::Plugins::ValidationHelpers::InstanceMethods
9
+ include PUNK::Plugins::Validation::InstanceMethods
10
+
11
+ undef :validates_presence
12
+ undef :validates_schema_types
13
+ undef :validates_unique
14
+
15
+ attr_accessor :errors
16
+
17
+ def valid?
18
+ @errors ||= Sequel::Model::Errors.new
19
+ errors.clear
20
+ validate
21
+ errors.empty?
22
+ end
23
+
24
+ def validate; end
25
+
26
+ def validates_not_empty(atts, opts=Sequel::OPTS)
27
+ validatable_attributes_for_type(:not_empty, atts, opts) { |_a, v, m| validation_error_message(m) if v.blank? }
28
+ end
29
+
30
+ def default_validation_helpers_options(type)
31
+ case type
32
+ when :not_empty
33
+ {
34
+ message: -> { "is empty" }
35
+ }
36
+ else
37
+ Sequel::Plugins::ValidationHelpers::DEFAULT_OPTIONS[type]
38
+ end
39
+ end
40
+
41
+ def get_column_value(name)
42
+ value =
43
+ begin
44
+ instance_variable_get(name)
45
+ rescue StandardError
46
+ nil
47
+ end
48
+ value ||=
49
+ begin
50
+ send(name)
51
+ rescue StandardError
52
+ nil
53
+ end
54
+ value
55
+ end
56
+ end
57
+ end
@@ -0,0 +1,4 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'cors'
4
+ require_relative 'ssl'
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ class Roda
4
+ module RodaPlugins
5
+ module Cors
6
+ def self.configure(app, origin)
7
+ return if origin.nil?
8
+ require 'rack/cors'
9
+ app.use ::Rack::Cors do
10
+ allow do
11
+ origins origin
12
+ resource '*', headers: :any, methods: :any
13
+ end
14
+ end
15
+ end
16
+ end
17
+ register_plugin(:cors, Cors)
18
+ end
19
+ end
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ class Roda
4
+ module RodaPlugins
5
+ module Ssl
6
+ def self.configure(app)
7
+ require 'rack/ssl-enforcer'
8
+ app.use ::Rack::SslEnforcer
9
+ end
10
+ end
11
+ register_plugin(:ssl, Ssl)
12
+ end
13
+ end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'dalli'
4
+
5
+ PUNK::Interface.register(:cache) do
6
+ PUNK.profile_debug('cache_connect', servers: PUNK.get.cache.servers) do
7
+ Dalli::Client.new(PUNK.get.cache.servers.split(','), PUNK.get.cache.options)
8
+ end
9
+ end
10
+
11
+ PUNK.inject :cache
@@ -0,0 +1,57 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'sequel'
4
+
5
+ module Sequel
6
+ def self.json_parser_error_class
7
+ ActiveSupport::JSON.parse_error
8
+ end
9
+
10
+ def self.parse_json(json)
11
+ ActiveSupport::JSON.decode(json).deep_symbolize_keys
12
+ end
13
+
14
+ class Database
15
+ def log_connection_yield(sql, conn, args=nil, &block)
16
+ return unless @loggers.first
17
+ if conn && log_connection_info
18
+ @loggers.first.tagged(conn.__id__) do
19
+ log_semantic(sql, args, &block)
20
+ end
21
+ else
22
+ log_semantic(sql, args, &block)
23
+ end
24
+ end
25
+
26
+ def log_semantic(sql, args)
27
+ return unless @loggers.first
28
+ message = "#{sql}#{"; #{args.inspect}" if args}"
29
+ if log_warn_duration
30
+ @loggers.first.measure_warn(message, min_duration: log_warn_duration) do
31
+ yield
32
+ end
33
+ else
34
+ @loggers.first.measure_debug(message) do
35
+ yield
36
+ end
37
+ end
38
+ end
39
+ end
40
+ end
41
+
42
+ module PUNK
43
+ def self.migration(&block)
44
+ Sequel::MigrationDSL.create(&block)
45
+ end
46
+ end
47
+
48
+ PUNK::Interface.register(:db) do
49
+ PUNK.profile_debug('db_connect', url: PUNK.get.db.url) do
50
+ pg = Sequel.connect(PUNK.get.db.url, logger: SemanticLogger['PUNK::SQL'])
51
+ pg.extension :pg_enum, :pg_range, :pg_array, :pg_json, :pg_row, :pg_timestamptz, :pg_inet
52
+ Sequel.extension :pg_array_ops, :pg_range_ops, :pg_json_ops, :pg_row_ops, :named_timezones, :thread_local_timezones
53
+ pg
54
+ end
55
+ end
56
+
57
+ PUNK.inject :db
@@ -0,0 +1,10 @@
1
+ # frozen_string_literal: true
2
+
3
+ case PUNK.env
4
+ when 'test', 'development'
5
+ require 'amazing_print'
6
+ require 'byebug'
7
+ require 'rubocop'
8
+ require 'rubocop-rspec'
9
+ require 'rubocop-sequel'
10
+ end
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ SemanticLogger.close
4
+ SemanticLogger.default_level = PUNK.get.log.level
5
+ if PUNK.get.log.enabled?
6
+ case PUNK.get.log.type
7
+ when :stderr
8
+ SemanticLogger.add_appender(io: $stderr)
9
+ when :stdout
10
+ $stdout.sync = true
11
+ SemanticLogger.add_appender(io: $stdout, formatter: :color)
12
+ when :file
13
+ subdir = PUNK.task.server? ? '.' : PUNK.task
14
+ path = PUNK.get.log.path || File.join(PUNK.get.app.path, '..', 'log', subdir, "#{PUNK.env}.log")
15
+ FileUtils.mkdir_p(File.dirname(path))
16
+ SemanticLogger.add_appender(file_name: path, formatter: :color)
17
+ else
18
+ raise InternalServerError, "Unknown log type :#{PUNK.get.log.type}!"
19
+ end
20
+ end
@@ -0,0 +1,10 @@
1
+ # frozen_string_literal: true
2
+
3
+ case PUNK.task
4
+ when 'spec'
5
+ require 'rspec'
6
+ require 'rspec/its'
7
+ require 'sidekiq/testing'
8
+ when 'console'
9
+ AwesomePrint.pry! if defined?(AwesomePrint)
10
+ end
@@ -0,0 +1,4 @@
1
+ # frozen_string_literal: true
2
+
3
+ json.message message
4
+ json.errors error_messages
@@ -0,0 +1,6 @@
1
+ csv << ['ERRORS']
2
+ csv << [message]
3
+ csv << [status]
4
+ error_messages.each do |error|
5
+ csv << [error]
6
+ end
@@ -0,0 +1,9 @@
1
+ doctype html
2
+ html
3
+ head
4
+ title= message
5
+ body
6
+ h1= "#{message} (#{status})"
7
+ ul
8
+ - error_messages.each do |error|
9
+ li= error
@@ -0,0 +1,6 @@
1
+ doctype xml
2
+ errors
3
+ - message= message
4
+ - status= status
5
+ - error_messages.each do |error|
6
+ error= error
@@ -0,0 +1,3 @@
1
+ # frozen_string_literal: true
2
+
3
+ json.message message
@@ -0,0 +1,2 @@
1
+ csv << ['MESSAGE']
2
+ csv << [message]
@@ -0,0 +1,6 @@
1
+ doctype html
2
+ html
3
+ head
4
+ title Info
5
+ body
6
+ h1= message
@@ -0,0 +1,3 @@
1
+ doctype xml
2
+ info
3
+ message= message
@@ -0,0 +1,4 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'info'
4
+ require_relative 'fail'
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ module PUNK
4
+ # @model Error
5
+ # @property message(required) [string] some information for the user to see
6
+ # @property errors(required) [Array<string>] a list of errors
7
+ class Fail < View
8
+ args :message, :error_messages, :status
9
+
10
+ def process
11
+ logger.warn "#{message} (#{status}): #{error_messages.to_sentence}"
12
+ 'fail'
13
+ end
14
+
15
+ protected
16
+
17
+ def _dir
18
+ File.join(__dir__, '..', 'templates')
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ module PUNK
4
+ # @model Info
5
+ # @property message(required) [string] some information for the user to see
6
+ class Info < View
7
+ args :message
8
+
9
+ def process
10
+ logger.info message
11
+ 'info'
12
+ end
13
+
14
+ protected
15
+
16
+ def _dir
17
+ File.join(__dir__, '..', 'templates')
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,246 @@
1
+ # Generated by juwelier
2
+ # DO NOT EDIT THIS FILE DIRECTLY
3
+ # Instead, edit Juwelier::Tasks in Rakefile, and run 'rake gemspec'
4
+ # -*- encoding: utf-8 -*-
5
+ # stub: punk 0.0.1 ruby lib
6
+
7
+ Gem::Specification.new do |s|
8
+ s.name = "punk".freeze
9
+ s.version = "0.0.1"
10
+
11
+ s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
12
+ s.require_paths = ["lib".freeze]
13
+ s.authors = ["Lloyd Kranzky".freeze]
14
+ s.date = "2021-01-07"
15
+ s.description = "".freeze
16
+ s.email = "lloyd@kranzky.com".freeze
17
+ s.executables = ["punk".freeze]
18
+ s.extra_rdoc_files = [
19
+ "LICENSE",
20
+ "README.md"
21
+ ]
22
+ s.files = [
23
+ ".document",
24
+ "Gemfile",
25
+ "Gemfile.lock",
26
+ "LICENSE",
27
+ "README.md",
28
+ "Rakefile",
29
+ "VERSION",
30
+ "bin/punk",
31
+ "lib/punk.rb",
32
+ "lib/punk/commands/auth.rb",
33
+ "lib/punk/commands/generate.rb",
34
+ "lib/punk/commands/http.rb",
35
+ "lib/punk/commands/list.rb",
36
+ "lib/punk/config/console/defaults.json",
37
+ "lib/punk/config/defaults.json",
38
+ "lib/punk/config/schema.json",
39
+ "lib/punk/config/script/defaults.json",
40
+ "lib/punk/config/server/development.json",
41
+ "lib/punk/config/spec/defaults.json",
42
+ "lib/punk/core/app.rb",
43
+ "lib/punk/core/boot.rb",
44
+ "lib/punk/core/cli.rb",
45
+ "lib/punk/core/commander.rb",
46
+ "lib/punk/core/commands.rb",
47
+ "lib/punk/core/env.rb",
48
+ "lib/punk/core/error.rb",
49
+ "lib/punk/core/exec.rb",
50
+ "lib/punk/core/interface.rb",
51
+ "lib/punk/core/load.rb",
52
+ "lib/punk/core/logger.rb",
53
+ "lib/punk/core/monkey.rb",
54
+ "lib/punk/core/monkey_unreloader.rb",
55
+ "lib/punk/core/pry.rb",
56
+ "lib/punk/core/settings.rb",
57
+ "lib/punk/core/version.rb",
58
+ "lib/punk/core/worker.rb",
59
+ "lib/punk/framework/action.rb",
60
+ "lib/punk/framework/all.rb",
61
+ "lib/punk/framework/command.rb",
62
+ "lib/punk/framework/model.rb",
63
+ "lib/punk/framework/plugins/all.rb",
64
+ "lib/punk/framework/plugins/validation.rb",
65
+ "lib/punk/framework/runnable.rb",
66
+ "lib/punk/framework/service.rb",
67
+ "lib/punk/framework/view.rb",
68
+ "lib/punk/framework/worker.rb",
69
+ "lib/punk/helpers/all.rb",
70
+ "lib/punk/helpers/loggable.rb",
71
+ "lib/punk/helpers/publishable.rb",
72
+ "lib/punk/helpers/renderable.rb",
73
+ "lib/punk/helpers/swagger.rb",
74
+ "lib/punk/helpers/validatable.rb",
75
+ "lib/punk/plugins/all.rb",
76
+ "lib/punk/plugins/cors.rb",
77
+ "lib/punk/plugins/ssl.rb",
78
+ "lib/punk/startup/cache.rb",
79
+ "lib/punk/startup/database.rb",
80
+ "lib/punk/startup/environment.rb",
81
+ "lib/punk/startup/logger.rb",
82
+ "lib/punk/startup/task.rb",
83
+ "lib/punk/templates/fail.jbuilder",
84
+ "lib/punk/templates/fail.rcsv",
85
+ "lib/punk/templates/fail.slim",
86
+ "lib/punk/templates/fail.xml.slim",
87
+ "lib/punk/templates/info.jbuilder",
88
+ "lib/punk/templates/info.rcsv",
89
+ "lib/punk/templates/info.slim",
90
+ "lib/punk/templates/info.xml.slim",
91
+ "lib/punk/views/all.rb",
92
+ "lib/punk/views/fail.rb",
93
+ "lib/punk/views/info.rb",
94
+ "punk.gemspec"
95
+ ]
96
+ s.homepage = "https://github.com/kranzky/punk".freeze
97
+ s.licenses = ["UNLICENSE".freeze]
98
+ s.required_ruby_version = Gem::Requirement.new(">= 2.1".freeze)
99
+ s.rubygems_version = "3.0.9".freeze
100
+ s.summary = "Punk! is an omakase web framework for rapid prototyping.".freeze
101
+
102
+ if s.respond_to? :specification_version then
103
+ s.specification_version = 4
104
+
105
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
106
+ s.add_runtime_dependency(%q<bootsnap>.freeze, ["~> 1.5"])
107
+ s.add_runtime_dependency(%q<dim>.freeze, ["~> 1.2"])
108
+ s.add_runtime_dependency(%q<wisper>.freeze, ["~> 2.0"])
109
+ s.add_runtime_dependency(%q<papertrail>.freeze, ["~> 0.11"])
110
+ s.add_runtime_dependency(%q<semantic_logger>.freeze, ["~> 4.7"])
111
+ s.add_runtime_dependency(%q<dotenv>.freeze, ["~> 2.7"])
112
+ s.add_runtime_dependency(%q<dot_hash>.freeze, ["~> 1.1"])
113
+ s.add_runtime_dependency(%q<commander>.freeze, ["~> 4.5"])
114
+ s.add_runtime_dependency(%q<pry>.freeze, ["~> 0.13"])
115
+ s.add_runtime_dependency(%q<puma>.freeze, ["~> 5.1"])
116
+ s.add_runtime_dependency(%q<rack-cors>.freeze, ["~> 1.1"])
117
+ s.add_runtime_dependency(%q<rack-protection>.freeze, ["~> 2.1"])
118
+ s.add_runtime_dependency(%q<rack-ssl-enforcer>.freeze, ["~> 0.2"])
119
+ s.add_runtime_dependency(%q<rack-unreloader>.freeze, ["~> 1.7"])
120
+ s.add_runtime_dependency(%q<dalli>.freeze, ["~> 2.7"])
121
+ s.add_runtime_dependency(%q<pg>.freeze, ["~> 1.2"])
122
+ s.add_runtime_dependency(%q<sequel_pg>.freeze, ["~> 1.14"])
123
+ s.add_runtime_dependency(%q<sequel>.freeze, ["~> 5.40"])
124
+ s.add_runtime_dependency(%q<aasm>.freeze, ["~> 5.1"])
125
+ s.add_runtime_dependency(%q<http-accept>.freeze, ["~> 2.1"])
126
+ s.add_runtime_dependency(%q<maxmind-db>.freeze, ["~> 1.1"])
127
+ s.add_runtime_dependency(%q<rbnacl>.freeze, ["~> 7.1"])
128
+ s.add_runtime_dependency(%q<userstack>.freeze, ["~> 0.1"])
129
+ s.add_runtime_dependency(%q<sidekiq>.freeze, ["~> 6.1"])
130
+ s.add_runtime_dependency(%q<sidekiq-cron>.freeze, ["~> 1.2"])
131
+ s.add_runtime_dependency(%q<mailgun-ruby>.freeze, ["~> 1.2"])
132
+ s.add_runtime_dependency(%q<plivo>.freeze, ["~> 4.15"])
133
+ s.add_runtime_dependency(%q<roda>.freeze, ["~> 3.39"])
134
+ s.add_runtime_dependency(%q<roda-route_list>.freeze, ["~> 2.1"])
135
+ s.add_runtime_dependency(%q<slim>.freeze, ["~> 4.1"])
136
+ s.add_runtime_dependency(%q<jbuilder>.freeze, ["~> 2.10"])
137
+ s.add_runtime_dependency(%q<oj>.freeze, ["~> 3.10"])
138
+ s.add_runtime_dependency(%q<tilt-jbuilder>.freeze, ["~> 0.7"])
139
+ s.add_runtime_dependency(%q<rdoc>.freeze, ["~> 6.3"])
140
+ s.add_runtime_dependency(%q<swagger_yard>.freeze, ["~> 1.0"])
141
+ s.add_runtime_dependency(%q<activesupport>.freeze, ["~> 6.1"])
142
+ s.add_runtime_dependency(%q<sentry-raven>.freeze, ["~> 3.1"])
143
+ s.add_runtime_dependency(%q<skylight>.freeze, ["~> 4.3"])
144
+ s.add_runtime_dependency(%q<phony>.freeze, ["~> 2.18"])
145
+ s.add_development_dependency(%q<gemfile_updater>.freeze, ["~> 0.1"])
146
+ s.add_development_dependency(%q<juwelier>.freeze, ["~> 2.4"])
147
+ s.add_development_dependency(%q<amazing_print>.freeze, ["~> 1.2"])
148
+ s.add_development_dependency(%q<byebug>.freeze, ["~> 11.1"])
149
+ s.add_development_dependency(%q<launchy>.freeze, ["~> 2.5"])
150
+ s.add_development_dependency(%q<pry-byebug>.freeze, ["~> 3.9"])
151
+ else
152
+ s.add_dependency(%q<bootsnap>.freeze, ["~> 1.5"])
153
+ s.add_dependency(%q<dim>.freeze, ["~> 1.2"])
154
+ s.add_dependency(%q<wisper>.freeze, ["~> 2.0"])
155
+ s.add_dependency(%q<papertrail>.freeze, ["~> 0.11"])
156
+ s.add_dependency(%q<semantic_logger>.freeze, ["~> 4.7"])
157
+ s.add_dependency(%q<dotenv>.freeze, ["~> 2.7"])
158
+ s.add_dependency(%q<dot_hash>.freeze, ["~> 1.1"])
159
+ s.add_dependency(%q<commander>.freeze, ["~> 4.5"])
160
+ s.add_dependency(%q<pry>.freeze, ["~> 0.13"])
161
+ s.add_dependency(%q<puma>.freeze, ["~> 5.1"])
162
+ s.add_dependency(%q<rack-cors>.freeze, ["~> 1.1"])
163
+ s.add_dependency(%q<rack-protection>.freeze, ["~> 2.1"])
164
+ s.add_dependency(%q<rack-ssl-enforcer>.freeze, ["~> 0.2"])
165
+ s.add_dependency(%q<rack-unreloader>.freeze, ["~> 1.7"])
166
+ s.add_dependency(%q<dalli>.freeze, ["~> 2.7"])
167
+ s.add_dependency(%q<pg>.freeze, ["~> 1.2"])
168
+ s.add_dependency(%q<sequel_pg>.freeze, ["~> 1.14"])
169
+ s.add_dependency(%q<sequel>.freeze, ["~> 5.40"])
170
+ s.add_dependency(%q<aasm>.freeze, ["~> 5.1"])
171
+ s.add_dependency(%q<http-accept>.freeze, ["~> 2.1"])
172
+ s.add_dependency(%q<maxmind-db>.freeze, ["~> 1.1"])
173
+ s.add_dependency(%q<rbnacl>.freeze, ["~> 7.1"])
174
+ s.add_dependency(%q<userstack>.freeze, ["~> 0.1"])
175
+ s.add_dependency(%q<sidekiq>.freeze, ["~> 6.1"])
176
+ s.add_dependency(%q<sidekiq-cron>.freeze, ["~> 1.2"])
177
+ s.add_dependency(%q<mailgun-ruby>.freeze, ["~> 1.2"])
178
+ s.add_dependency(%q<plivo>.freeze, ["~> 4.15"])
179
+ s.add_dependency(%q<roda>.freeze, ["~> 3.39"])
180
+ s.add_dependency(%q<roda-route_list>.freeze, ["~> 2.1"])
181
+ s.add_dependency(%q<slim>.freeze, ["~> 4.1"])
182
+ s.add_dependency(%q<jbuilder>.freeze, ["~> 2.10"])
183
+ s.add_dependency(%q<oj>.freeze, ["~> 3.10"])
184
+ s.add_dependency(%q<tilt-jbuilder>.freeze, ["~> 0.7"])
185
+ s.add_dependency(%q<rdoc>.freeze, ["~> 6.3"])
186
+ s.add_dependency(%q<swagger_yard>.freeze, ["~> 1.0"])
187
+ s.add_dependency(%q<activesupport>.freeze, ["~> 6.1"])
188
+ s.add_dependency(%q<sentry-raven>.freeze, ["~> 3.1"])
189
+ s.add_dependency(%q<skylight>.freeze, ["~> 4.3"])
190
+ s.add_dependency(%q<phony>.freeze, ["~> 2.18"])
191
+ s.add_dependency(%q<gemfile_updater>.freeze, ["~> 0.1"])
192
+ s.add_dependency(%q<juwelier>.freeze, ["~> 2.4"])
193
+ s.add_dependency(%q<amazing_print>.freeze, ["~> 1.2"])
194
+ s.add_dependency(%q<byebug>.freeze, ["~> 11.1"])
195
+ s.add_dependency(%q<launchy>.freeze, ["~> 2.5"])
196
+ s.add_dependency(%q<pry-byebug>.freeze, ["~> 3.9"])
197
+ end
198
+ else
199
+ s.add_dependency(%q<bootsnap>.freeze, ["~> 1.5"])
200
+ s.add_dependency(%q<dim>.freeze, ["~> 1.2"])
201
+ s.add_dependency(%q<wisper>.freeze, ["~> 2.0"])
202
+ s.add_dependency(%q<papertrail>.freeze, ["~> 0.11"])
203
+ s.add_dependency(%q<semantic_logger>.freeze, ["~> 4.7"])
204
+ s.add_dependency(%q<dotenv>.freeze, ["~> 2.7"])
205
+ s.add_dependency(%q<dot_hash>.freeze, ["~> 1.1"])
206
+ s.add_dependency(%q<commander>.freeze, ["~> 4.5"])
207
+ s.add_dependency(%q<pry>.freeze, ["~> 0.13"])
208
+ s.add_dependency(%q<puma>.freeze, ["~> 5.1"])
209
+ s.add_dependency(%q<rack-cors>.freeze, ["~> 1.1"])
210
+ s.add_dependency(%q<rack-protection>.freeze, ["~> 2.1"])
211
+ s.add_dependency(%q<rack-ssl-enforcer>.freeze, ["~> 0.2"])
212
+ s.add_dependency(%q<rack-unreloader>.freeze, ["~> 1.7"])
213
+ s.add_dependency(%q<dalli>.freeze, ["~> 2.7"])
214
+ s.add_dependency(%q<pg>.freeze, ["~> 1.2"])
215
+ s.add_dependency(%q<sequel_pg>.freeze, ["~> 1.14"])
216
+ s.add_dependency(%q<sequel>.freeze, ["~> 5.40"])
217
+ s.add_dependency(%q<aasm>.freeze, ["~> 5.1"])
218
+ s.add_dependency(%q<http-accept>.freeze, ["~> 2.1"])
219
+ s.add_dependency(%q<maxmind-db>.freeze, ["~> 1.1"])
220
+ s.add_dependency(%q<rbnacl>.freeze, ["~> 7.1"])
221
+ s.add_dependency(%q<userstack>.freeze, ["~> 0.1"])
222
+ s.add_dependency(%q<sidekiq>.freeze, ["~> 6.1"])
223
+ s.add_dependency(%q<sidekiq-cron>.freeze, ["~> 1.2"])
224
+ s.add_dependency(%q<mailgun-ruby>.freeze, ["~> 1.2"])
225
+ s.add_dependency(%q<plivo>.freeze, ["~> 4.15"])
226
+ s.add_dependency(%q<roda>.freeze, ["~> 3.39"])
227
+ s.add_dependency(%q<roda-route_list>.freeze, ["~> 2.1"])
228
+ s.add_dependency(%q<slim>.freeze, ["~> 4.1"])
229
+ s.add_dependency(%q<jbuilder>.freeze, ["~> 2.10"])
230
+ s.add_dependency(%q<oj>.freeze, ["~> 3.10"])
231
+ s.add_dependency(%q<tilt-jbuilder>.freeze, ["~> 0.7"])
232
+ s.add_dependency(%q<rdoc>.freeze, ["~> 6.3"])
233
+ s.add_dependency(%q<swagger_yard>.freeze, ["~> 1.0"])
234
+ s.add_dependency(%q<activesupport>.freeze, ["~> 6.1"])
235
+ s.add_dependency(%q<sentry-raven>.freeze, ["~> 3.1"])
236
+ s.add_dependency(%q<skylight>.freeze, ["~> 4.3"])
237
+ s.add_dependency(%q<phony>.freeze, ["~> 2.18"])
238
+ s.add_dependency(%q<gemfile_updater>.freeze, ["~> 0.1"])
239
+ s.add_dependency(%q<juwelier>.freeze, ["~> 2.4"])
240
+ s.add_dependency(%q<amazing_print>.freeze, ["~> 1.2"])
241
+ s.add_dependency(%q<byebug>.freeze, ["~> 11.1"])
242
+ s.add_dependency(%q<launchy>.freeze, ["~> 2.5"])
243
+ s.add_dependency(%q<pry-byebug>.freeze, ["~> 3.9"])
244
+ end
245
+ end
246
+