dry-web-roda 0.10.0 → 0.14.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 +179 -41
- data/LICENSE +16 -18
- data/README.md +16 -42
- data/{exe → bin}/dry-web-roda +0 -0
- data/dry-web-roda.gemspec +24 -23
- data/lib/dry/web/roda/generators/abstract_project.rb +2 -2
- data/lib/dry/web/roda/generators/inflections.rb +3 -3
- data/lib/dry/web/roda/generators/sub_app.rb +2 -2
- data/lib/dry/web/roda/inflector.rb +9 -0
- data/lib/dry/web/roda/templates/Gemfile +19 -14
- data/lib/dry/web/roda/templates/README.md.tt +8 -5
- data/lib/dry/web/roda/templates/container.rb.tt +2 -0
- data/lib/dry/web/roda/templates/flat_project/boot.rb.tt +2 -0
- data/lib/dry/web/roda/templates/flat_project/web.rb.tt +3 -1
- data/lib/dry/web/roda/templates/monitor.rb.tt +2 -1
- data/lib/dry/web/roda/templates/subapp/container.rb.tt +3 -3
- data/lib/dry/web/roda/templates/subapp/view.rb.tt +17 -0
- data/lib/dry/web/roda/templates/subapp/view_context.rb.tt +8 -0
- data/lib/dry/web/roda/templates/subapp/web.rb.tt +3 -1
- data/lib/dry/web/roda/templates/subapp/welcome.rb.tt +2 -2
- data/lib/dry/web/roda/templates/types.rb +3 -3
- data/lib/dry/web/roda/templates/umbrella_project/boot.rb.tt +2 -0
- data/lib/dry/web/roda/templates/view.rb.tt +15 -0
- data/lib/dry/web/roda/templates/view_context.rb.tt +31 -0
- data/lib/dry/web/roda/templates/welcome.rb.tt +2 -2
- data/lib/dry/web/roda/version.rb +1 -1
- data/lib/roda/plugins/dry_view.rb +6 -3
- metadata +30 -148
- data/.gitignore +0 -37
- data/.rspec +0 -2
- data/.travis.yml +0 -32
- data/CONTRIBUTING.md +0 -29
- data/Gemfile +0 -33
- data/Rakefile +0 -6
- data/lib/dry/web/roda/templates/.gitignore +0 -11
- data/lib/dry/web/roda/templates/.keep +0 -0
- data/lib/dry/web/roda/templates/.rspec +0 -2
- data/lib/dry/web/roda/templates/subapp/view__context.rb.tt +0 -10
- data/lib/dry/web/roda/templates/subapp/view__controller.rb.tt +0 -19
- data/lib/dry/web/roda/templates/view__context.rb.tt +0 -41
- data/lib/dry/web/roda/templates/view__controller.rb.tt +0 -17
- data/script/ci +0 -67
- data/script/setup +0 -47
- data/script/teardown +0 -42
- data/spec/integration/new_app_spec.rb +0 -21
- data/spec/spec_helper.rb +0 -22
- data/spec/support/app.rb +0 -64
- data/spec/support/bundler.rb +0 -113
- data/spec/support/cli.rb +0 -47
- data/spec/support/directories.rb +0 -37
- data/spec/support/env.rb +0 -84
- data/spec/support/files.rb +0 -59
- data/spec/support/project.rb +0 -60
- data/spec/support/requests.rb +0 -5
- data/spec/support/silently.rb +0 -28
- data/spec/unit/generators/inflections_spec.rb +0 -33
data/{exe → bin}/dry-web-roda
RENAMED
File without changes
|
data/dry-web-roda.gemspec
CHANGED
@@ -1,35 +1,36 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
# this file is managed by dry-rb/devtools project
|
3
|
+
|
4
|
+
lib = File.expand_path('lib', __dir__)
|
2
5
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
3
|
-
require
|
6
|
+
require 'dry/web/roda/version'
|
4
7
|
|
5
8
|
Gem::Specification.new do |spec|
|
6
|
-
spec.name =
|
7
|
-
spec.version = Dry::Web::Roda::VERSION
|
9
|
+
spec.name = 'dry-web-roda'
|
8
10
|
spec.authors = ["Piotr Solnica"]
|
9
11
|
spec.email = ["piotr.solnica@gmail.com"]
|
12
|
+
spec.license = 'MIT'
|
13
|
+
spec.version = Dry::Web::Roda::VERSION.dup
|
14
|
+
|
10
15
|
spec.summary = "Roda integration for dry-web apps"
|
11
16
|
spec.description = spec.summary
|
12
|
-
spec.homepage =
|
13
|
-
spec.
|
17
|
+
spec.homepage = 'https://dry-rb.org/gems/dry-web-roda'
|
18
|
+
spec.files = Dir["CHANGELOG.md", "LICENSE", "README.md", "dry-web-roda.gemspec", "lib/**/*"]
|
19
|
+
spec.bindir = 'bin'
|
20
|
+
spec.executables = ["dry-web-roda"]
|
21
|
+
spec.require_paths = ['lib']
|
14
22
|
|
15
|
-
spec.
|
16
|
-
spec.
|
17
|
-
spec.
|
18
|
-
spec.
|
19
|
-
spec.require_paths = ["lib"]
|
23
|
+
spec.metadata['allowed_push_host'] = 'https://rubygems.org'
|
24
|
+
spec.metadata['changelog_uri'] = 'https://github.com/dry-rb/dry-web-roda/blob/master/CHANGELOG.md'
|
25
|
+
spec.metadata['source_code_uri'] = 'https://github.com/dry-rb/dry-web-roda'
|
26
|
+
spec.metadata['bug_tracker_uri'] = 'https://github.com/dry-rb/dry-web-roda/issues'
|
20
27
|
|
21
|
-
spec.required_ruby_version =
|
28
|
+
spec.required_ruby_version = ">= 2.4.0"
|
22
29
|
|
30
|
+
# to update dependencies edit project.yml
|
23
31
|
spec.add_runtime_dependency "dry-configurable", "~> 0.2"
|
24
|
-
spec.add_runtime_dependency "
|
25
|
-
spec.add_runtime_dependency "roda", "~>
|
26
|
-
spec.add_runtime_dependency "roda-flow", "~> 0.
|
27
|
-
spec.add_runtime_dependency "thor", "~> 0
|
28
|
-
|
29
|
-
spec.add_development_dependency "aruba"
|
30
|
-
spec.add_development_dependency "bundler", "~> 1.7"
|
31
|
-
spec.add_development_dependency "rake", "~> 11.0"
|
32
|
-
spec.add_development_dependency "rspec", "~> 3.4"
|
33
|
-
spec.add_development_dependency "capybara", "~> 2.5"
|
34
|
-
spec.add_development_dependency "waitutil"
|
32
|
+
spec.add_runtime_dependency "dry-inflector", "~> 0.2"
|
33
|
+
spec.add_runtime_dependency "roda", "~> 3.0"
|
34
|
+
spec.add_runtime_dependency "roda-flow", "~> 0.4"
|
35
|
+
spec.add_runtime_dependency "thor", "~> 1.0"
|
35
36
|
end
|
@@ -53,8 +53,8 @@ module Dry
|
|
53
53
|
add_template('repository.rb.tt', "lib/#{underscored_project_name}/repository.rb")
|
54
54
|
add_template('.keep', 'lib/persistence/relations/.keep')
|
55
55
|
add_template('.keep', 'lib/persistence/commands/.keep')
|
56
|
-
add_template('
|
57
|
-
add_template('
|
56
|
+
add_template('view_context.rb.tt', "lib/#{underscored_project_name}/view_context.rb")
|
57
|
+
add_template('view.rb.tt', "lib/#{underscored_project_name}/view.rb")
|
58
58
|
end
|
59
59
|
|
60
60
|
def add_log
|
@@ -1,4 +1,4 @@
|
|
1
|
-
require
|
1
|
+
require 'dry/web/roda/inflector'
|
2
2
|
|
3
3
|
module Dry
|
4
4
|
module Web
|
@@ -8,11 +8,11 @@ module Dry
|
|
8
8
|
module_function
|
9
9
|
|
10
10
|
def underscored_name(name)
|
11
|
-
|
11
|
+
Inflector.underscore(name)
|
12
12
|
end
|
13
13
|
|
14
14
|
def camel_cased_name(name)
|
15
|
-
|
15
|
+
Inflector.camelize(underscored_name(name))
|
16
16
|
end
|
17
17
|
end
|
18
18
|
end
|
@@ -34,8 +34,8 @@ module Dry
|
|
34
34
|
end
|
35
35
|
|
36
36
|
def add_lib
|
37
|
-
add_template('subapp/
|
38
|
-
add_template('subapp/
|
37
|
+
add_template('subapp/view_context.rb.tt', "#{lib_path}/view_context.rb")
|
38
|
+
add_template('subapp/view.rb.tt', "#{lib_path}/view.rb")
|
39
39
|
add_template('subapp/welcome.rb.tt', "#{lib_path}/views/welcome.rb")
|
40
40
|
end
|
41
41
|
|
@@ -1,41 +1,46 @@
|
|
1
1
|
source "https://rubygems.org"
|
2
2
|
|
3
|
+
# TODO: The original content of this Gemfile was generated by dry-web-roda.
|
4
|
+
# It is recommended to review the dependencies and define their version
|
5
|
+
# requirements for gems that miss them.
|
3
6
|
gem "rake"
|
4
7
|
|
5
8
|
# Web framework
|
6
|
-
gem "dry-
|
7
|
-
gem "dry-
|
8
|
-
gem "dry-web
|
9
|
+
gem "dry-web-roda"
|
10
|
+
gem "dry-system"
|
11
|
+
gem "dry-web"
|
9
12
|
gem "puma"
|
10
13
|
gem "rack_csrf"
|
11
14
|
|
12
15
|
gem "rack", ">= 2.0"
|
13
|
-
gem "rerun"
|
14
16
|
|
15
17
|
# Database persistence
|
16
18
|
gem "pg"
|
17
|
-
gem "rom", "~>
|
18
|
-
gem "rom-sql", "~>
|
19
|
+
gem "rom", "~> 5.1"
|
20
|
+
gem "rom-sql", "~> 3.1"
|
19
21
|
|
20
22
|
# Application dependencies
|
21
|
-
gem "dry-matcher"
|
22
|
-
gem "dry-monads"
|
23
|
-
gem "dry-struct"
|
24
|
-
gem "dry-
|
25
|
-
gem "dry-
|
26
|
-
gem "dry-
|
27
|
-
gem "dry-view", "~> 0.4"
|
23
|
+
gem "dry-matcher"
|
24
|
+
gem "dry-monads"
|
25
|
+
gem "dry-struct"
|
26
|
+
gem "dry-types"
|
27
|
+
gem "dry-validation"
|
28
|
+
gem "dry-view"
|
28
29
|
gem "slim"
|
29
30
|
|
30
31
|
group :development, :test do
|
31
32
|
gem "pry-byebug", platform: :mri
|
32
33
|
end
|
33
34
|
|
35
|
+
group :development do
|
36
|
+
gem "rerun"
|
37
|
+
end
|
38
|
+
|
34
39
|
group :test do
|
35
40
|
gem "capybara"
|
36
41
|
gem "capybara-screenshot"
|
37
42
|
gem "database_cleaner"
|
38
43
|
gem "poltergeist"
|
39
44
|
gem "rspec"
|
40
|
-
gem "rom-factory", "~> 0.
|
45
|
+
gem "rom-factory", "~> 0.10"
|
41
46
|
end
|
@@ -5,8 +5,11 @@ Welcome! You’ve generated an app using dry-web-roda.
|
|
5
5
|
## First steps
|
6
6
|
|
7
7
|
1. Run `bundle`
|
8
|
-
2. Review `.env` & `.env.test` (and make a copy to e.g. `.example.env` if you want example settings checked in)
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
8
|
+
2. Review `.env` & `.env.test` (and make a copy to e.g. `.example.env` if you want example settings checked in). In
|
9
|
+
particular, ensure that your PostgreSQL username and password are specified in the `DATABASE_URL` variable as follows:
|
10
|
+
`postgres://username:password@your_host/...`.
|
11
|
+
3. Run `bundle exec rake db:create` to create the development database.
|
12
|
+
4. Run `RACK_ENV=test bundle exec rake db:create` to create the test database.
|
13
|
+
5. Add your own steps to `bin/setup`
|
14
|
+
6. Run the app with `bundle exec rerun -- rackup --port 4000 config.ru`
|
15
|
+
7. Initialize git with `git init` and make your initial commit
|
@@ -11,19 +11,21 @@ module <%= config[:camel_cased_app_name] %>
|
|
11
11
|
opts[:root] = Pathname(__FILE__).join("../..").realpath.dirname
|
12
12
|
|
13
13
|
use Rack::Session::Cookie, key: "<%= config[:underscored_project_name] %>.session", secret: self["settings"].session_secret
|
14
|
+
use Rack::MethodOverride
|
14
15
|
|
15
16
|
plugin :csrf, raise: true
|
16
17
|
plugin :dry_view
|
17
18
|
plugin :error_handler
|
18
19
|
plugin :flash
|
19
20
|
plugin :multi_route
|
21
|
+
plugin :all_verbs
|
20
22
|
|
21
23
|
route do |r|
|
22
24
|
# Enable this after writing your first web/routes/ file
|
23
25
|
# r.multi_route
|
24
26
|
|
25
27
|
r.root do
|
26
|
-
r.view
|
28
|
+
r.view :welcome
|
27
29
|
end
|
28
30
|
end
|
29
31
|
|
@@ -1,9 +1,10 @@
|
|
1
1
|
<%= config[:camel_cased_app_name] %>::Container.boot :monitor do
|
2
2
|
init do
|
3
|
-
require "dry/monitor"
|
3
|
+
require "dry/monitor/sql/logger"
|
4
4
|
end
|
5
5
|
|
6
6
|
start do
|
7
|
+
notifications.register_event(:sql)
|
7
8
|
Dry::Monitor::SQL::Logger.new(logger).subscribe(notifications)
|
8
9
|
end
|
9
10
|
end
|
@@ -5,9 +5,6 @@ require "dry/system/components"
|
|
5
5
|
module <%= config[:camel_cased_umbrella_name] %>
|
6
6
|
module <%= config[:camel_cased_app_name] %>
|
7
7
|
class Container < Dry::Web::Container
|
8
|
-
require root.join("system/<%= config[:underscored_umbrella_name] %>/container")
|
9
|
-
import core: <%= config[:camel_cased_umbrella_name] %>::Container
|
10
|
-
|
11
8
|
configure do |config|
|
12
9
|
config.root = Pathname(__FILE__).join("../../..").realpath.dirname.freeze
|
13
10
|
config.logger = <%= config[:camel_cased_umbrella_name] %>::Container[:logger]
|
@@ -15,6 +12,9 @@ module <%= config[:camel_cased_umbrella_name] %>
|
|
15
12
|
config.auto_register = %w[lib/<%= config[:underscored_umbrella_name] %>/<%= config[:underscored_project_name] %>]
|
16
13
|
end
|
17
14
|
|
15
|
+
require root.join("../../system/<%= config[:underscored_umbrella_name] %>/container").to_s
|
16
|
+
import core: <%= config[:camel_cased_umbrella_name] %>::Container
|
17
|
+
|
18
18
|
load_paths! "lib"
|
19
19
|
end
|
20
20
|
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
# auto_register: false
|
2
|
+
|
3
|
+
require "slim"
|
4
|
+
require "dry/view"
|
5
|
+
require "<%= config[:underscored_umbrella_name] %>/<%= config[:underscored_project_name] %>/container"
|
6
|
+
|
7
|
+
module <%= config[:camel_cased_umbrella_name] %>
|
8
|
+
module <%= config[:camel_cased_app_name] %>
|
9
|
+
class View < Dry::View
|
10
|
+
configure do |config|
|
11
|
+
config.paths = [Container.root.join("web/templates")]
|
12
|
+
config.default_context = Container["view_context"]
|
13
|
+
config.layout = "application"
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -12,19 +12,21 @@ module <%= config[:camel_cased_umbrella_name] %>
|
|
12
12
|
opts[:root] = Pathname(__FILE__).join("../../..").realpath.dirname
|
13
13
|
|
14
14
|
use Rack::Session::Cookie, key: "<%= config[:underscored_umbrella_name] %>.<%= config[:underscored_project_name] %>.session", secret: self["core.settings"].session_secret
|
15
|
+
use Rack::MethodOverride
|
15
16
|
|
16
17
|
plugin :csrf, raise: true
|
17
18
|
plugin :dry_view
|
18
19
|
plugin :error_handler
|
19
20
|
plugin :flash
|
20
21
|
plugin :multi_route
|
22
|
+
plugin :all_verbs
|
21
23
|
|
22
24
|
route do |r|
|
23
25
|
# Enable this after writing your first web/routes/ file
|
24
26
|
# r.multi_route
|
25
27
|
|
26
28
|
r.root do
|
27
|
-
r.view
|
29
|
+
r.view :welcome
|
28
30
|
end
|
29
31
|
end
|
30
32
|
|
@@ -1,9 +1,9 @@
|
|
1
|
-
require "<%= config[:underscored_umbrella_name] %>/<%= config[:underscored_project_name] %>/view
|
1
|
+
require "<%= config[:underscored_umbrella_name] %>/<%= config[:underscored_project_name] %>/view"
|
2
2
|
|
3
3
|
module <%= config[:camel_cased_umbrella_name] %>
|
4
4
|
module <%= config[:camel_cased_app_name] %>
|
5
5
|
module Views
|
6
|
-
class Welcome < View
|
6
|
+
class Welcome < View
|
7
7
|
configure do |config|
|
8
8
|
config.template = "welcome"
|
9
9
|
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
# auto_register: false
|
2
|
+
|
3
|
+
require "slim"
|
4
|
+
require "dry/view"
|
5
|
+
require "<%= config[:underscored_project_name] %>/container"
|
6
|
+
|
7
|
+
module <%= config[:camel_cased_app_name] %>
|
8
|
+
class View < Dry::View
|
9
|
+
configure do |config|
|
10
|
+
config.paths = [Container.root.join("web/templates")]
|
11
|
+
config.default_context = Container["view_context"]
|
12
|
+
config.layout = "application"
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
require "dry/view/context"
|
2
|
+
|
3
|
+
module <%= config[:camel_cased_app_name] %>
|
4
|
+
class ViewContext < Dry::View::Context
|
5
|
+
def csrf_token
|
6
|
+
self[:csrf_token]
|
7
|
+
end
|
8
|
+
|
9
|
+
def csrf_metatag
|
10
|
+
self[:csrf_metatag]
|
11
|
+
end
|
12
|
+
|
13
|
+
def csrf_tag
|
14
|
+
self[:csrf_tag]
|
15
|
+
end
|
16
|
+
|
17
|
+
def flash
|
18
|
+
self[:flash]
|
19
|
+
end
|
20
|
+
|
21
|
+
def flash?
|
22
|
+
%i[notice alert].any? { |type| flash[type] }
|
23
|
+
end
|
24
|
+
|
25
|
+
private
|
26
|
+
|
27
|
+
def [](name)
|
28
|
+
_options.fetch(name)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -1,8 +1,8 @@
|
|
1
|
-
require "<%= config[:underscored_project_name] %>/view
|
1
|
+
require "<%= config[:underscored_project_name] %>/view"
|
2
2
|
|
3
3
|
module <%= config[:camel_cased_app_name] %>
|
4
4
|
module Views
|
5
|
-
class Welcome < <%= config[:camel_cased_app_name] %>::View
|
5
|
+
class Welcome < <%= config[:camel_cased_app_name] %>::View
|
6
6
|
configure do |config|
|
7
7
|
config.template = "welcome"
|
8
8
|
end
|
data/lib/dry/web/roda/version.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
class Roda
|
2
4
|
module RodaPlugins
|
3
5
|
module DryView
|
@@ -7,7 +9,7 @@ class Roda
|
|
7
9
|
|
8
10
|
module InstanceMethods
|
9
11
|
def view_context
|
10
|
-
self.class["
|
12
|
+
self.class["view_context"].with(view_context_options)
|
11
13
|
end
|
12
14
|
|
13
15
|
def view_context_options
|
@@ -21,8 +23,9 @@ class Roda
|
|
21
23
|
|
22
24
|
module RequestMethods
|
23
25
|
def view(name, options = {})
|
24
|
-
|
25
|
-
|
26
|
+
resolve(scope.view_key(name)) do |renderer|
|
27
|
+
renderer.call({ context: scope.view_context }.merge(options)).to_s
|
28
|
+
end
|
26
29
|
end
|
27
30
|
end
|
28
31
|
end
|