Skip to content

Instantly share code, notes, and snippets.

@we4tech
Created February 21, 2019 18:17
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save we4tech/5a707ff18d0b9ad4f4a9b498e1e2b420 to your computer and use it in GitHub Desktop.
Save we4tech/5a707ff18d0b9ad4f4a9b498e1e2b420 to your computer and use it in GitHub Desktop.
# 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
# frozen_string_literal: true
require_relative 'app'
container = DiTalk::Services::Container
run DiTalk::Controllers::Greeter.new(container)
# 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