tzispa 0.5.17 → 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: 76d727af344f043d01060b60f98dc46d363cf2de
4
- data.tar.gz: 39aa0eb52c764598a6dfa416b12d9f5098f64701
3
+ metadata.gz: 0d1e2f805b398259308d37b08aaf4b1afe9d2537
4
+ data.tar.gz: 751ff37e20bdb8f0c0fc27a12aa7250523b80c99
5
5
  SHA512:
6
- metadata.gz: '0957f93051d376bc12bd0a77c93f8886ff607ff179172bf5ed8619ecaa3dcedcd00491335591e8092e590648e323d93460fa79e092bcb06fb4031683b0760fb9'
7
- data.tar.gz: 2eb808739fee4c3231ec7abd97cc1c7c45c42e810062090f923f2125dc12974412e992eb2aac37a63d5991f5f5399b46de883da0d860673fdaa6982feca8b446
6
+ metadata.gz: c98965cffb98d15718affc2fa467a9cd6fce46c9033bfcdbdaf1fc55849679708e75fa6db836e735be380d3af9cb8e2f71a753c1dbc92d47ffef0cfb8af43069
7
+ data.tar.gz: a38443bda7a70802a8baf6d946a5c5293576dcdf8742f5afaf04f658154017454a06c34c71add5324796ab3f5fc9b6b6850ba9a6aff22c39035d2ff29fa4932a
data/CHANGELOG.md CHANGED
@@ -2,6 +2,13 @@ Tzispa
2
2
 
3
3
  General purpose web framework
4
4
 
5
+ ## v0.6.0
6
+ - code refactoring & templates namespace simplification
7
+ - added auth_layout controller
8
+ - added context cache
9
+ - added default format from config in layout url builders
10
+ - removed per app rig engines
11
+
5
12
  ## v0.5.17
6
13
  - remove debug puts
7
14
 
@@ -26,7 +26,7 @@ module Tzispa
26
26
  using Tzispa::Utils
27
27
 
28
28
  attr_reader :context, :response_verb, :data, :status
29
- def_delegators :@context, :request, :response, :app, :repository, :config
29
+ def_delegators :@context, :request, :response, :app, :repository, :config, :logger
30
30
 
31
31
  HANDLER_STATUS_UNDEFINED = nil
32
32
  HANDLER_STATUS_OK = :ok
data/lib/tzispa/app.rb CHANGED
@@ -8,7 +8,6 @@ require 'tzispa/routes'
8
8
  require 'tzispa/config/appconfig'
9
9
  require 'tzispa/middleware'
10
10
  require 'tzispa_data'
11
- require "tzispa_rig"
12
11
 
13
12
 
14
13
  module Tzispa
@@ -30,6 +29,14 @@ module Tzispa
30
29
 
31
30
  class << self
32
31
 
32
+ alias :__new__ :new
33
+
34
+ def new(*args, &block)
35
+ __new__(*args, &block).tap { |app|
36
+ add app
37
+ }
38
+ end
39
+
33
40
  def applications
34
41
  synchronize do
35
42
  @@applications ||= Hash.new{ |hash, key| raise UnknownApplication.new("#{key}") }
@@ -53,19 +60,18 @@ module Tzispa
53
60
  end
54
61
  end
55
62
 
56
- def run(domain_name, builder: nil, on: nil, &block)
57
- theapp = self.new domain_name, on: on, &block
63
+ def run(appid, builder: nil, on: nil, &block)
64
+ theapp = self.new appid, on: on, &block
58
65
  theapp.run builder
59
66
  end
60
67
 
61
68
  end
62
69
 
63
- def initialize(domain_name, on: nil, &block)
64
- @domain = Domain.new(domain_name)
70
+ def initialize(appid, on: nil, &block)
71
+ @domain = Domain.new(appid)
65
72
  @config = Config::AppConfig.new(@domain).load!
66
73
  @middleware = Middleware.new self
67
74
  @routes ||= Routes.new(self, on)
68
- self.class.add(self)
69
75
  instance_eval(&block) if block
70
76
  end
71
77
 
@@ -84,12 +90,11 @@ module Tzispa
84
90
  def load!
