marfa 0.5.4 → 0.6.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: fded6d57e7e8913d1c694355c1da6ffd09be9d2f
4
- data.tar.gz: 81acbf44e1d75d9bb45bcfffd7bf47108a235ce7
3
+ metadata.gz: 3ac683e8c0c1a0d4de81e3d1f54c6b12c37e520d
4
+ data.tar.gz: b1c6144785b6653c1aa63fdad7f41f7a29f0d5c4
5
5
  SHA512:
6
- metadata.gz: c94d24f9ece756e6cf8bf94ea860b8880b7c8f8b515737b546a39f71ca67a40aeaef1cd58c09e87a66b5cfaa61d21163500bda7b9a040a691737233e2ba89682
7
- data.tar.gz: b783e105c2630e049a9df94ce6b1102e6f2bcadef6ed249928b552d776a1ffd4256f6b3b4796c492832d505758bdc4a12f4ec5121fb6b3c74ee7f93d5829b3e6
6
+ metadata.gz: 6ff955c64e6ad5ff064324645bb853c87a8952ce24dceb69cbb84c80daa514321a3816cb27245ebcf7cf4a54853e67f1f62ad7b7185a6dd912652b4ad2552de8
7
+ data.tar.gz: 4131e1c511e8a28f327a03d6a4e2603b375dad08c62e802bbdb290b25d3937e13acd10696bc3b06125539b8da131ba5648d1837adc368b047fb125ecb6a20215
@@ -14,7 +14,7 @@ module Marfa
14
14
  return if @config.to_h.empty?
15
15
 
16
16
  _configure_settings(Marfa::Controllers::BaseController)
17
- _configure_settings(Marfa::Controllers::CssController)
17
+ _configure_settings(Marfa::Controllers::CssController) if Marfa.config.use_css_build
18
18
  _configure_ext_modules(Marfa::Controllers::BaseController)
19
19
  end
20
20
 
@@ -6,9 +6,8 @@ module Marfa
6
6
  # Controllers for Rack run
7
7
  # @return [Array] Controllers list
8
8
  def self.controllers_list
9
- @controllers_list = [
10
- CssController
11
- ]
9
+ @controllers_list = []
10
+ @controllers_list << CssController if Marfa.config.use_css_build
12
11
  end
13
12
  end
14
13
  end
@@ -15,74 +15,83 @@ module Marfa
15
15
  File.open("#{project_path}/config/marfa.rb", 'w') do |file|
16
16
  file.puts "# Marfa configuration file
17
17
  Marfa.configure do |cfg|
18
+ # Environment
19
+ cfg.environment = :development
20
+ # Request logging
21
+ cfg.logging = true
22
+ # Show error page with backtrace
23
+ cfg.show_exceptions = true
24
+ # log exception backtraces to STDERR
25
+ cfg.dump_errors = true
26
+
27
+ # Mode (not implemented yet)
28
+ cfg.mode = 'api'
29
+
18
30
  # Specifying API Server is needed
19
31
  cfg.api_server = ''
20
32
 
21
- # Views path is needed
33
+ # Paths settings
34
+ cfg.content_path = '/images/content/'
35
+ cfg.public_folder = File.expand_path('./static')
22
36
  cfg.views = File.expand_path('./app/views')
37
+ cfg.block_templates_path = 'blocks'
23
38
 
24
- # Cache config
39
+ # Redis cache settings
25
40
  cfg.cache = {
26
41
  enabled: false,
27
- host: '',
28
- port: 0,
42
+ host: 'localhost',
43
+ port: 6379,
29
44
  db: 0,
30
- expiration_time: 3600,
31
- use_device: true # use device name in page, blocks cache
45
+ expiration_time: 86_400
32
46
  }
33
47
 
34
- # Static files content path
35
- cfg.content_path = '/images/content/'
48
+ # Cache header
49
+ cfg.static_cache_control = [public, max_age: 0]
36
50
 
