Created
February 21, 2019 18:17
-
-
Save we4tech/5a707ff18d0b9ad4f4a9b498e1e2b420 to your computer and use it in GitHub Desktop.
Code for the Dependency Injection (https://docs.google.com/presentation/d/1YuOOdaitw3jcA_QoB7Xp1kCznnAg_Z6dg6R-XI53Ifs/edit?usp=sharing)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# frozen_string_literal: true | |
require 'dry-container' | |
module DiTalk | |
module Services | |
class ClassicGreeter | |
def greet(name) | |
"Hello #{name}" | |
end | |
end | |
class NewEraGreeter | |
def greet(name) | |
"'s up, #{name}" | |
end | |
end | |
class Container | |
extend Dry::Container::Mixin | |
register(:greeter, memoize: true) do | |
ClassicGreeter.new | |
end | |
end | |
end | |
module Controllers | |
class Greeter | |
def initialize(container) | |
@greeter = container.resolve(:greeter) | |
end | |
def call(env) | |
[200, {}, [@greeter.greet('WeWork')]] | |
end | |
end | |
end | |
end |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# frozen_string_literal: true | |
require_relative 'app' | |
container = DiTalk::Services::Container | |
run DiTalk::Controllers::Greeter.new(container) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# frozen_string_literal: true | |
source "https://rubygems.org" | |
git_source(:github) {|repo_name| "https://github.com/#{repo_name}" } | |
gem 'rack' | |
gem 'dry-container' | |
gem 'minitest' | |
gem 'mocha' |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment