lotusrb 0.4.1 → 0.5.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 +4 -4
- data/CHANGELOG.md +18 -0
- data/FEATURES.md +7 -0
- data/README.md +2 -1
- data/lib/lotus/cli.rb +2 -1
- data/lib/lotus/commands/generate.rb +4 -0
- data/lib/lotus/config/assets.rb +46 -8
- data/lib/lotus/configuration.rb +119 -11
- data/lib/lotus/environment.rb +1 -1
- data/lib/lotus/frameworks.rb +2 -0
- data/lib/lotus/generators/action.rb +22 -1
- data/lib/lotus/generators/action/action_spec.rspec.tt +2 -3
- data/lib/lotus/generators/action/view_spec.rspec.tt +2 -3
- data/lib/lotus/generators/application/app.rb +22 -79
- data/lib/lotus/generators/application/app/Gemfile.tt +1 -0
- data/lib/lotus/generators/application/app/config/application.rb.tt +8 -3
- data/lib/lotus/generators/application/app/lib/app_name.rb.tt +12 -0
- data/lib/lotus/generators/application/container.rb +18 -84
- data/lib/lotus/generators/application/container/Gemfile.tt +3 -2
- data/lib/lotus/generators/application/container/lib/app_name.rb.tt +12 -0
- data/lib/lotus/generators/database_config.rb +86 -0
- data/lib/lotus/generators/mailer.rb +112 -0
- data/lib/lotus/generators/mailer/mailer.rb.tt +7 -0
- data/lib/lotus/generators/mailer/mailer_spec.rb.tt +7 -0
- data/lib/lotus/generators/mailer/template.html.tt +0 -0
- data/lib/lotus/generators/mailer/template.txt.tt +0 -0
- data/lib/lotus/generators/model/entity_spec.rspec.tt +0 -2
- data/lib/lotus/generators/model/repository_spec.rspec.tt +0 -2
- data/lib/lotus/generators/slice/application.rb.tt +8 -3
- data/lib/lotus/generators/slice/templates/application.html.erb.tt +1 -1
- data/lib/lotus/loader.rb +10 -3
- data/lib/lotus/mailer/glue.rb +68 -0
- data/lib/lotus/middleware.rb +3 -3
- data/lib/lotus/version.rb +1 -1
- data/lotusrb.gemspec +6 -5
- metadata +38 -11
@@ -0,0 +1,112 @@
|
|
1
|
+
require 'lotus/generators/abstract'
|
2
|
+
require 'lotus/utils/string'
|
3
|
+
|
4
|
+
module Lotus
|
5
|
+
module Generators
|
6
|
+
# @since 0.5.0
|
7
|
+
# @api private
|
8
|
+
class Mailer < Abstract
|
9
|
+
|
10
|
+
# @since 0.5.0
|
11
|
+
# @api private
|
12
|
+
TXT_FORMAT = '.txt'.freeze
|
13
|
+
|
14
|
+
# @since 0.5.0
|
15
|
+
# @api private
|
16
|
+
HTML_FORMAT = '.html'.freeze
|
17
|
+
|
18
|
+
# @since 0.5.0
|
19
|
+
# @api private
|
20
|
+
DEFAULT_ENGINE = 'erb'.freeze
|
21
|
+
|
22
|
+
# @since 0.5.0
|
23
|
+
# @api private
|
24
|
+
DEFAULT_FROM = "'<from>'".freeze
|
25
|
+
|
26
|
+
# @since 0.5.0
|
27
|
+
# @api private
|
28
|
+
DEFAULT_TO = "'<to>'".freeze
|
29
|
+
|
30
|
+
# @since 0.5.0
|
31
|
+
# @api private
|
32
|
+
DEFAULT_SUBJECT = "'Hello'".freeze
|
33
|
+
|
34
|
+
# @since 0.5.0
|
35
|
+
# @api private
|
36
|
+
def initialize(command)
|
37
|
+
super
|
38
|
+
|
39
|
+
@mailer_name = Utils::String.new(name).classify
|
40
|
+
cli.class.source_root(source)
|
41
|
+
end
|
42
|
+
|
43
|
+
# @since 0.5.0
|
44
|
+
# @api private
|
45
|
+
def start
|
46
|
+
assert_mailer!
|
47
|
+
|
48
|
+
opts = {
|
49
|
+
mailer: @mailer_name,
|
50
|
+
from: DEFAULT_FROM,
|
51
|
+
to: DEFAULT_TO,
|
52
|
+
subject: DEFAULT_SUBJECT,
|
53
|
+
}
|
54
|
+
|
55
|
+
templates = {
|
56
|
+
'mailer_spec.rb.tt' => _mailer_spec_path,
|
57
|
+
'mailer.rb.tt' => _mailer_path,
|
58
|
+
'template.txt.tt' => _txt_template_path,
|
59
|
+
'template.html.tt' => _html_template_path,
|
60
|
+
}
|
61
|
+
|
62
|
+
templates.each do |src, dst|
|
63
|
+
cli.template(source.join(src), target.join(dst), opts)
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
# @since 0.5.0
|
68
|
+
# @api private
|
69
|
+
def assert_mailer!
|
70
|
+
if @mailer_name.nil? || @mailer_name.empty?
|
71
|
+
raise Lotus::Commands::Generate::Error.new("Missing mailer name")
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
# @since 0.5.0
|
76
|
+
# @api private
|
77
|
+
def _mailer_path
|
78
|
+
core_root.join('mailers', "#{ name }.rb").to_s
|
79
|
+
end
|
80
|
+
|
81
|
+
# @since 0.5.0
|
82
|
+
# @api private
|
83
|
+
def _mailer_spec_path
|
84
|
+
spec_root.join(::File.basename(Dir.getwd), 'mailers', "#{ name }_spec.rb")
|
85
|
+
end
|
86
|
+
|
87
|
+
# @since 0.5.0
|
88
|
+
# @api private
|
89
|
+
def _txt_template_path
|
90
|
+
__template_path(TXT_FORMAT)
|
91
|
+
end
|
92
|
+
|
93
|
+
# @since 0.5.0
|
94
|
+
# @api private
|
95
|
+
def _html_template_path
|
96
|
+
__template_path(HTML_FORMAT)
|
97
|
+
end
|
98
|
+
|
99
|
+
# @since 0.5.0
|
100
|
+
# @api private
|
101
|
+
def __template_path(format)
|
102
|
+
core_root.join('mailers', 'templates', "#{ name }#{ format }.#{ DEFAULT_ENGINE }")
|
103
|
+
end
|
104
|
+
|
105
|
+
# @since 0.5.0
|
106
|
+
# @api private
|
107
|
+
def name
|
108
|
+
Utils::String.new(app_name || super).underscore
|
109
|
+
end
|
110
|
+
end
|
111
|
+
end
|
112
|
+
end
|
File without changes
|
File without changes
|
@@ -82,7 +82,12 @@ module <%= config[:classified_slice_name] %>
|
|
82
82
|
# Default format for the requests that don't specify an HTTP_ACCEPT header
|
83
83
|
# Argument: A symbol representation of a mime type, default to :html
|
84
84
|
#
|
85
|
-
#
|
85
|
+
# default_request_format :html
|
86
|
+
|
87
|
+
# Default format for responses that doesn't take into account the request format
|
88
|
+
# Argument: A symbol representation of a mime type, default to :html
|
89
|
+
#
|
90
|
+
# default_response_format :html
|
86
91
|
|
87
92
|
# HTTP Body parsers
|
88
93
|
# Parse non GET responses body for a specific mime type
|
@@ -149,7 +154,7 @@ module <%= config[:classified_slice_name] %>
|
|
149
154
|
# Web applications can send this header to mitigate Cross Site Scripting
|
150
155
|
# (XSS) attacks.
|
151
156
|
#
|
152
|
-
# The default value allows images, scripts, AJAX, and CSS from the same
|
157
|
+
# The default value allows images, scripts, AJAX, fonts and CSS from the same
|
153
158
|
# origin, and does not allow any other resources to load (eg object,
|
154
159
|
# frame, media, etc).
|
155
160
|
#
|
@@ -172,7 +177,7 @@ module <%= config[:classified_slice_name] %>
|
|
172
177
|
# * http://content-security-policy.com/
|
173
178
|
# * https://developer.mozilla.org/en-US/docs/Web/Security/CSP/Using_Content_Security_Policy
|
174
179
|
#
|
175
|
-
security.content_security_policy "default-src 'none'; script-src 'self'; connect-src 'self'; img-src 'self'; style-src 'self';"
|
180
|
+
security.content_security_policy "default-src 'none'; script-src 'self'; connect-src 'self'; img-src 'self'; style-src 'self'; font-src 'self';"
|
176
181
|
|
177
182
|
##
|
178
183
|
# FRAMEWORKS
|
data/lib/lotus/loader.rb
CHANGED
@@ -53,7 +53,8 @@ module Lotus
|
|
53
53
|
unless namespace.const_defined?('Controller')
|
54
54
|
controller = Lotus::Controller.duplicate(namespace) do
|
55
55
|
handle_exceptions config.handle_exceptions
|
56
|
-
|
56
|
+
default_request_format config.default_request_format
|
57
|
+
default_response_format config.default_response_format
|
57
58
|
default_headers({
|
58
59
|
Lotus::Config::Security::X_FRAME_OPTIONS_HEADER => config.security.x_frame_options,
|
59
60
|
Lotus::Config::Security::CONTENT_SECURITY_POLICY_HEADER => config.security.content_security_policy
|
@@ -112,8 +113,10 @@ module Lotus
|
|
112
113
|
|
113
114
|
def _configure_logger!
|
114
115
|
unless application_module.const_defined?('Logger', false)
|
115
|
-
|
116
|
-
|
116
|
+
if configuration.logger.nil?
|
117
|
+
configuration.logger Lotus::Logger.new(application_module.to_s)
|
118
|
+
end
|
119
|
+
application_module.const_set('Logger', configuration.logger)
|
117
120
|
end
|
118
121
|
end
|
119
122
|
|
@@ -147,6 +150,10 @@ module Lotus
|
|
147
150
|
defined?(Lotus::Model)
|
148
151
|
end
|
149
152
|
|
153
|
+
def _lotus_mailer_loaded?
|
154
|
+
defined?(Lotus::Mailer)
|
155
|
+
end
|
156
|
+
|
150
157
|
def load_configuration_load_paths!
|
151
158
|
configuration.load_paths.load!(configuration.root)
|
152
159
|
end
|
@@ -0,0 +1,68 @@
|
|
1
|
+
require 'lotus/utils/basic_object'
|
2
|
+
|
3
|
+
module Lotus::Mailer
|
4
|
+
# @since 0.5.0
|
5
|
+
# @api private
|
6
|
+
class Delivery < ::Lotus::Utils::BasicObject
|
7
|
+
# @since 0.5.0
|
8
|
+
# @api private
|
9
|
+
def initialize(env, &blk)
|
10
|
+
@env = env
|
11
|
+
instance_eval(&blk)
|
12
|
+
end
|
13
|
+
|
14
|
+
# @since 0.5.0
|
15
|
+
# @api private
|
16
|
+
def to_config
|
17
|
+
@config
|
18
|
+
end
|
19
|
+
|
20
|
+
# @since 0.5.0
|
21
|
+
# @api private
|
22
|
+
def test(*args)
|
23
|
+
__setup_config(:test, *args)
|
24
|
+
end
|
25
|
+
|
26
|
+
private
|
27
|
+
|
28
|
+
# @since 0.5.0
|
29
|
+
# @api private
|
30
|
+
def method_missing(m, *args)
|
31
|
+
__setup_config(m, *args)
|
32
|
+
end
|
33
|
+
|
34
|
+
# @since 0.5.0
|
35
|
+
# @api private
|
36
|
+
def __setup_config(env, *args)
|
37
|
+
if env.to_s == @env
|
38
|
+
@config = args
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
|
44
|
+
# @since 0.5.0
|
45
|
+
# @api private
|
46
|
+
module Glue
|
47
|
+
|
48
|
+
# @since 0.5.0
|
49
|
+
# @api private
|
50
|
+
def delivery(&blk)
|
51
|
+
raise ArgumentError unless block_given?
|
52
|
+
delivery_method(*Lotus::Mailer::Delivery.new(Lotus.env, &blk).to_config)
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
Configuration.class_eval do
|
57
|
+
include Glue
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
# @since 0.5.0
|
62
|
+
# @api private
|
63
|
+
module Mailers
|
64
|
+
end
|
65
|
+
|
66
|
+
Lotus::Mailer.configure do
|
67
|
+
namespace Mailers
|
68
|
+
end
|
data/lib/lotus/middleware.rb
CHANGED
@@ -94,7 +94,7 @@ module Lotus
|
|
94
94
|
# @api private
|
95
95
|
# @since 0.2.0
|
96
96
|
def _load_default_welcome_page_for(application)
|
97
|
-
unless application.routes.defined?
|
97
|
+
unless Lotus.env?(:test) || application.routes.defined?
|
98
98
|
require 'lotus/welcome'
|
99
99
|
use Lotus::Welcome
|
100
100
|
end
|
@@ -116,8 +116,8 @@ module Lotus
|
|
116
116
|
# #since 0.2.0
|
117
117
|
def _load_asset_middlewares
|
118
118
|
if @configuration.serve_assets
|
119
|
-
@configuration.assets.
|
120
|
-
use Rack::Static, urls:
|
119
|
+
@configuration.assets.for_each_source do |source|
|
120
|
+
use Rack::Static, urls: source.urls, root: source.root
|
121
121
|
end
|
122
122
|
end
|
123
123
|
end
|
data/lib/lotus/version.rb
CHANGED
data/lotusrb.gemspec
CHANGED
@@ -19,11 +19,12 @@ Gem::Specification.new do |spec|
|
|
19
19
|
spec.require_paths = ['lib']
|
20
20
|
spec.required_ruby_version = '>= 2.0.0'
|
21
21
|
|
22
|
-
spec.add_dependency 'lotus-utils', '~> 0.5', '>= 0.5.
|
23
|
-
spec.add_dependency 'lotus-router', '~> 0.4', '>= 0.4.
|
24
|
-
spec.add_dependency 'lotus-controller', '~> 0.4', '>= 0.4.
|
25
|
-
spec.add_dependency 'lotus-view', '~> 0.4', '>= 0.4.
|
26
|
-
spec.add_dependency 'lotus-helpers', '~> 0.2'
|
22
|
+
spec.add_dependency 'lotus-utils', '~> 0.5', '>= 0.5.2'
|
23
|
+
spec.add_dependency 'lotus-router', '~> 0.4', '>= 0.4.3'
|
24
|
+
spec.add_dependency 'lotus-controller', '~> 0.4', '>= 0.4.5'
|
25
|
+
spec.add_dependency 'lotus-view', '~> 0.4', '>= 0.4.4'
|
26
|
+
spec.add_dependency 'lotus-helpers', '~> 0.2', '>= 0.2.5'
|
27
|
+
spec.add_dependency 'lotus-mailer', '~> 0.1'
|
27
28
|
spec.add_dependency 'shotgun', '~> 0.9'
|
28
29
|
spec.add_dependency 'dotenv', '~> 2.0'
|
29
30
|
spec.add_dependency 'thor', '~> 0.19'
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: lotusrb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Luca Guidi
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2015-
|
13
|
+
date: 2015-09-30 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: lotus-utils
|
@@ -21,7 +21,7 @@ dependencies:
|
|
21
21
|
version: '0.5'
|
22
22
|
- - ">="
|
23
23
|
- !ruby/object:Gem::Version
|
24
|
-
version: 0.5.
|
24
|
+
version: 0.5.2
|
25
25
|
type: :runtime
|
26
26
|
prerelease: false
|
27
27
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -31,7 +31,7 @@ dependencies:
|
|
31
31
|
version: '0.5'
|
32
32
|
- - ">="
|
33
33
|
- !ruby/object:Gem::Version
|
34
|
-
version: 0.5.
|
34
|
+
version: 0.5.2
|
35
35
|
- !ruby/object:Gem::Dependency
|
36
36
|
name: lotus-router
|
37
37
|
requirement: !ruby/object:Gem::Requirement
|
@@ -41,7 +41,7 @@ dependencies:
|
|
41
41
|
version: '0.4'
|
42
42
|
- - ">="
|
43
43
|
- !ruby/object:Gem::Version
|
44
|
-
version: 0.4.
|
44
|
+
version: 0.4.3
|
45
45
|
type: :runtime
|
46
46
|
prerelease: false
|
47
47
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -51,7 +51,7 @@ dependencies:
|
|
51
51
|
version: '0.4'
|
52
52
|
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: 0.4.
|
54
|
+
version: 0.4.3
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: lotus-controller
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -61,7 +61,7 @@ dependencies:
|
|
61
61
|
version: '0.4'
|
62
62
|
- - ">="
|
63
63
|
- !ruby/object:Gem::Version
|
64
|
-
version: 0.4.
|
64
|
+
version: 0.4.5
|
65
65
|
type: :runtime
|
66
66
|
prerelease: false
|
67
67
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -71,7 +71,7 @@ dependencies:
|
|
71
71
|
version: '0.4'
|
72
72
|
- - ">="
|
73
73
|
- !ruby/object:Gem::Version
|
74
|
-
version: 0.4.
|
74
|
+
version: 0.4.5
|
75
75
|
- !ruby/object:Gem::Dependency
|
76
76
|
name: lotus-view
|
77
77
|
requirement: !ruby/object:Gem::Requirement
|
@@ -81,7 +81,7 @@ dependencies:
|
|
81
81
|
version: '0.4'
|
82
82
|
- - ">="
|
83
83
|
- !ruby/object:Gem::Version
|
84
|
-
version: 0.4.
|
84
|
+
version: 0.4.4
|
85
85
|
type: :runtime
|
86
86
|
prerelease: false
|
87
87
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -91,7 +91,7 @@ dependencies:
|
|
91
91
|
version: '0.4'
|
92
92
|
- - ">="
|
93
93
|
- !ruby/object:Gem::Version
|
94
|
-
version: 0.4.
|
94
|
+
version: 0.4.4
|
95
95
|
- !ruby/object:Gem::Dependency
|
96
96
|
name: lotus-helpers
|
97
97
|
requirement: !ruby/object:Gem::Requirement
|
@@ -99,6 +99,9 @@ dependencies:
|
|
99
99
|
- - "~>"
|
100
100
|
- !ruby/object:Gem::Version
|
101
101
|
version: '0.2'
|
102
|
+
- - ">="
|
103
|
+
- !ruby/object:Gem::Version
|
104
|
+
version: 0.2.5
|
102
105
|
type: :runtime
|
103
106
|
prerelease: false
|
104
107
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -106,6 +109,23 @@ dependencies:
|
|
106
109
|
- - "~>"
|
107
110
|
- !ruby/object:Gem::Version
|
108
111
|
version: '0.2'
|
112
|
+
- - ">="
|
113
|
+
- !ruby/object:Gem::Version
|
114
|
+
version: 0.2.5
|
115
|
+
- !ruby/object:Gem::Dependency
|
116
|
+
name: lotus-mailer
|
117
|
+
requirement: !ruby/object:Gem::Requirement
|
118
|
+
requirements:
|
119
|
+
- - "~>"
|
120
|
+
- !ruby/object:Gem::Version
|
121
|
+
version: '0.1'
|
122
|
+
type: :runtime
|
123
|
+
prerelease: false
|
124
|
+
version_requirements: !ruby/object:Gem::Requirement
|
125
|
+
requirements:
|
126
|
+
- - "~>"
|
127
|
+
- !ruby/object:Gem::Version
|
128
|
+
version: '0.1'
|
109
129
|
- !ruby/object:Gem::Dependency
|
110
130
|
name: shotgun
|
111
131
|
requirement: !ruby/object:Gem::Requirement
|
@@ -320,6 +340,12 @@ files:
|
|
320
340
|
- lib/lotus/generators/application/container/schema.sql.tt
|
321
341
|
- lib/lotus/generators/application/container/spec_helper.rb.minitest.tt
|
322
342
|
- lib/lotus/generators/application/container/spec_helper.rb.rspec.tt
|
343
|
+
- lib/lotus/generators/database_config.rb
|
344
|
+
- lib/lotus/generators/mailer.rb
|
345
|
+
- lib/lotus/generators/mailer/mailer.rb.tt
|
346
|
+
- lib/lotus/generators/mailer/mailer_spec.rb.tt
|
347
|
+
- lib/lotus/generators/mailer/template.html.tt
|
348
|
+
- lib/lotus/generators/mailer/template.txt.tt
|
323
349
|
- lib/lotus/generators/migration.rb
|
324
350
|
- lib/lotus/generators/migration/migration.rb.tt
|
325
351
|
- lib/lotus/generators/model.rb
|
@@ -337,6 +363,7 @@ files:
|
|
337
363
|
- lib/lotus/generators/slice/views/application_layout.rb.tt
|
338
364
|
- lib/lotus/loader.rb
|
339
365
|
- lib/lotus/lotusrc.rb
|
366
|
+
- lib/lotus/mailer/glue.rb
|
340
367
|
- lib/lotus/middleware.rb
|
341
368
|
- lib/lotus/rendering_policy.rb
|
342
369
|
- lib/lotus/root.rb
|
@@ -372,7 +399,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
372
399
|
version: '0'
|
373
400
|
requirements: []
|
374
401
|
rubyforge_project:
|
375
|
-
rubygems_version: 2.4.
|
402
|
+
rubygems_version: 2.4.5.1
|
376
403
|
signing_key:
|
377
404
|
specification_version: 4
|
378
405
|
summary: A complete web framework for Ruby
|