dry-web 0.1.0 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +8 -0
- data/Gemfile +1 -10
- data/README.md +0 -3
- data/{rodakase.gemspec → dry-web.gemspec} +3 -10
- data/lib/dry-web.rb +0 -4
- data/lib/dry/web/version.rb +1 -1
- data/spec/spec_helper.rb +7 -16
- data/spec/unit/container_spec.rb +52 -0
- metadata +11 -200
- data/lib/dry/web/application.rb +0 -34
- data/lib/dry/web/transaction.rb +0 -19
- data/lib/roda/plugins/flow.rb +0 -71
- data/skeletons/simple/.ruby-version +0 -1
- data/skeletons/simple/Gemfile +0 -11
- data/skeletons/simple/README.md +0 -21
- data/skeletons/simple/Rakefile +0 -4
- data/skeletons/simple/bin/console +0 -6
- data/skeletons/simple/config.ru +0 -3
- data/skeletons/simple/config/application.yml +0 -4
- data/skeletons/simple/core/boot.rb +0 -12
- data/skeletons/simple/core/simple/application.rb +0 -16
- data/skeletons/simple/core/simple/container.rb +0 -11
- data/skeletons/simple/core/simple/import.rb +0 -9
- data/skeletons/simple/lib/entities/user.rb +0 -3
- data/skeletons/simple/log/.gitkeep +0 -0
- data/skeletons/simple/spec/routes/heartbeat_spec.rb +0 -9
- data/skeletons/simple/spec/spec_helper.rb +0 -12
- data/skeletons/simple/spec/unit/user_spec.rb +0 -17
- data/skeletons/simple/spec/web_helper.rb +0 -20
- data/skeletons/simple/web/routes/root.rb +0 -3
- data/spec/dummy/apps/main/core/boot.rb +0 -15
- data/spec/dummy/apps/main/core/main/application.rb +0 -17
- data/spec/dummy/apps/main/core/main/container.rb +0 -16
- data/spec/dummy/apps/main/core/main/import.rb +0 -9
- data/spec/dummy/apps/main/core/main/requests.rb +0 -21
- data/spec/dummy/apps/main/core/main/view.rb +0 -21
- data/spec/dummy/apps/main/lib/main/entities/user.rb +0 -5
- data/spec/dummy/apps/main/lib/main/persistence/repositories/users.rb +0 -16
- data/spec/dummy/apps/main/lib/main/transactions/register_user.rb +0 -19
- data/spec/dummy/apps/main/lib/main/views/users/index.rb +0 -17
- data/spec/dummy/apps/main/log/.gitkeep +0 -0
- data/spec/dummy/apps/main/requests/users.rb +0 -5
- data/spec/dummy/apps/main/web/routes/users.rb +0 -19
- data/spec/dummy/apps/main/web/templates/layouts/app.html.slim +0 -6
- data/spec/dummy/apps/main/web/templates/users/index.html.slim +0 -3
- data/spec/dummy/apps/main/web/templates/users/index/_list.html.slim +0 -3
- data/spec/dummy/apps/main/web/templates/users/index/_list_item.html.slim +0 -1
- data/spec/dummy/bin/console +0 -6
- data/spec/dummy/config.ru +0 -3
- data/spec/dummy/config/application.yml +0 -4
- data/spec/dummy/core/boot.rb +0 -8
- data/spec/dummy/core/dummy/application.rb +0 -7
- data/spec/dummy/core/dummy/container.rb +0 -14
- data/spec/dummy/core/dummy/import.rb +0 -9
- data/spec/dummy/log/.gitkeep +0 -0
- data/spec/dummy/shared/persistence.rb +0 -12
- data/spec/dummy/shared/persistence/db.rb +0 -9
- data/spec/fixtures/test/core/boot/bar.rb +0 -11
- data/spec/fixtures/test/lib/test/dep.rb +0 -4
- data/spec/fixtures/test/lib/test/foo.rb +0 -5
- data/spec/fixtures/test/lib/test/models.rb +0 -4
- data/spec/fixtures/test/lib/test/models/book.rb +0 -6
- data/spec/fixtures/test/lib/test/models/user.rb +0 -6
- data/spec/integration/application_spec.rb +0 -21
- data/spec/request/users_spec.rb +0 -35
- data/spec/support/helpers.rb +0 -15
data/lib/dry/web/application.rb
DELETED
@@ -1,34 +0,0 @@
|
|
1
|
-
require 'roda'
|
2
|
-
require 'dry-configurable'
|
3
|
-
|
4
|
-
module Dry
|
5
|
-
module Web
|
6
|
-
class Application < Roda
|
7
|
-
extend Dry::Configurable
|
8
|
-
|
9
|
-
setting :container
|
10
|
-
setting :routes
|
11
|
-
|
12
|
-
plugin :multi_route
|
13
|
-
plugin :all_verbs
|
14
|
-
|
15
|
-
plugin :flow
|
16
|
-
|
17
|
-
def self.resolve(name)
|
18
|
-
config.container[name]
|
19
|
-
end
|
20
|
-
|
21
|
-
def self.[](name)
|
22
|
-
resolve(name)
|
23
|
-
end
|
24
|
-
|
25
|
-
def self.load_routes!
|
26
|
-
Dir[root.join("#{config.routes}/**/*.rb")].each { |f| require f }
|
27
|
-
end
|
28
|
-
|
29
|
-
def self.root
|
30
|
-
config.container.config.root
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|
34
|
-
end
|
data/lib/dry/web/transaction.rb
DELETED
@@ -1,19 +0,0 @@
|
|
1
|
-
require 'dry-transaction'
|
2
|
-
|
3
|
-
module Dry
|
4
|
-
module Web
|
5
|
-
module Transaction
|
6
|
-
class Composer
|
7
|
-
attr_reader :container
|
8
|
-
|
9
|
-
def initialize(container)
|
10
|
-
@container = container
|
11
|
-
end
|
12
|
-
|
13
|
-
def define(&block)
|
14
|
-
Dry.Transaction(container: container, &block)
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
data/lib/roda/plugins/flow.rb
DELETED
@@ -1,71 +0,0 @@
|
|
1
|
-
# this is taken from roda-flow plugin but it drops dependency on roda-container
|
2
|
-
class Roda
|
3
|
-
module RodaPlugins
|
4
|
-
module Flow
|
5
|
-
module RequestMethods
|
6
|
-
def resolve(*args, &block)
|
7
|
-
on(resolve: args, &block)
|
8
|
-
end
|
9
|
-
|
10
|
-
private
|
11
|
-
|
12
|
-
def match_resolve(resolve)
|
13
|
-
Array(resolve).flatten.each do |key|
|
14
|
-
@captures << roda_class.resolve(key)
|
15
|
-
end
|
16
|
-
end
|
17
|
-
|
18
|
-
def match_to(to)
|
19
|
-
container_key, @block_method = to.to_s.split('#')
|
20
|
-
@block_arg = roda_class.resolve(container_key)
|
21
|
-
end
|
22
|
-
|
23
|
-
def match_inject(inject)
|
24
|
-
@block_arg = @block_arg.call(*inject) if @block_arg
|
25
|
-
end
|
26
|
-
|
27
|
-
def match_call_with(call_with)
|
28
|
-
@captures.concat(call_with)
|
29
|
-
end
|
30
|
-
|
31
|
-
def if_match(*args, &block)
|
32
|
-
path = @remaining_path
|
33
|
-
# For every block, we make sure to reset captures so that
|
34
|
-
# nesting matchers won't mess with each other's captures.
|
35
|
-
@captures.clear
|
36
|
-
|
37
|
-
return unless match_all(args)
|
38
|
-
block_result(get_block(&block).call(*captures))
|
39
|
-
throw :halt, response.finish
|
40
|
-
ensure
|
41
|
-
@remaining_path = path
|
42
|
-
end
|
43
|
-
|
44
|
-
def always(&block)
|
45
|
-
super(&get_block(&block))
|
46
|
-
end
|
47
|
-
|
48
|
-
def get_block(&block)
|
49
|
-
if block_given?
|
50
|
-
block
|
51
|
-
elsif @block_arg
|
52
|
-
if @block_method
|
53
|
-
block_arg = @block_arg.method(@block_method)
|
54
|
-
else
|
55
|
-
block_arg = @block_arg
|
56
|
-
end
|
57
|
-
clear_block_args
|
58
|
-
block_arg
|
59
|
-
end
|
60
|
-
end
|
61
|
-
|
62
|
-
def clear_block_args
|
63
|
-
@block_arg = nil
|
64
|
-
@block_method = nil
|
65
|
-
end
|
66
|
-
end
|
67
|
-
end
|
68
|
-
|
69
|
-
register_plugin(:flow, Flow)
|
70
|
-
end
|
71
|
-
end
|
@@ -1 +0,0 @@
|
|
1
|
-
2.3.0
|
data/skeletons/simple/Gemfile
DELETED
data/skeletons/simple/README.md
DELETED
@@ -1,21 +0,0 @@
|
|
1
|
-
# Simple Skeleton App
|
2
|
-
|
3
|
-
## Getting started
|
4
|
-
|
5
|
-
```
|
6
|
-
rackup
|
7
|
-
```
|
8
|
-
|
9
|
-
## Development
|
10
|
-
|
11
|
-
```
|
12
|
-
$ bundle exec rspec
|
13
|
-
```
|
14
|
-
|
15
|
-
Run specs on file changes:
|
16
|
-
|
17
|
-
```
|
18
|
-
$ ls **/*.rb | entr -c bundle exec rspec
|
19
|
-
```
|
20
|
-
|
21
|
-
Requires [entr](http://entrproject.org/) to be installed.
|
data/skeletons/simple/Rakefile
DELETED
data/skeletons/simple/config.ru
DELETED
@@ -1,12 +0,0 @@
|
|
1
|
-
require_relative 'simple/container'
|
2
|
-
|
3
|
-
Simple::Container.finalize! do |container|
|
4
|
-
# Register your additional dependencies used by the web app
|
5
|
-
#
|
6
|
-
# In example a logger:
|
7
|
-
#
|
8
|
-
# require 'logger'
|
9
|
-
# container.register(:logger, Logger.new(container.root.join("log/#{container.config.env}.log")))
|
10
|
-
end
|
11
|
-
|
12
|
-
require 'simple/application'
|
@@ -1,16 +0,0 @@
|
|
1
|
-
require 'dry/web/application'
|
2
|
-
|
3
|
-
module Simple
|
4
|
-
class Application < Dry::Web::Application
|
5
|
-
configure do |config|
|
6
|
-
config.routes = 'web/routes'.freeze
|
7
|
-
config.container = Container
|
8
|
-
end
|
9
|
-
|
10
|
-
route do |r|
|
11
|
-
r.multi_route
|
12
|
-
end
|
13
|
-
|
14
|
-
load_routes!
|
15
|
-
end
|
16
|
-
end
|
File without changes
|
@@ -1,12 +0,0 @@
|
|
1
|
-
# set the env here since the app config loaded by container uses this name by
|
2
|
-
# default
|
3
|
-
ENV['RACK_ENV'] = 'test'
|
4
|
-
|
5
|
-
# Only load the container, if a test needs the whole web stack it should require
|
6
|
-
# web_helper instead
|
7
|
-
require_relative '../core/simple/container'
|
8
|
-
|
9
|
-
RSpec.configure do |config|
|
10
|
-
# Obviously
|
11
|
-
config.disable_monkey_patching!
|
12
|
-
end
|
@@ -1,17 +0,0 @@
|
|
1
|
-
require 'entities/user'
|
2
|
-
|
3
|
-
RSpec.describe Entities::User do
|
4
|
-
subject(:user) { Entities::User.new(1, 'Jane') }
|
5
|
-
|
6
|
-
describe '#id' do
|
7
|
-
it 'works' do
|
8
|
-
expect(user.id).to be(1)
|
9
|
-
end
|
10
|
-
end
|
11
|
-
|
12
|
-
describe '#name' do
|
13
|
-
it 'works too' do
|
14
|
-
expect(user.name).to eql('Jane')
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
@@ -1,20 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
require 'rack/test'
|
4
|
-
|
5
|
-
require_relative '../core/boot'
|
6
|
-
|
7
|
-
module AppHelper
|
8
|
-
def app
|
9
|
-
Simple::Application.app
|
10
|
-
end
|
11
|
-
end
|
12
|
-
|
13
|
-
RSpec.configure do |config|
|
14
|
-
config.before(:suite) do
|
15
|
-
Simple::Application.freeze
|
16
|
-
end
|
17
|
-
|
18
|
-
config.include Rack::Test::Methods, type: :request
|
19
|
-
config.include AppHelper, type: :request
|
20
|
-
end
|
@@ -1,15 +0,0 @@
|
|
1
|
-
require_relative 'main/container'
|
2
|
-
|
3
|
-
Main::Container.finalize! do |container|
|
4
|
-
require 'logger'
|
5
|
-
container.register(:logger, Logger.new(container.root.join('log/app.log')))
|
6
|
-
|
7
|
-
require 'dry/web/transaction'
|
8
|
-
container.register(:transaction, Dry::Web::Transaction::Composer.new(container))
|
9
|
-
end
|
10
|
-
|
11
|
-
require 'main/application'
|
12
|
-
require 'main/view'
|
13
|
-
require 'main/requests'
|
14
|
-
|
15
|
-
Main::Container.require('requests/**/*.rb')
|
@@ -1,17 +0,0 @@
|
|
1
|
-
require 'dry/web/application'
|
2
|
-
require_relative 'container'
|
3
|
-
|
4
|
-
module Main
|
5
|
-
class Application < Dry::Web::Application
|
6
|
-
configure do |config|
|
7
|
-
config.routes = 'web/routes'.freeze
|
8
|
-
config.container = Main::Container
|
9
|
-
end
|
10
|
-
|
11
|
-
route do |r|
|
12
|
-
r.multi_route
|
13
|
-
end
|
14
|
-
|
15
|
-
load_routes!
|
16
|
-
end
|
17
|
-
end
|
@@ -1,16 +0,0 @@
|
|
1
|
-
require 'dry/web/container'
|
2
|
-
|
3
|
-
module Main
|
4
|
-
class Container < Dry::Web::Container
|
5
|
-
configure do |config|
|
6
|
-
config.root = Pathname(__FILE__).join('../..').realpath.dirname.freeze
|
7
|
-
config.auto_register = 'lib'
|
8
|
-
end
|
9
|
-
|
10
|
-
require root.join('../../shared/persistence').to_s
|
11
|
-
|
12
|
-
import Persistence::Container
|
13
|
-
|
14
|
-
load_paths!('lib')
|
15
|
-
end
|
16
|
-
end
|
@@ -1,21 +0,0 @@
|
|
1
|
-
require_relative 'container'
|
2
|
-
|
3
|
-
module Main
|
4
|
-
module Requests
|
5
|
-
class Registrar
|
6
|
-
attr_reader :container
|
7
|
-
|
8
|
-
def initialize(container)
|
9
|
-
@container = container
|
10
|
-
end
|
11
|
-
|
12
|
-
def define(identifier, &block)
|
13
|
-
container.register(identifier, container[:transaction].define(&block))
|
14
|
-
end
|
15
|
-
end
|
16
|
-
|
17
|
-
def self.define(&block)
|
18
|
-
yield(Registrar.new(Container))
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
@@ -1,21 +0,0 @@
|
|
1
|
-
require 'slim'
|
2
|
-
require 'dry-view'
|
3
|
-
|
4
|
-
require_relative 'container'
|
5
|
-
|
6
|
-
module Main
|
7
|
-
class Page
|
8
|
-
def title
|
9
|
-
'Woohaa'
|
10
|
-
end
|
11
|
-
end
|
12
|
-
end
|
13
|
-
|
14
|
-
module Main
|
15
|
-
class View < Dry::View::Layout
|
16
|
-
setting :root, Container.root.join('web/templates')
|
17
|
-
setting :scope, Page.new
|
18
|
-
setting :formats, {html: :slim}
|
19
|
-
setting :name, 'app'.freeze
|
20
|
-
end
|
21
|
-
end
|