37
- # Styles caching
38
- cfg.cache_styles = true
51
+ # CSS build
52
+ cfg.use_css_build = false
39
53
 
40
- # Blocks path
41
- cfg.block_templates_path = 'blocks'
54
+ # CSS file cache
55
+ cfg.cache_styles = false
42
56
 
43
- # Public folder
44
- cfg.public_folder = File.expand_path('./static')
57
+ # CSRF protection
58
+ cfg.csrf_enabled = false
45
59
 
46
- # Static files cache
47
- cfg.static_cache_control = [:public, max_age: 2_592_000]
60
+ # HTML compression
61
+ cfg.html_compression_options = {
62
+ enabled: true,
63
+ remove_intertag_spaces: true
64
+ }
48
65
 
49
- # CSRF Protection
50
- cfg.csrf_enabled = false
66
+ # CSS/JS Minifying
67
+ cfg.minify_css = false
68
+ cfg.minify_js = true
51
69
 
52
- # gem device_detector
53
- cfg.device_detector = {
54
- enabled: true,
55
- default_device: 'smartphone'
70
+ # Email settings
71
+ cfg.email = {
72
+ default: {
73
+ address: '',
74
+ port: '587',
75
+ enable_starttls_auto: true,
76
+ user_name: '',
77
+ password: '',
78
+ authentication: :plain,
79
+ domain: 'localhost.localdomain'
80
+ }
56
81
  }
57
82
 
58
- # HTML Compression
59
- cfg.html_compression_options = {
60
- enabled: true,
61
- remove_multi_spaces: true,
62
- remove_comments: true,
63
- remove_intertag_spaces: false,
64
- remove_quotes: true,
65
- compress_css: false,
66
- compress_javascript: false,
67
- simple_doctype: false,
68
- remove_script_attributes: true,
69
- remove_style_attributes: true,
70
- remove_link_attributes: true,
71
- remove_form_attributes: false,
72
- remove_input_attributes: true,
73
- remove_javascript_protocol: true,
74
- remove_http_protocol: false,
75
- remove_https_protocol: false,
76
- preserve_line_breaks: false,
77
- simple_boolean_attributes: true
83
+ # Device detector
84
+ cfg.device_detector = {
85
+ enabled: true
78
86
  }
79
87
 
80
- # CSS Minifying
81
- cfg.minify_css = true
88
+ # Pagination default template
89
+ cfg.pagination_template = '/pagination'
82
90
 
83
- # JS Minifying
84
- cfg.minify_js = true
91
+ # Rack::Session secret
92
+ cfg.session_secret = 'secret'
85
93
  end
94
+
86
95
  "
87
96
  end
88
97
  end
@@ -109,16 +118,24 @@ Encoding.default_internal = Encoding::UTF_8
109
118
 
110
119
  require 'marfa'
111
120
  require File.dirname(__FILE__) + '/app/bootstrap'
112
- require File.dirname(__FILE__) + '/config/marfa'
121
+ require File.dirname(__FILE__) + '/config/marfa/' + ENV['RACK_ENV']
122
+ require 'pp' if ENV['RACK_ENV'] == 'production'
123
+
124
+ p Using config #{File.dirname(__FILE__) + '/config/marfa/' + ENV['RACK_ENV']}
113
125
 
114
126
  Marfa.configure_app
115
127
 
116
128
  # Controllers auto-bootstrap
117
129
  controllers = Object.constants.select { |c| c.to_s.include? 'Controller' }
118
130
  controllers.map! { |controller| Object.const_get(controller) }
119
- controllers += Marfa::Controllers.controllers_list
131
+ # controllers += Marfa::Controllers.controllers_list
132
+
133
+ app_map = {
134
+ # '.css': CssController,
135
+ '/': IndexController
136
+ }
120
137
 
121
- run Rack::Cascade.new(controllers)
138
+ run Rack::AppMapper.new(controllers, app_map)
122
139
  "
123
140
  end
124
141
 
@@ -0,0 +1,5 @@
1
+ # Array class extending
2
+ class Array
3
+ # @return [true, false]
4
+ alias blank? empty?
5
+ end
@@ -0,0 +1,7 @@
1
+ # False class extending
2
+ class FalseClass
3
+ # @return [true]
4
+ def blank?
5
+ true
6
+ end
7
+ end
@@ -0,0 +1,4 @@
1
+ # Hash class extending
2
+ class Hash
3
+ alias blank? empty?
4
+ end
@@ -0,0 +1,7 @@
1
+ # Nil class extending
2
+ class NilClass
3
+ # @return [true]
4
+ def blank?
5
+ true
6
+ end
7
+ end
@@ -7,4 +7,13 @@ class Numeric
7
7
  def to_price!
8
8
  self.to_s.to_price!
9
9
  end
10
+
11
+ # Check if digit is blank
12
+ # 0.blank? => true
13
+ # 1.blank? => false
14
+ # @return [true, false]
15
+ def blank?
16
+ return true if zero?
17
+ false
18
+ end
10
19
  end
@@ -0,0 +1,10 @@
1
+ # Object class extending
2
+ class Object
3
+ # Copied from rails
4
+ # An object is present if it's not blank.
5
+ #
6
+ # @return [true, false]
7
+ def blank?
8
+ respond_to?(:empty?) ? !!empty? : !self
9
+ end
10
+ end
@@ -0,0 +1,11 @@
1
+ # Regexp class extending
2
+ # Helpers from Rails
3
+ class Regexp
4
+ def multiline?
5
+ options & MULTILINE == MULTILINE
6
+ end
7
+
8
+ def match?(string, pos=0)
9
+ !!match(string, pos)
10
+ end unless //.respond_to?(:match?)
11
+ end
@@ -1,5 +1,7 @@
1
1
  # Additional String functionality
2
2
  class String
3
+ BLANK_RE = /\A[[:space:]]*\z/
4
+
3
5
  # Replaces all '/' to '_'
4
6
  # @example
5
7
  # "some/path".to_underscore
@@ -48,4 +50,9 @@ class String
48
50
  # .gsub(pattern, replacement) returns a copy of str with the all occurrences of pattern substituted for the second argument
49
51
  self.split('.').first.reverse.gsub(/...(?=.)/, '\&;psniht&').reverse
50
52
  end
53
+
54
+ # @return [true, false]
55
+ def blank?
56
+ empty? || BLANK_RE.match?(self)
57
+ end
51
58
  end
@@ -0,0 +1,7 @@
1
+ # Time class extending
2
+ class Time
3
+ # @return [false]
4
+ def blank?
5
+ false
6
+ end
7
+ end
@@ -0,0 +1,7 @@
1
+ # TrueClass extending
2
+ class TrueClass
3
+ # @return [false]
4
+ def blank?
5
+ false
6
+ end
7
+ end
data/lib/marfa/version.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  # Version constant
2
2
  module Marfa
3
3
  # The version constant for the current version of Marfa
4
- VERSION = '0.5.4' unless defined?(Marfa::VERSION)
4
+ VERSION = '0.6.0'.freeze unless defined?(Marfa::VERSION)
5
5
 
6
6
  # The current Marfa version.
7
7
  # @return [String] The version number
data/lib/marfa.rb CHANGED
@@ -11,7 +11,16 @@ require 'marfa/rack/app_mapper'
11
11
  require 'marfa/controllers'
12
12
  require 'marfa/controllers/base_controller'
13
13
  require 'marfa/controllers/css_controller'
14
+ require 'marfa/helpers/classes/array'
15
+ require 'marfa/helpers/classes/false_class'
16
+ require 'marfa/helpers/classes/hash'
17
+ require 'marfa/helpers/classes/nil_class'
18
+ require 'marfa/helpers/classes/numeric'
19
+ require 'marfa/helpers/classes/object'
20
+ require 'marfa/helpers/classes/regexp'
14
21
  require 'marfa/helpers/classes/string'
22
+ require 'marfa/helpers/classes/time'
23
+ require 'marfa/helpers/classes/true_class'
15
24
  require 'marfa/helpers/sass_functions'
16
25
  require 'marfa/models/base_dto'
17
26
  require 'marfa/models/api_model'
data/marfa.gemspec CHANGED
@@ -3,7 +3,7 @@
3
3
 
4
4
  Gem::Specification.new do |s|
5
5
  s.name = 'marfa'
6
- s.version = '0.5.4'
6
+ s.version = '0.6.0'
7
7
  s.required_ruby_version = '>= 2.3.0'
8
8
  s.platform = Gem::Platform::RUBY
9
9
  s.date = Time.now.strftime('%Y-%m-%d')
@@ -13,26 +13,30 @@ Gem::Specification.new do |s|
13
13
  s.email = 'mvkrechetov@gmail.com'
14
14
  s.require_paths = ['lib']
15
15
  s.files = `git ls-files`.split("\n")
16
+
17
+ # remove marfa-build-js in marfa-lite
16
18
  s.executables = ['marfa-start', 'marfa-build-js']
19
+
17
20
  s.homepage = 'http://rubygems.org/gems/marfa'
18
21
  s.license = 'MIT'
19
22
 
20
23
  s.add_dependency('haml', '~> 4.0', '>= 4.0.7')
21
- s.add_dependency('puma', '>3.8.2')
24
+ s.add_dependency('puma', '~>3.8')
22
25
  s.add_dependency('rack_csrf', '~> 2.6')
23
26
  s.add_dependency('rake', '~> 12')
24
27
  s.add_dependency('redis', '~> 3.3', '>= 3.3.3')
25
28
  s.add_dependency('rest-client', '~> 2')
26
29
  s.add_dependency('sass', '~> 3.4', '>= 3.4.23')
27
- s.add_dependency('babel-transpiler', '~> 0.7')
28
- s.add_dependency('closure-compiler', '~> 1.1', '>= 1.1.12')
29
30
  s.add_dependency('sinatra', '~> 1.4', '>= 1.4.2')
30
31
  s.add_dependency('sinatra-contrib', '~> 1.4')
31
32
  s.add_dependency('device_detector', '~> 1.0')
33
+ s.add_dependency('pony', '~> 1.11')
34
+
35
+ # remove this in marfa-lite
36
+ s.add_dependency('babel-transpiler', '~> 0.7')
37
+ s.add_dependency('closure-compiler', '~> 1.1', '>= 1.1.12')
32
38
  s.add_dependency('htmlcompressor', '~> 0.3.1')
33
39
  s.add_dependency('csso-rails', '~> 0.5.0')
34
40
  s.add_dependency('yard', '~> 0.9', '>= 0.9.8')
35
41
  s.add_dependency('yard-sinatra', '~> 1')
36
- s.add_dependency('compass', '~> 1.0', '>= 1.0.3')
37
- s.add_dependency('pony', '~> 1.11')
38
42
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: marfa
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.4
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Max Krechetov
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2017-07-03 00:00:00.000000000 Z
13
+ date: 2017-07-21 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: haml
@@ -36,16 +36,16 @@ dependencies:
36
36
  name: puma
37
37
  requirement: !ruby/object:Gem::Requirement
38
38
  requirements:
39
- - - ">"
39
+ - - "~>"
40
40
  - !ruby/object:Gem::Version
41
- version: 3.8.2
41
+ version: '3.8'
42
42
  type: :runtime
43
43
  prerelease: false
44
44
  version_requirements: !ruby/object:Gem::Requirement
45
45
  requirements:
46
- - - ">"
46
+ - - "~>"
47
47
  - !ruby/object:Gem::Version
48
- version: 3.8.2
48
+ version: '3.8'
49
49
  - !ruby/object:Gem::Dependency
50
50
  name: rack_csrf
51
51
  requirement: !ruby/object:Gem::Requirement
@@ -128,40 +128,6 @@ dependencies:
128
128
  - - ">="
129
129
  - !ruby/object:Gem::Version
130
130
  version: 3.4.23
131
- - !ruby/object:Gem::Dependency
132
- name: babel-transpiler
133
- requirement: !ruby/object:Gem::Requirement
134
- requirements:
135
- - - "~>"
136
- - !ruby/object:Gem::Version
137
- version: '0.7'
138
- type: :runtime
139
- prerelease: false
140
- version_requirements: !ruby/object:Gem::Requirement
141
- requirements:
142
- - - "~>"
143
- - !ruby/object:Gem::Version
144
- version: '0.7'
145
- - !ruby/object:Gem::Dependency
146
- name: closure-compiler
147
- requirement: !ruby/object:Gem::Requirement
148
- requirements:
149
- - - "~>"
150
- - !ruby/object:Gem::Version
151
- version: '1.1'
152
- - - ">="
153
- - !ruby/object:Gem::Version
154
- version: 1.1.12
155
- type: :runtime
156
- prerelease: false
157
- version_requirements: !ruby/object:Gem::Requirement
158
- requirements:
159
- - - "~>"
160
- - !ruby/object:Gem::Version
161
- version: '1.1'
162
- - - ">="
163
- - !ruby/object:Gem::Version
164
- version: 1.1.12
165
131
  - !ruby/object:Gem::Dependency
166
132
  name: sinatra
167
133
  requirement: !ruby/object:Gem::Requirement
@@ -211,101 +177,115 @@ dependencies:
211
177
  - !ruby/object:Gem::Version
212
178
  version: '1.0'
213
179
  - !ruby/object:Gem::Dependency
214
- name: htmlcompressor
180
+ name: pony
215
181
  requirement: !ruby/object:Gem::Requirement
216
182
  requirements:
217
183
  - - "~>"
218
184
  - !ruby/object:Gem::Version
219
- version: 0.3.1
185
+ version: '1.11'
220
186
  type: :runtime
221
187
  prerelease: false
222
188
  version_requirements: !ruby/object:Gem::Requirement
223
189
  requirements:
224
190
  - - "~>"
225
191
  - !ruby/object:Gem::Version
226
- version: 0.3.1
192
+ version: '1.11'
227
193
  - !ruby/object:Gem::Dependency
228
- name: csso-rails
194
+ name: babel-transpiler
229
195
  requirement: !ruby/object:Gem::Requirement
230
196
  requirements:
231
197
  - - "~>"
232
198
  - !ruby/object:Gem::Version
233
- version: 0.5.0
199
+ version: '0.7'
234
200
  type: :runtime
235
201
  prerelease: false
236
202
  version_requirements: !ruby/object:Gem::Requirement
237
203
  requirements:
238
204
  - - "~>"
239
205
  - !ruby/object:Gem::Version
240
- version: 0.5.0
206
+ version: '0.7'
241
207
  - !ruby/object:Gem::Dependency
242
- name: yard
208
+ name: closure-compiler
243
209
  requirement: !ruby/object:Gem::Requirement
244
210
  requirements:
245
211
  - - "~>"
246
212
  - !ruby/object:Gem::Version
247
- version: '0.9'
213
+ version: '1.1'
248
214
  - - ">="
249
215
  - !ruby/object:Gem::Version
250
- version: 0.9.8
216
+ version: 1.1.12
251
217
  type: :runtime
252
218
  prerelease: false
253
219
  version_requirements: !ruby/object:Gem::Requirement
254
220
  requirements:
255
221
  - - "~>"
256
222
  - !ruby/object:Gem::Version
257
- version: '0.9'
223
+ version: '1.1'
258
224
  - - ">="
259
225
  - !ruby/object:Gem::Version
260
- version: 0.9.8
226
+ version: 1.1.12
261
227
  - !ruby/object:Gem::Dependency
262
- name: yard-sinatra
228
+ name: htmlcompressor
263
229
  requirement: !ruby/object:Gem::Requirement
264
230
  requirements:
265
231
  - - "~>"
266
232
  - !ruby/object:Gem::Version
267
- version: '1'
233
+ version: 0.3.1
268
234
  type: :runtime
269
235
  prerelease: false
270
236
  version_requirements: !ruby/object:Gem::Requirement
271
237
  requirements:
272
238
  - - "~>"
273
239
  - !ruby/object:Gem::Version
274
- version: '1'
240
+ version: 0.3.1
275
241
  - !ruby/object:Gem::Dependency
276
- name: compass
242
+ name: csso-rails
277
243
  requirement: !ruby/object:Gem::Requirement
278
244
  requirements:
279
245
  - - "~>"
280
246
  - !ruby/object:Gem::Version
281
- version: '1.0'
247
+ version: 0.5.0
248
+ type: :runtime
249
+ prerelease: false
250
+ version_requirements: !ruby/object:Gem::Requirement
251
+ requirements:
252
+ - - "~>"
253
+ - !ruby/object:Gem::Version
254
+ version: 0.5.0
255
+ - !ruby/object:Gem::Dependency
256
+ name: yard
257
+ requirement: !ruby/object:Gem::Requirement
258
+ requirements:
259
+ - - "~>"
260
+ - !ruby/object:Gem::Version
261
+ version: '0.9'
282
262
  - - ">="
283
263
  - !ruby/object:Gem::Version
284
- version: 1.0.3
264
+ version: 0.9.8
285
265
  type: :runtime
286
266
  prerelease: false
287
267
  version_requirements: !ruby/object:Gem::Requirement
288
268
  requirements:
289
269
  - - "~>"
290
270
  - !ruby/object:Gem::Version
291
- version: '1.0'
271
+ version: '0.9'
292
272
  - - ">="
293
273
  - !ruby/object:Gem::Version
294
- version: 1.0.3
274
+ version: 0.9.8
295
275
  - !ruby/object:Gem::Dependency
296
- name: pony
276
+ name: yard-sinatra
297
277
  requirement: !ruby/object:Gem::Requirement
298
278
  requirements:
299
279
  - - "~>"
300
280
  - !ruby/object:Gem::Version
301
- version: '1.11'
281
+ version: '1'
302
282
  type: :runtime
303
283
  prerelease: false
304
284
  version_requirements: !ruby/object:Gem::Requirement
305
285
  requirements:
306
286
  - - "~>"
307
287
  - !ruby/object:Gem::Version
308
- version: '1.11'
288
+ version: '1'
309
289
  description: Sinatra-based wrapper for our projects
310
290
  email: mvkrechetov@gmail.com
311
291
  executables:
@@ -328,8 +308,16 @@ files:
328
308
  - lib/marfa/controllers/css_controller.rb
329
309
  - lib/marfa/css_version.rb
330
310
  - lib/marfa/file_templates.rb
311
+ - lib/marfa/helpers/classes/array.rb
312
+ - lib/marfa/helpers/classes/false_class.rb
313
+ - lib/marfa/helpers/classes/hash.rb
314
+ - lib/marfa/helpers/classes/nil_class.rb
331
315
  - lib/marfa/helpers/classes/numeric.rb
316
+ - lib/marfa/helpers/classes/object.rb
317
+ - lib/marfa/helpers/classes/regexp.rb
332
318
  - lib/marfa/helpers/classes/string.rb
319
+ - lib/marfa/helpers/classes/time.rb
320
+ - lib/marfa/helpers/classes/true_class.rb
333
321
  - lib/marfa/helpers/controller.rb
334
322
  - lib/marfa/helpers/email.rb
335
323
  - lib/marfa/helpers/http/vary.rb