marfa 0.5.4 → 0.6.0

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 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