flame 5.0.0.rc3 → 5.0.0.rc4
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/lib/flame/application.rb +2 -8
- data/lib/flame/controller.rb +34 -1
- data/lib/flame/dispatcher.rb +22 -7
- data/lib/flame/dispatcher/request.rb +11 -1
- data/lib/flame/dispatcher/routes.rb +2 -2
- data/lib/flame/dispatcher/static.rb +1 -1
- data/lib/flame/path.rb +47 -9
- data/lib/flame/render.rb +12 -2
- data/lib/flame/router.rb +23 -5
- data/lib/flame/version.rb +1 -1
- data/template/Gemfile +1 -1
- data/template/Rakefile +6 -6
- data/template/config/puma.rb +1 -1
- data/template/server +4 -4
- metadata +17 -12
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 259cf7c25a2317589f783f23035eacedceb74b99
|
4
|
+
data.tar.gz: 3dbf704b496815c17b9fa91abccf994de48d98f1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: acc9200dcfafcbf1619fb10c64c8785ab2de5008887b1f095d1ba2fc9957fdb130606b5d374e629389b1cc5951b9f4532285e87d0be17e8198b296939b2dc66d
|
7
|
+
data.tar.gz: f0e522ab711b0235623846a4e99559b8bcb06ce8c6ae78936da29fcab4c61a832c8748f420b081873492d589a9cb8b064ad6c235aed9c76170c84e85eda3200a
|
data/lib/flame/application.rb
CHANGED
@@ -28,7 +28,7 @@ module Flame
|
|
28
28
|
def require_dirs(dirs)
|
29
29
|
caller_dir = File.dirname caller_file
|
30
30
|
dirs.each do |dir|
|
31
|
-
Dir[File.join(caller_dir, dir, '
|
31
|
+
Dir[File.join(caller_dir, dir, '**/*.rb')]
|
32
32
|
.reject { |file| File.executable?(file) }
|
33
33
|
.sort_by { |s| [File.basename(s)[0], s] }
|
34
34
|
.each { |file| require File.expand_path(file) }
|
@@ -82,8 +82,6 @@ module Flame
|
|
82
82
|
caller(2..2).first.split(':')[0]
|
83
83
|
end
|
84
84
|
|
85
|
-
using GorillaPatch::DeepMerge
|
86
|
-
|
87
85
|
## Mount controller in application class
|
88
86
|
## @param controller [Symbol] the snake-cased name of mounted controller
|
89
87
|
## (without `Controller` or `::IndexController` for namespaces)
|
@@ -105,13 +103,9 @@ module Flame
|
|
105
103
|
## end
|
106
104
|
def mount(controller_name, path = nil, &block)
|
107
105
|
## Add routes from controller to glob array
|
108
|
-
|
109
|
-
routes_refine = Router::RoutesRefine.new(
|
106
|
+
router.add Router::RoutesRefine.new(
|
110
107
|
router, namespace, controller_name, path, &block
|
111
108
|
)
|
112
|
-
|
113
|
-
router.routes.deep_merge! routes_refine.routes
|
114
|
-
router.reverse_routes.merge! routes_refine.reverse_routes
|
115
109
|
end
|
116
110
|
|
117
111
|
using GorillaPatch::Namespace
|
data/lib/flame/controller.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require 'forwardable'
|
4
|
-
require '
|
4
|
+
require 'gorilla_patch/namespace'
|
5
5
|
|
6
6
|
require_relative 'controller/path_to'
|
7
7
|
require_relative 'render'
|
@@ -40,6 +40,28 @@ module Flame
|
|
40
40
|
end
|
41
41
|
end
|
42
42
|
|
43
|
+
## Re-define public instance method from module
|
44
|
+
## @example Define actions from module in controller
|
45
|
+
## class MyController < BaseController
|
46
|
+
## include with_actions Module1
|
47
|
+
## include with_actions Module2
|
48
|
+
## ....
|
49
|
+
## end
|
50
|
+
def self.with_actions(mod, exclude: [])
|
51
|
+
Module.new do
|
52
|
+
@mod = mod
|
53
|
+
@exclude = exclude
|
54
|
+
|
55
|
+
def self.included(ctrl)
|
56
|
+
ctrl.include @mod
|
57
|
+
|
58
|
+
(@mod.public_instance_methods - @exclude).each do |meth|
|
59
|
+
ctrl.send :define_method, meth, @mod.public_instance_method(meth)
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
43
65
|
def_delegators(
|
44
66
|
:@dispatcher,
|
45
67
|
:config, :request, :params, :halt, :session, :response, :status, :body,
|
@@ -194,6 +216,17 @@ module Flame
|
|
194
216
|
parts = [modules.last] if parts.empty?
|
195
217
|
Flame::Path.merge nil, parts.join('_')
|
196
218
|
end
|
219
|
+
|
220
|
+
def refined_http_methods
|
221
|
+
@refined_http_methods ||= []
|
222
|
+
end
|
223
|
+
|
224
|
+
Flame::Router::HTTP_METHODS.each do |http_method|
|
225
|
+
downcased_http_method = http_method.downcase
|
226
|
+
define_method(downcased_http_method) do |action_path, action = nil|
|
227
|
+
refined_http_methods << [downcased_http_method, action_path, action]
|
228
|
+
end
|
229
|
+
end
|
197
230
|
end
|
198
231
|
end
|
199
232
|
end
|
data/lib/flame/dispatcher.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require '
|
3
|
+
require 'gorilla_patch/symbolize'
|
4
4
|
|
5
5
|
require_relative 'dispatcher/request'
|
6
6
|
require_relative 'dispatcher/response'
|
@@ -14,10 +14,10 @@ require_relative 'errors/route_not_found_error'
|
|
14
14
|
module Flame
|
15
15
|
## Helpers for dispatch Flame::Application#call
|
16
16
|
class Dispatcher
|
17
|
-
GEM_STATIC_FILES = File.join
|
17
|
+
GEM_STATIC_FILES = File.join(__dir__, '../../public').freeze
|
18
18
|
|
19
19
|
extend Forwardable
|
20
|
-
def_delegators :@app_class, :path_to
|
20
|
+
def_delegators :@app_class, :router, :path_to
|
21
21
|
|
22
22
|
attr_reader :request, :response
|
23
23
|
|
@@ -37,13 +37,15 @@ module Flame
|
|
37
37
|
## Start of execution the request
|
38
38
|
def run!
|
39
39
|
catch :halt do
|
40
|
+
validate_request
|
41
|
+
|
40
42
|
try_options ||
|
41
43
|
try_static ||
|
42
44
|
try_static(dir: GEM_STATIC_FILES) ||
|
43
45
|
try_route ||
|
44
46
|
halt(404)
|
45
47
|
end
|
46
|
-
response.write body unless request.
|
48
|
+
response.write body unless request.head?
|
47
49
|
response.finish
|
48
50
|
end
|
49
51
|
|
@@ -71,7 +73,13 @@ module Flame
|
|
71
73
|
|
72
74
|
## Parameters of the request
|
73
75
|
def params
|
74
|
-
@params ||=
|
76
|
+
@params ||=
|
77
|
+
begin
|
78
|
+
request.params.symbolize_keys(deep: true)
|
79
|
+
rescue ArgumentError => e
|
80
|
+
raise unless e.message.include?('invalid %-encoding')
|
81
|
+
{}
|
82
|
+
end
|
75
83
|
end
|
76
84
|
|
77
85
|
## Session object as Hash
|
@@ -92,8 +100,7 @@ module Flame
|
|
92
100
|
## Available routes endpoint
|
93
101
|
def available_endpoint
|
94
102
|
return @available_endpoint if defined? @available_endpoint
|
95
|
-
@available_endpoint =
|
96
|
-
@app_class.router.routes.navigate(*request.path.parts)
|
103
|
+
@available_endpoint = router.navigate(*request.path.parts)
|
97
104
|
end
|
98
105
|
|
99
106
|
## Interrupt the execution of route, and set new optional data
|
@@ -141,6 +148,14 @@ module Flame
|
|
141
148
|
|
142
149
|
private
|
143
150
|
|
151
|
+
def validate_request
|
152
|
+
## https://github.com/rack/rack/issues/337#issuecomment-48555831
|
153
|
+
request.params
|
154
|
+
rescue ArgumentError => e
|
155
|
+
raise unless e.message.include?('invalid %-encoding')
|
156
|
+
halt 400
|
157
|
+
end
|
158
|
+
|
144
159
|
## Return response if HTTP-method is OPTIONS
|
145
160
|
def try_options
|
146
161
|
return unless request.http_method == :OPTIONS
|
@@ -11,7 +11,17 @@ module Flame
|
|
11
11
|
|
12
12
|
## Override HTTP-method of the request if the param '_method' found
|
13
13
|
def http_method
|
14
|
-
@http_method
|
14
|
+
return @http_method if defined?(@http_method)
|
15
|
+
|
16
|
+
method_from_method =
|
17
|
+
begin
|
18
|
+
params['_method']
|
19
|
+
rescue ArgumentError => e
|
20
|
+
## https://github.com/rack/rack/issues/337#issuecomment-48555831
|
21
|
+
raise unless e.message.include?('invalid %-encoding')
|
22
|
+
end
|
23
|
+
|
24
|
+
@http_method = (method_from_method || request_method).upcase.to_sym
|
15
25
|
end
|
16
26
|
end
|
17
27
|
end
|
@@ -23,7 +23,7 @@ module Flame
|
|
23
23
|
## @param route [Flame::Route] route that must be executed
|
24
24
|
def execute_route(route, action = route.action)
|
25
25
|
params.merge!(
|
26
|
-
|
26
|
+
router.path_of(route).extract_arguments(request.path)
|
27
27
|
)
|
28
28
|
# route.execute(self)
|
29
29
|
controller = route.controller.new(self)
|
@@ -42,7 +42,7 @@ module Flame
|
|
42
42
|
## Return nil if must be no body for current HTTP status
|
43
43
|
return if Rack::Utils::STATUS_WITH_NO_ENTITY_BODY.include?(status)
|
44
44
|
## Find the nearest route by the parts of requested path
|
45
|
-
route =
|
45
|
+
route = router.find_nearest_route(request.path)
|
46
46
|
## Return standard `default_body` if the route not found
|
47
47
|
return default_body unless route
|
48
48
|
controller = route.controller.new(self)
|
data/lib/flame/path.rb
CHANGED
@@ -86,14 +86,7 @@ module Flame
|
|
86
86
|
## @param other_path [Flame::Path] other path with values at arguments
|
87
87
|
## @return [Hash{Symbol => String}] hash of arguments from two paths
|
88
88
|
def extract_arguments(other_path)
|
89
|
-
|
90
|
-
other_part = other_path.parts[i].to_s
|
91
|
-
next args unless part.arg?
|
92
|
-
break args if part.opt_arg? && other_part.empty?
|
93
|
-
args[
|
94
|
-
part[(part.opt_arg? ? 2 : 1)..-1].to_sym
|
95
|
-
] = URI.decode_www_form_component(other_part)
|
96
|
-
end
|
89
|
+
Extractor.new(parts, other_path.parts).run
|
97
90
|
end
|
98
91
|
|
99
92
|
## Assign arguments to path for `Controller#path_to`
|
@@ -137,11 +130,55 @@ module Flame
|
|
137
130
|
param
|
138
131
|
end
|
139
132
|
|
133
|
+
## Class for extracting arguments from other path
|
134
|
+
class Extractor
|
135
|
+
def initialize(parts, other_parts)
|
136
|
+
@parts = parts
|
137
|
+
@other_parts = other_parts
|
138
|
+
|
139
|
+
@index = 0
|
140
|
+
@other_index = 0
|
141
|
+
|
142
|
+
@args = {}
|
143
|
+
end
|
144
|
+
|
145
|
+
def run
|
146
|
+
@parts.each do |part|
|
147
|
+
next static_part_found unless part.arg?
|
148
|
+
|
149
|
+
break if part.opt_arg? && @other_parts.count <= @other_index
|
150
|
+
|
151
|
+
@args[part.clean.to_sym] = extract
|
152
|
+
@index += 1
|
153
|
+
end
|
154
|
+
|
155
|
+
@args
|
156
|
+
end
|
157
|
+
|
158
|
+
private
|
159
|
+
|
160
|
+
def static_part_found
|
161
|
+
@index += 1
|
162
|
+
@other_index += 1
|
163
|
+
end
|
164
|
+
|
165
|
+
def extract
|
166
|
+
other_part = @other_parts[@other_index]
|
167
|
+
|
168
|
+
return if @parts[@index.next] == other_part
|
169
|
+
|
170
|
+
@other_index += 1
|
171
|
+
URI.decode_www_form_component(other_part)
|
172
|
+
end
|
173
|
+
end
|
174
|
+
|
175
|
+
private_constant :Extractor
|
176
|
+
|
140
177
|
## Class for one part of Path
|
141
178
|
class Part
|
142
179
|
extend Forwardable
|
143
180
|
|
144
|
-
def_delegators :@part, :[], :hash
|
181
|
+
def_delegators :@part, :[], :hash, :empty?, :b
|
145
182
|
|
146
183
|
ARG_CHAR = ':'
|
147
184
|
ARG_CHAR_OPT = '?'
|
@@ -174,6 +211,7 @@ module Flame
|
|
174
211
|
def to_s
|
175
212
|
@part
|
176
213
|
end
|
214
|
+
alias to_str to_s
|
177
215
|
|
178
216
|
## Is the path part an argument
|
179
217
|
## @return [true, false] an argument or not
|
data/lib/flame/render.rb
CHANGED
@@ -6,7 +6,7 @@ require 'tilt'
|
|
6
6
|
require 'tilt/plain'
|
7
7
|
require 'tilt/erb'
|
8
8
|
|
9
|
-
require '
|
9
|
+
require 'gorilla_patch/inflections'
|
10
10
|
|
11
11
|
require_relative 'errors/template_not_found_error'
|
12
12
|
|
@@ -89,7 +89,17 @@ module Flame
|
|
89
89
|
|
90
90
|
## Find template-file by path
|
91
91
|
def find_file(path)
|
92
|
-
|
92
|
+
caller_path = caller_locations(4..4).first.path
|
93
|
+
|
94
|
+
caller_dir =
|
95
|
+
begin
|
96
|
+
File.dirname(caller_path).sub(views_dir, '') if Tilt[caller_path]
|
97
|
+
rescue LoadError
|
98
|
+
nil
|
99
|
+
end
|
100
|
+
|
101
|
+
find_files(path, controller_dirs | Array(caller_dir))
|
102
|
+
.find { |file| Tilt[file] }
|
93
103
|
end
|
94
104
|
|
95
105
|
## Find layout-files by path
|
data/lib/flame/router.rb
CHANGED
@@ -1,9 +1,9 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require '
|
4
|
-
require '
|
5
|
-
require '
|
6
|
-
require '
|
3
|
+
require 'gorilla_patch/deep_merge'
|
4
|
+
require 'gorilla_patch/inflections'
|
5
|
+
require 'gorilla_patch/namespace'
|
6
|
+
require 'gorilla_patch/transform'
|
7
7
|
|
8
8
|
require_relative 'router/routes'
|
9
9
|
require_relative 'router/route'
|
@@ -11,6 +11,11 @@ require_relative 'router/route'
|
|
11
11
|
module Flame
|
12
12
|
## Router class for routing
|
13
13
|
class Router
|
14
|
+
HTTP_METHODS = %i[GET POST PUT PATCH DELETE].freeze
|
15
|
+
|
16
|
+
extend Forwardable
|
17
|
+
def_delegators :routes, :navigate
|
18
|
+
|
14
19
|
attr_reader :app, :routes, :reverse_routes
|
15
20
|
|
16
21
|
## @param app [Flame::Application] host application
|
@@ -20,6 +25,15 @@ module Flame
|
|
20
25
|
@reverse_routes = {}
|
21
26
|
end
|
22
27
|
|
28
|
+
using GorillaPatch::DeepMerge
|
29
|
+
|
30
|
+
## Add RoutesRefine to Router
|
31
|
+
## @param routes_refine [Flame::Router::RoutesRefine] refined routes
|
32
|
+
def add(routes_refine)
|
33
|
+
routes.deep_merge! routes_refine.routes
|
34
|
+
reverse_routes.merge! routes_refine.reverse_routes
|
35
|
+
end
|
36
|
+
|
23
37
|
## Find the nearest route by path
|
24
38
|
## @param path [Flame::Path] path for route finding
|
25
39
|
## @return [Flame::Route, nil] return the found nearest route or `nil`
|
@@ -88,7 +102,7 @@ module Flame
|
|
88
102
|
end
|
89
103
|
end
|
90
104
|
|
91
|
-
|
105
|
+
HTTP_METHODS.each do |http_method|
|
92
106
|
## Define refine methods for all HTTP methods
|
93
107
|
## @overload post(path, action)
|
94
108
|
## Execute action on requested path and HTTP method
|
@@ -168,6 +182,10 @@ module Flame
|
|
168
182
|
|
169
183
|
## Execute block of refinings end sorting routes
|
170
184
|
def execute(&block)
|
185
|
+
@controller.refined_http_methods
|
186
|
+
.each do |http_method, action_path, action|
|
187
|
+
send(http_method, action_path, action)
|
188
|
+
end
|
171
189
|
instance_exec(&block) if block
|
172
190
|
defaults
|
173
191
|
end
|
data/lib/flame/version.rb
CHANGED
data/template/Gemfile
CHANGED
data/template/Rakefile
CHANGED
@@ -70,7 +70,7 @@ class Question
|
|
70
70
|
end
|
71
71
|
end
|
72
72
|
|
73
|
-
DB_CONFIG_FILE = File.join(__dir__, 'config
|
73
|
+
DB_CONFIG_FILE = File.join(__dir__, 'config/database.yml').freeze
|
74
74
|
|
75
75
|
if File.exist? DB_CONFIG_FILE
|
76
76
|
namespace :db do
|
@@ -97,7 +97,7 @@ if File.exist? DB_CONFIG_FILE
|
|
97
97
|
|
98
98
|
DB_EXTENSIONS = %w[citext pgcrypto].freeze
|
99
99
|
|
100
|
-
PGPASS_FILE = File.expand_path
|
100
|
+
PGPASS_FILE = File.expand_path('~/.pgpass').freeze
|
101
101
|
|
102
102
|
PGPASS_LINE =
|
103
103
|
DB_CONFIG
|
@@ -556,7 +556,7 @@ if File.exist? DB_CONFIG_FILE
|
|
556
556
|
end
|
557
557
|
|
558
558
|
namespace :locales do
|
559
|
-
CROWDIN_CONFIG_FILE =
|
559
|
+
CROWDIN_CONFIG_FILE = 'config/crowdin.yml'
|
560
560
|
|
561
561
|
desc 'Upload files for translation'
|
562
562
|
task :upload do
|
@@ -668,7 +668,7 @@ end
|
|
668
668
|
namespace :static do
|
669
669
|
desc 'Check static files'
|
670
670
|
task :check do
|
671
|
-
Dir[File.join(__dir__, 'public'
|
671
|
+
Dir[File.join(__dir__, 'public/**/*')].each do |file|
|
672
672
|
basename = File.basename(file)
|
673
673
|
grep_options = '--exclude-dir={\.git,log} --color=always'
|
674
674
|
found = `grep -ir '#{basename}' ./ #{grep_options}`
|
@@ -689,7 +689,7 @@ namespace :config do
|
|
689
689
|
task :check do
|
690
690
|
example_suffix = '.example'
|
691
691
|
Dir[
|
692
|
-
File.join(__dir__,
|
692
|
+
File.join(__dir__, "config/**/*#{example_suffix}*")
|
693
693
|
].each do |example_filename|
|
694
694
|
regular_filename = example_filename.sub(example_suffix, '')
|
695
695
|
if File.exist? regular_filename
|
@@ -770,7 +770,7 @@ end
|
|
770
770
|
## Update from git without migrations and restart (for static files update)
|
771
771
|
desc 'Deploy to production server'
|
772
772
|
task :deploy, :without_restart do |_t, args|
|
773
|
-
servers = YAML.load_file File.join(__dir__, 'config
|
773
|
+
servers = YAML.load_file File.join(__dir__, 'config/deploy.yml')
|
774
774
|
rake_command = "rake update[master#{',true' if args.without_restart}]"
|
775
775
|
servers.each do |server|
|
776
776
|
update_command = "cd #{server[:path]} && #{rake_command}"
|
data/template/config/puma.rb
CHANGED
@@ -47,7 +47,7 @@ worker_timeout env_config[:daemonize] ? 15 : 1_000_000
|
|
47
47
|
threads 0, env_config[:threads_count] || 4
|
48
48
|
daemonize env_config[:daemonize]
|
49
49
|
|
50
|
-
# bind 'unix://
|
50
|
+
# bind 'unix://tmp/sockets/puma.sock'
|
51
51
|
env_config[:binds].each do |type, value|
|
52
52
|
value = "#{value[:host]}:#{value[:port]}" if type == :tcp
|
53
53
|
FileUtils.mkdir_p File.join(root_dir, File.dirname(value)) if type == :unix
|
data/template/server
CHANGED
@@ -111,11 +111,11 @@ def delete_filewatcher_pids_file
|
|
111
111
|
end
|
112
112
|
|
113
113
|
def server_config
|
114
|
-
@server_config ||= YAML.load_file(File.join(__dir__, 'config
|
114
|
+
@server_config ||= YAML.load_file(File.join(__dir__, 'config/server.yml'))
|
115
115
|
end
|
116
116
|
|
117
117
|
def puma_config_file
|
118
|
-
@puma_config_file ||= File.join(__dir__, 'config
|
118
|
+
@puma_config_file ||= File.join(__dir__, 'config/puma.rb')
|
119
119
|
end
|
120
120
|
|
121
121
|
def puma_pid_file
|
@@ -137,11 +137,11 @@ def environment
|
|
137
137
|
end
|
138
138
|
|
139
139
|
def log_files
|
140
|
-
File.join(__dir__,
|
140
|
+
File.join(__dir__, 'log/{stdout,stderr}')
|
141
141
|
end
|
142
142
|
|
143
143
|
def waiting_mailing_lock
|
144
|
-
while Dir[File.join(__dir__, 'tmp
|
144
|
+
while Dir[File.join(__dir__, 'tmp/mailing_*')].any?
|
145
145
|
puts "\e[31m\e[1mMails sending in progress!\e[22m\e[0m\nWaiting..."
|
146
146
|
sleep 1
|
147
147
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: flame
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 5.0.0.
|
4
|
+
version: 5.0.0.rc4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Alexander Popov
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-05-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: addressable
|
@@ -25,7 +25,7 @@ dependencies:
|
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '2.5'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
28
|
+
name: gorilla_patch
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
@@ -190,14 +190,14 @@ dependencies:
|
|
190
190
|
requirements:
|
191
191
|
- - "~>"
|
192
192
|
- !ruby/object:Gem::Version
|
193
|
-
version: '
|
193
|
+
version: '1'
|
194
194
|
type: :development
|
195
195
|
prerelease: false
|
196
196
|
version_requirements: !ruby/object:Gem::Requirement
|
197
197
|
requirements:
|
198
198
|
- - "~>"
|
199
199
|
- !ruby/object:Gem::Version
|
200
|
-
version: '
|
200
|
+
version: '1'
|
201
201
|
- !ruby/object:Gem::Dependency
|
202
202
|
name: rack-utf8_sanitizer
|
203
203
|
requirement: !ruby/object:Gem::Requirement
|
@@ -230,16 +230,16 @@ dependencies:
|
|
230
230
|
name: rubocop
|
231
231
|
requirement: !ruby/object:Gem::Requirement
|
232
232
|
requirements:
|
233
|
-
- -
|
233
|
+
- - "~>"
|
234
234
|
- !ruby/object:Gem::Version
|
235
|
-
version: '0.
|
235
|
+
version: '0.54'
|
236
236
|
type: :development
|
237
237
|
prerelease: false
|
238
238
|
version_requirements: !ruby/object:Gem::Requirement
|
239
239
|
requirements:
|
240
|
-
- -
|
240
|
+
- - "~>"
|
241
241
|
- !ruby/object:Gem::Version
|
242
|
-
version: '0.
|
242
|
+
version: '0.54'
|
243
243
|
- !ruby/object:Gem::Dependency
|
244
244
|
name: simplecov
|
245
245
|
requirement: !ruby/object:Gem::Requirement
|
@@ -320,7 +320,12 @@ files:
|
|
320
320
|
homepage: https://github.com/AlexWayfer/flame
|
321
321
|
licenses:
|
322
322
|
- MIT
|
323
|
-
metadata:
|
323
|
+
metadata:
|
324
|
+
bug_tracker_uri: https://github.com/AlexWayfer/flame/issues
|
325
|
+
documentation_uri: http://www.rubydoc.info/gems/flame/5.0.0.rc4
|
326
|
+
homepage_uri: https://github.com/AlexWayfer/flame
|
327
|
+
source_code_uri: https://github.com/AlexWayfer/flame
|
328
|
+
wiki_uri: https://github.com/AlexWayfer/flame/wiki
|
324
329
|
post_install_message:
|
325
330
|
rdoc_options: []
|
326
331
|
require_paths:
|
@@ -329,7 +334,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
329
334
|
requirements:
|
330
335
|
- - ">="
|
331
336
|
- !ruby/object:Gem::Version
|
332
|
-
version:
|
337
|
+
version: 2.3.0
|
333
338
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
334
339
|
requirements:
|
335
340
|
- - ">"
|
@@ -337,7 +342,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
337
342
|
version: 1.3.1
|
338
343
|
requirements: []
|
339
344
|
rubyforge_project:
|
340
|
-
rubygems_version: 2.6.14
|
345
|
+
rubygems_version: 2.6.14.1
|
341
346
|
signing_key:
|
342
347
|
specification_version: 4
|
343
348
|
summary: Web-framework, based on MVC-pattern
|