Skip to content

Commit

Permalink
Replace container to dry-system and use one container in all application
Browse files Browse the repository at this point in the history
  • Loading branch information
davydovanton committed Oct 9, 2017
1 parent f838828 commit d2164a2
Show file tree
Hide file tree
Showing 16 changed files with 76 additions and 92 deletions.
2 changes: 1 addition & 1 deletion config/initializers/application.rb
Original file line number Diff line number Diff line change
@@ -1 +1 @@
OSSBoard::Application.finalize!
Container.finalize!
4 changes: 2 additions & 2 deletions config/initializers/sidekiq.rb
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
require 'sidekiq-scheduler'

Sidekiq.configure_server do |config|
config.redis = OSSBoard::Application[:redis]
config.redis = Container[:redis]
end

Sidekiq.configure_client do |config|
config.redis = OSSBoard::Application[:redis]
config.redis = Container[:redis]
end
68 changes: 0 additions & 68 deletions lib/container.rb

This file was deleted.

2 changes: 0 additions & 2 deletions lib/ossboard.rb
Original file line number Diff line number Diff line change
@@ -1,2 +0,0 @@
module OSSBoard
end
2 changes: 1 addition & 1 deletion lib/ossboard/repositories/bloked_user_repository.rb
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
class BlokedUserRepository
include OSSBoard::Import[:redis]
include Import[:redis]

def create(nickname)
redis.with { |conn| conn.sadd(REDIS_LIST_KEY, nickname) }
Expand Down
3 changes: 1 addition & 2 deletions lib/ossboard/services/task_tweeter.rb
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
module Services
class TaskTwitter
include OSSBoard::Import[:twitter]
include Import['services.url_shortener']
include Import[:twitter, 'services.url_shortener']

def call(task)
tweet text(task)
Expand Down
2 changes: 1 addition & 1 deletion spec/admin/controllers/unban_users/update_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
let(:params) { { login: login, 'rack.session' => session } }

before { BlokedUserRepository.new.create('anton') }
after { OSSBoard::Application[:redis].with(&:flushdb) }
after { Container[:redis].with(&:flushdb) }

context 'when login was banned' do
let(:login) { 'anton' }
Expand Down
3 changes: 1 addition & 2 deletions spec/admin/controllers/users/destroy_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,7 @@
let(:params) { { id: 1, 'rack.session' => session, login: 'davydovanton' } }

before do
OSSBoard::Application[:redis].with(&:flushdb)

Container[:redis].with(&:flushdb)
Fabricate.create(:user, login: 'davydovanton')
end

Expand Down
2 changes: 1 addition & 1 deletion spec/admin/views/users/index_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
let(:repo) { UserRepository.new }

before do
OSSBoard::Application[:redis].with(&:flushdb)
Container[:redis].with(&:flushdb)
end

describe 'users' do
Expand Down
2 changes: 1 addition & 1 deletion spec/auth/controllers/sessions/create_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -146,7 +146,7 @@

context 'when user in black list' do
before { BlokedUserRepository.new.create('davydovanton') }
after { OSSBoard::Application[:redis].with(&:flushdb) }
after { Container[:redis].with(&:flushdb) }

it 'creates a new user' do
expect { action.call(params) }.to change { repo.all.count }.by(0)
Expand Down
2 changes: 1 addition & 1 deletion spec/ossboard/repositories/bloked_user_repository_spec.rb
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
RSpec.describe BlokedUserRepository do
before { OSSBoard::Application[:redis].with(&:flushdb) }
before { Container[:redis].with(&:flushdb) }

let(:repo) { BlokedUserRepository.new }

Expand Down
4 changes: 2 additions & 2 deletions spec/spec_helper.rb
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,8 @@

require_relative '../config/environment'
require 'dry/container/stub'
OSSBoard::Application.enable_stubs!
OSSBoard::Application.stub(:redis, ConnectionPool.new(size: 10, timeout: 3) { MockRedis.new })
Container.enable_stubs!
Container.stub(:redis, ConnectionPool.new(size: 10, timeout: 3) { MockRedis.new })

Hanami.boot

Expand Down
2 changes: 1 addition & 1 deletion system/boot/redis.rb
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
OSSBoard::Application.finalize(:redis) do |container|
Container.finalize(:redis) do |container|
uri = URI.parse(ENV.fetch('REDISTOGO_URL', ''))
redis = ConnectionPool.new(size: 10, timeout: 3) do
Redis.new(driver: :hiredis, host: uri.host, port: uri.port, password: uri.password)
Expand Down
2 changes: 1 addition & 1 deletion system/boot/twitter.rb
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
OSSBoard::Application.finalize(:twitter) do |container|
Container.finalize(:twitter) do |container|
client = Twitter::REST::Client.new do |config|
config.consumer_key = ENV["TWITTER_CONSUMER_KEY"]
config.consumer_secret = ENV["TWITTER_CONSUMER_SECRET"]
Expand Down
64 changes: 61 additions & 3 deletions system/container.rb
Original file line number Diff line number Diff line change
@@ -1,7 +1,65 @@
require 'dry/system/container'

module OSSBoard
class Application < Dry::System::Container
configure
class Container < Dry::System::Container
namespace('core') do
register('markdown_parser') do
load_file! 'ossboard/core/markdown_parser'
Core::MarkdownParser.new
end
register('http_request') do
load_file! 'ossboard/core/http_request'
Core::HttpRequest.new
end
end

namespace('services') do
register('analytic_reporter') do
load_file! 'ossboard/services/analytic_reporter'
Services::AnalyticReporter.new
end
register('points_calculator') do
load_file! 'ossboard/services/points_calculator'
Services::PointsCalculator.new
end
register('url_shortener') do
load_file! 'ossboard/services/url_shortener'
Services::UrlShortener.new
end
register('task_twitter') do
load_file! 'ossboard/services/task_tweeter'
Services::TaskTwitter.new
end
end

namespace('tasks') do
namespace('interactors') do
register('create') { Tasks::Interactors::Create }
register('update') { Tasks::Interactors::Update }
register('update_status') { Tasks::Interactors::UpdateStatus }
register('issue_information') { Tasks::Interactors::IssueInformation }
end

namespace('services') do
register('github_issue_requester') do
load_file! 'tasks/services/github_issue_requester'
Tasks::Services::GithubIssueRequester.new
end
register('gitlab_issue_requester') do
load_file! 'tasks/services/gitlab_issue_requester'
Tasks::Services::GitlabIssueRequester.new
end
end

register('matchers.git_host') do
load_file! 'tasks/matchers/git_host'
Tasks::Matchers::GitHost::Matcher
end
end

def self.load_file!(path)
container_path = File.dirname(__FILE__)
require_relative "#{container_path}/../lib/#{path}"
end

configure
end
4 changes: 1 addition & 3 deletions system/import.rb
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
require_relative './container'

module OSSBoard
Import = Application.injector
end
Import = Container.injector

0 comments on commit d2164a2

Please sign in to comment.