85
91
  self.class.synchronize {
86
92
  load_locales
87
- @repository = Data::Repository.new(config.repository.to_h).load! if config.respond_to? :repository
88
- @engine = Rig::Engine.new(self, config.template_cache.enabled, config.template_cache.size)
89
93
  @logger = Logger.new("logs/#{domain.name}.log", config.logging.shift_age).tap { |log|
90
94
  log.level = config.developing ? Logger::DEBUG : Logger::INFO
91
95
  } if config.logging&.enabled
92
- domain_requires
96
+ domain_setup
97
+ @repository = Data::Repository.new(config.repository.to_h).load!(domain) if config.respond_to? :repository
93
98
  @loaded = true
94
99
  }
95
100
  self
@@ -101,7 +106,8 @@ module Tzispa
101
106
 
102
107
  private
103
108
 
104
- def domain_requires
109
+ def domain_setup
110
+ domain.require_dir
105
111
  domain.require_dir 'helpers'
106
112
  domain.require_dir 'services'
107
113
  domain.require_dir 'api'
@@ -109,9 +115,9 @@ module Tzispa
109
115
  end
110
116
 
111
117
  def load_locales
112
- if @config.respond_to?(:locales)
113
- I18n.load_path = Dir["config/locales/*.yml"]
114
- I18n.load_path += Dir["#{@domain.path}/locales/*.yml"]
118
+ if config.respond_to?(:locales)
119
+ I18n.enforce_available_locales = false
120
+ I18n.load_path += Dir["config/locales/*.yml", "#{domain.path}/locales/*.yml"]
115
121
  end
116
122
  end
117
123
 
@@ -7,12 +7,13 @@ module Tzispa
7
7
  class Context
8
8
  extend Forwardable
9
9
 
10
- attr_reader :app, :env
10
+ attr_reader :app, :env, :cache
11
11
  def_delegators :app, :config, :logger, :domain, :repository
12
12
 
13
13
  def initialize(app, environment)
14
14
  @env = environment
15
15
  @app = app
16
+ @cache = Hash.new
16
17
  I18n.locale = app.config.locales.default.to_sym if app.config&.respond_to?(:locales)
17
18
  end
18
19
 
@@ -0,0 +1,37 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'tzispa_rig'
4
+ require 'tzispa/controller/base'
5
+ require 'tzispa/controller/exceptions'
6
+ require 'tzispa/helpers/response'
7
+ require 'tzispa_rig'
8
+
9
+ module Tzispa
10
+ module Controller
11
+ class AuthLayout < Base
12
+ include Tzispa::Helpers::Response
13
+
14
+ def render!
15
+ if (layout_name == login_layout) || context.login
16
+ rig = Tzispa::Rig::Engine.layout name: layout_name, domain: application.domain, content_type: context.router_params[:format] || config.default_format
17
+ response.body << rig.render(context)
18
+ content_type rig.content_type
19
+ else
20
+ context.redirect login_layout, true, response
21
+ end
22
+ end
23
+
24
+ private
25
+
26
+ def layout_name
27
+ context.layout || config.default_layout
28
+ end
29
+
30
+ def login_layout
31
+ config.login_layout
32
+ end
33
+
34
+
35
+ end
36
+ end
37
+ end
@@ -4,18 +4,17 @@ require 'tzispa_rig'
4
4
  require 'tzispa/controller/base'
5
5
  require 'tzispa/controller/exceptions'
6
6
  require 'tzispa/helpers/response'
7
+ require 'tzispa_rig'
7
8
 
8
9
  module Tzispa
9
10
  module Controller
10
11
  class Layout < Base
11
-
12
12
  include Tzispa::Helpers::Response
13
13
 
14
14
  def render!
15
- layout_format = context.router_params[:format] || context.config.default_format
16
- rig = context.app.engine.layout(name: layout_name, format: layout_format.to_sym)
15
+ rig = Tzispa::Rig::Engine.layout name: layout_name, domain: application.domain, content_type: context.router_params[:format] || config.default_format
17
16
  response.body << rig.render(context)
18
- content_type layout_format
17
+ content_type rig.content_type
19
18
  end
20
19
 
21
20
  private
data/lib/tzispa/domain.rb CHANGED
@@ -1,8 +1,12 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'tzispa/utils/string'
4
+
3
5
  module Tzispa
4
6
  class Domain
5
7
 
8
+ using Tzispa::Utils
9
+
6
10
  attr_reader :name, :root
7
11
 
8
12
  DEFAULT_DOMAIN_NAME = :default
@@ -22,24 +26,30 @@ module Tzispa
22
26
  Kernel.require "./#{path}/#{file}"
23
27
  end
24
28
 
25
- def require_dir(dir)
26
- Dir["./#{path}/#{dir}/*.rb"].each { |file|
27
- name = file.split('/').last.split('.').first
28
- Kernel.require "./#{path}/#{dir}/#{name}"
29
- }
30
- end
31
-
32
29
  def load(file)
33
30
  Kernel.load "./#{path}/#{file}.rb"
34
31
  end
35
32
 
36
- def load_dir(dir)
37
- Dir["./#{path}/#{dir}/*.rb"].each { |file|
33
+ def require_dir(dir = nil)
34
+ rqpath = dir ? "/#{path}/#{dir}" : "/#{path}"
35
+ Dir[".#{rqpath}/*.rb"].each { |file|
36
+ name = file.split('/').last.split('.').first
37
+ Kernel.require ".#{rqpath}/#{name}"
38
+ }
39
+ end
40
+
41
+ def load_dir(dir = nil)
42
+ rqpath = dir ? "/#{path}/#{dir}" : "/#{path}"
43
+ Dir[".#{rqpath}/*.rb"].each { |file|
38
44
  name = file.split('/').last
39
- Kernel.load "./#{path}/#{dir}/#{name}"
45
+ Kernel.load ".#{rqpath}/#{name}"
40
46
  }
41
47
  end
42
48
 
49
+ def include(cmod)
50
+ name.to_s.capitalize.constantize.include cmod
51
+ end
52
+
43
53
  def self.require(domain, file)
44
54
  self.new(name: domain).require(file)
45
55
  end
@@ -91,12 +91,12 @@ module Tzispa
91
91
 
92
92
  def layout_path(layout, params={})
93
93
  params = params.merge(layout: layout) unless app.config.default_layout&.to_sym == layout
94
- app.routes.path layout, params
94
+ app.routes.path layout, normalize_format(params)
95
95
  end
96
96
 
97
97
  def app_layout_path(app_name, layout, params={})
98
98
  params = params.merge(layout: layout) unless app[app_name].config.default_layout&.to_sym == layout
99
- app[app_name].routes.path layout, params
99
+ app[app_name].routes.path layout, normalize_format(params)
100
100
  end
101
101
 
102
102
  def layout_canonical_url(layout, params={})
@@ -107,7 +107,7 @@ module Tzispa
107
107
  app[app_name].config.canonical_url + app_layout_path(app_name, layout, params)
108
108
  end
109
109
 
110
- def api(handler, verb, predicate, sufix, app_name)
110
+ def api(handler, verb, predicate, sufix, app_name = nil)
111
111
  unless app_name
112
112
  canonical_url :api, handler: handler, verb: verb, predicate: predicate, sufix: sufix
113
113
  else
@@ -129,8 +129,14 @@ module Tzispa
129
129
  sign == sign_array(args, config.salt)
130
130
  end
131
131
 
132
+ private
132
133
 
133
- end
134
+ def normalize_format(params)
135
+ params.tap { |pmm|
136
+ pmm[:format] = config.default_format unless pmm[:format]
137
+ }
138
+ end
134
139
 
140
+ end
135
141
  end
136
142
  end
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Tzispa
4
- VERSION = '0.5.17'
4
+ VERSION = '0.6.0'
5
5
  FRAMEWORK_NAME = 'Tzispa'
6
6
  GEM_NAME = 'tzispa'
7
7
  end
data/tzispa.gemspec CHANGED
@@ -16,13 +16,13 @@ Gem::Specification.new do |s|
16
16
  s.required_ruby_version = '~> 2.3'
17
17
 
18
18
  s.add_dependency 'rack', '~> 2.0', '>= 2.0.1'
19
- s.add_dependency 'i18n', '~> 0.7.0'
19
+ s.add_dependency 'i18n', '~> 0.8.0'
20
20
  s.add_dependency 'thor', '~> 0.19.0'
21
21
  s.add_dependency 'http_router', '~> 0.11.2'
22
- s.add_dependency 'tzispa_helpers', '~> 0.2'
23
- s.add_dependency 'tzispa_utils', '~> 0.2'
24
- s.add_dependency 'tzispa_rig', '~> 0.4.2'
25
- s.add_dependency 'tzispa_data', '~> 0.2.0'
22
+ s.add_dependency 'tzispa_helpers', '~> 0.2.2'
23
+ s.add_dependency 'tzispa_utils', '~> 0.3'
24
+ s.add_dependency 'tzispa_rig', '~> 0.5'
25
+ s.add_dependency 'tzispa_data', '~> 0.3'
26
26
 
27
27
  s.files = Dir.glob("{lib,bin}/**/*") + %w(README.md CHANGELOG.md LICENSE tzispa.gemspec)
28
28
  s.executables = s.files.grep(%r{^bin/}) { |f| File.basename(f) }
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tzispa
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.17
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Juan Antonio Piñero
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-11-24 00:00:00.000000000 Z
11
+ date: 2017-02-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rack
@@ -36,14 +36,14 @@ dependencies:
36
36
  requirements:
37
37
  - - "~>"
38
38
  - !ruby/object:Gem::Version
39
- version: 0.7.0
39
+ version: 0.8.0
40
40
  type: :runtime
41
41
  prerelease: false
42
42
  version_requirements: !ruby/object:Gem::Requirement
43
43
  requirements:
44
44
  - - "~>"
45
45
  - !ruby/object:Gem::Version
46
- version: 0.7.0
46
+ version: 0.8.0
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: thor
49
49
  requirement: !ruby/object:Gem::Requirement
@@ -78,56 +78,56 @@ dependencies:
78
78
  requirements:
79
79
  - - "~>"
80
80
  - !ruby/object:Gem::Version
81
- version: '0.2'
81
+ version: 0.2.2
82
82
  type: :runtime
83
83
  prerelease: false
84
84
  version_requirements: !ruby/object:Gem::Requirement
85
85
  requirements:
86
86
  - - "~>"
87
87
  - !ruby/object:Gem::Version
88
- version: '0.2'
88
+ version: 0.2.2
89
89
  - !ruby/object:Gem::Dependency
90
90
  name: tzispa_utils
91
91
  requirement: !ruby/object:Gem::Requirement
92
92
  requirements:
93
93
  - - "~>"
94
94
  - !ruby/object:Gem::Version
95
- version: '0.2'
95
+ version: '0.3'
96
96
  type: :runtime
97
97
  prerelease: false
98
98
  version_requirements: !ruby/object:Gem::Requirement
99
99
  requirements:
100
100
  - - "~>"
101
101
  - !ruby/object:Gem::Version
102
- version: '0.2'
102
+ version: '0.3'
103
103
  - !ruby/object:Gem::Dependency
104
104
  name: tzispa_rig
105
105
  requirement: !ruby/object:Gem::Requirement
106
106
  requirements:
107
107
  - - "~>"
108
108
  - !ruby/object:Gem::Version
109
- version: 0.4.2
109
+ version: '0.5'
110
110
  type: :runtime
111
111
  prerelease: false
112
112
  version_requirements: !ruby/object:Gem::Requirement
113
113
  requirements:
114
114
  - - "~>"
115
115
  - !ruby/object:Gem::Version
116
- version: 0.4.2
116
+ version: '0.5'
117
117
  - !ruby/object:Gem::Dependency
118
118
  name: tzispa_data
119
119
  requirement: !ruby/object:Gem::Requirement
120
120
  requirements:
121
121
  - - "~>"
122
122
  - !ruby/object:Gem::Version
123
- version: 0.2.0
123
+ version: '0.3'
124
124
  type: :runtime
125
125
  prerelease: false
126
126
  version_requirements: !ruby/object:Gem::Requirement
127
127
  requirements:
128
128
  - - "~>"
129
129
  - !ruby/object:Gem::Version
130
- version: 0.2.0
130
+ version: '0.3'
131
131
  description: A sparkling web framework based on Rack and inspired by Sinatra and Lotus
132
132
  email:
133
133
  - japinero@area-integral.com
@@ -155,6 +155,7 @@ files:
155
155
  - lib/tzispa/config/yaml.rb
156
156
  - lib/tzispa/context.rb
157
157
  - lib/tzispa/controller/api.rb
158
+ - lib/tzispa/controller/auth_layout.rb
158
159
  - lib/tzispa/controller/base.rb
159
160
  - lib/tzispa/controller/exceptions.rb
160
161
  - lib/tzispa/controller/http_error.rb
@@ -189,7 +190,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
189
190
  version: '0'
190
191
  requirements: []
191
192
  rubyforge_project:
192
- rubygems_version: 2.5.2
193
+ rubygems_version: 2.6.10
193
194
  signing_key:
194
195
  specification_version: 4
195
196
  summary: A sparkling web framework