Coder Social home page Coder Social logo

yegor256 / 0rsk Goto Github PK

View Code? Open in Web Editor NEW
20.0 4.0 2.0 1.18 MB

Online Risk Manager

Home Page: https://www.0rsk.com

License: MIT License

Ruby 82.07% Shell 0.23% JavaScript 1.93% Procfile 0.03% Haml 15.74%
ruby risk-management risks risk-analysis

0rsk's Introduction

EO principles respected here DevOps By Rultor.com We recommend RubyMine

rake PDD status Test Coverage Maintainability Hits-of-Code

Availability at SixNines

This is an online risk manager, where you register all know risks in your project, assign probabilities and impacts, and then create mitigation and avoidance plans for them. Using this information the system generates an agenda of the most critical tasks for you.

Read this blog post, it explains it all in details: 0rsk.com: Cause + Risk + Effect.

Here you can find some inspiration: yegor256/awesome-risks.

It's free for everybody.

How to contribute

Read these guidelines. Make sure you build is green before you contribute your pull request. You will need to have Ruby 2.3+, Java 8+, Maven 3.2+, PostgreSQL 10+, and Bundler installed. Then:

$ bundle update
$ bundle exec rake

If it's clean and you don't see any error messages, submit your pull request.

To run a single unit test you should first do this:

$ bundle exec rake run

And then, in another terminal (for example):

$ ruby test/test_risks.rb -n test_adds_and_fetches

If you want to test it in your browser, open http://localhost:9292. If you want to login as a test user, just open this: http://localhost:9292?glogin=test.

Should work.

0rsk's People

Contributors

dependabot[bot] avatar pnatashap avatar renovate[bot] avatar rultor avatar yegor256 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

Forkers

pnatashap

0rsk's Issues

Low test coverage!

Cause: Test coverage is under 40% (39% at the moment of writing).
Risk: Bugs may be easily introduced
Effect: Users will not be happy

Did I get this right? :)

ERROR: value too long for type character(1) caused after edit risk emoji

Step to reproduce:

  1. Go to page edit|add risk;
  2. Change Emojy field to :);
  3. Save|Add risk;

Version 0.6.2

Full stacktrace:

ERROR:  value too long for type character(1)

	/app/vendor/bundle/ruby/2.6.0/gems/pgtk-0.6.2/lib/pgtk/pool.rb:165:in `async_exec_params'
	/app/vendor/bundle/ruby/2.6.0/gems/pgtk-0.6.2/lib/pgtk/pool.rb:165:in `exec'
	/app/vendor/bundle/ruby/2.6.0/gems/pgtk-0.6.2/lib/pgtk/pool.rb:135:in `block in exec'
	/app/vendor/bundle/ruby/2.6.0/gems/pgtk-0.6.2/lib/pgtk/pool.rb:184:in `connect'
	/app/vendor/bundle/ruby/2.6.0/gems/pgtk-0.6.2/lib/pgtk/pool.rb:128:in `exec'
	/app/objects/cause.rb:50:in `emoji='
	/app/front/front_triple.rb:107:in `block in <top (required)>'
	/app/vendor/bundle/ruby/2.6.0/gems/sinatra-2.0.4/lib/sinatra/base.rb:1635:in `call'
	/app/vendor/bundle/ruby/2.6.0/gems/sinatra-2.0.4/lib/sinatra/base.rb:1635:in `block in compile!'
	/app/vendor/bundle/ruby/2.6.0/gems/sinatra-2.0.4/lib/sinatra/base.rb:992:in `block (3 levels) in route!'
	/app/vendor/bundle/ruby/2.6.0/gems/sinatra-2.0.4/lib/sinatra/base.rb:1011:in `route_eval'
	/app/vendor/bundle/ruby/2.6.0/gems/sinatra-2.0.4/lib/sinatra/base.rb:992:in `block (2 levels) in route!'
	/app/vendor/bundle/ruby/2.6.0/gems/sinatra-2.0.4/lib/sinatra/base.rb:1040:in `block in process_route'
	/app/vendor/bundle/ruby/2.6.0/gems/sinatra-2.0.4/lib/sinatra/base.rb:1038:in `catch'
	/app/vendor/bundle/ruby/2.6.0/gems/sinatra-2.0.4/lib/sinatra/base.rb:1038:in `process_route'
	/app/vendor/bundle/ruby/2.6.0/gems/sinatra-2.0.4/lib/sinatra/base.rb:990:in `block in route!'
	/app/vendor/bundle/ruby/2.6.0/gems/sinatra-2.0.4/lib/sinatra/base.rb:989:in `each'
	/app/vendor/bundle/ruby/2.6.0/gems/sinatra-2.0.4/lib/sinatra/base.rb:989:in `route!'
	/app/vendor/bundle/ruby/2.6.0/gems/sinatra-2.0.4/lib/sinatra/base.rb:1097:in `block in dispatch!'
	/app/vendor/bundle/ruby/2.6.0/gems/sinatra-2.0.4/lib/sinatra/base.rb:1076:in `block in invoke'
	/app/vendor/bundle/ruby/2.6.0/gems/sinatra-2.0.4/lib/sinatra/base.rb:1076:in `catch'
	/app/vendor/bundle/ruby/2.6.0/gems/sinatra-2.0.4/lib/sinatra/base.rb:1076:in `invoke'
	/app/vendor/bundle/ruby/2.6.0/gems/sinatra-2.0.4/lib/sinatra/base.rb:1094:in `dispatch!'
	/app/vendor/bundle/ruby/2.6.0/gems/sinatra-2.0.4/lib/sinatra/base.rb:924:in `block in call!'
	/app/vendor/bundle/ruby/2.6.0/gems/sinatra-2.0.4/lib/sinatra/base.rb:1076:in `block in invoke'
	/app/vendor/bundle/ruby/2.6.0/gems/sinatra-2.0.4/lib/sinatra/base.rb:1076:in `catch'
	/app/vendor/bundle/ruby/2.6.0/gems/sinatra-2.0.4/lib/sinatra/base.rb:1076:in `invoke'
	/app/vendor/bundle/ruby/2.6.0/gems/sinatra-2.0.4/lib/sinatra/base.rb:924:in `call!'
	/app/vendor/bundle/ruby/2.6.0/gems/sinatra-2.0.4/lib/sinatra/base.rb:913:in `call'
	/app/vendor/bundle/ruby/2.6.0/gems/rack-ssl-1.4.1/lib/rack/ssl.rb:27:in `call'
	/app/vendor/bundle/ruby/2.6.0/gems/rack-protection-2.0.4/lib/rack/protection/xss_header.rb:18:in `call'
	/app/vendor/bundle/ruby/2.6.0/gems/rack-protection-2.0.4/lib/rack/protection/path_traversal.rb:16:in `call'
	/app/vendor/bundle/ruby/2.6.0/gems/rack-protection-2.0.4/lib/rack/protection/json_csrf.rb:26:in `call'
	/app/vendor/bundle/ruby/2.6.0/gems/rack-protection-2.0.4/lib/rack/protection/base.rb:50:in `call'
	/app/vendor/bundle/ruby/2.6.0/gems/rack-protection-2.0.4/lib/rack/protection/base.rb:50:in `call'
	/app/vendor/bundle/ruby/2.6.0/gems/rack-protection-2.0.4/lib/rack/protection/frame_options.rb:31:in `call'
	/app/vendor/bundle/ruby/2.6.0/gems/rack-2.0.6/lib/rack/logger.rb:15:in `call'
	/app/vendor/bundle/ruby/2.6.0/gems/rack-2.0.6/lib/rack/common_logger.rb:33:in `call'
	/app/vendor/bundle/ruby/2.6.0/gems/sinatra-2.0.4/lib/sinatra/base.rb:231:in `call'
	/app/vendor/bundle/ruby/2.6.0/gems/sinatra-2.0.4/lib/sinatra/base.rb:224:in `call'
	/app/vendor/bundle/ruby/2.6.0/gems/rack-2.0.6/lib/rack/head.rb:12:in `call'
	/app/vendor/bundle/ruby/2.6.0/gems/rack-2.0.6/lib/rack/method_override.rb:22:in `call'
	/app/vendor/bundle/ruby/2.6.0/gems/sinatra-2.0.4/lib/sinatra/base.rb:194:in `call'
	/app/vendor/bundle/ruby/2.6.0/gems/sinatra-2.0.4/lib/sinatra/base.rb:1957:in `call'
	/app/vendor/bundle/ruby/2.6.0/gems/sinatra-2.0.4/lib/sinatra/base.rb:1502:in `block in call'
	/app/vendor/bundle/ruby/2.6.0/gems/sinatra-2.0.4/lib/sinatra/base.rb:1729:in `synchronize'
	/app/vendor/bundle/ruby/2.6.0/gems/sinatra-2.0.4/lib/sinatra/base.rb:1502:in `call'
	/app/vendor/bundle/ruby/2.6.0/gems/rack-2.0.6/lib/rack/handler/webrick.rb:86:in `service'
	/app/vendor/ruby-2.6.0/lib/ruby/2.6.0/webrick/httpserver.rb:140:in `service'
	/app/vendor/ruby-2.6.0/lib/ruby/2.6.0/webrick/httpserver.rb:96:in `run'
	/app/vendor/ruby-2.6.0/lib/ruby/2.6.0/webrick/server.rb:307:in `block in start_thread'

/ranked search by part

Let's make it possible to search in the /ranked page by the name of any part, for example: /ranked?q=C56. This query should find all triples that are connected to the cause no.56.

code duplication in tests

We have serious code duplication in unit tests. Let's introduce test_triple, test_risk, test_plan and similar helpers in test__helper.

Can't understand some fields

I can't understand some fields when creating new "cause", "risk", "effect", it's 3 gray fields and 1 fields with prepared emoji. I think some kind of hint is needed here:
scrot-2019-05-14-12:00:52

categories

Let's add categories to causes. Each cause should be attached to some category, like:

money, people, assets, heritage, legal, etc

PG::ForeignKeyViolation: ERROR: update or delete on table "cause" violates foreign key constraint "triple_cause_fkey" on table "triple"

Sentry:

PG::ForeignKeyViolation: ERROR:  update or delete on table "cause" violates foreign key constraint "triple_cause_fkey" on table "triple"
DETAIL:  Key (id)=(754) is still referenced from table "triple".

  from pgtk/pool.rb:165:in `async_exec_params'
  from pgtk/pool.rb:165:in `exec'
  from pgtk/pool.rb:135:in `block in exec'
  from pgtk/pool.rb:184:in `connect'
  from pgtk/pool.rb:128:in `exec'
  from objects/projects.rb:45:in `delete'
  from 0rsk.rb:148:in `block in <top (required)>'
  from sinatra/base.rb:1635:in `call'
  from sinatra/base.rb:1635:in `block in compile!'
  from sinatra/base.rb:992:in `block (3 levels) in route!'
  from sinatra/base.rb:1011:in `route_eval'
  from sinatra/base.rb:992:in `block (2 levels) in route!'
  from sinatra/base.rb:1040:in `block in process_route'
  from sinatra/base.rb:1038:in `catch'
  from sinatra/base.rb:1038:in `process_route'
  from sinatra/base.rb:990:in `block in route!'
  from sinatra/base.rb:989:in `each'
  from sinatra/base.rb:989:in `route!'
  from sinatra/base.rb:1097:in `block in dispatch!'
  from sinatra/base.rb:1076:in `block in invoke'
  from sinatra/base.rb:1076:in `catch'
  from sinatra/base.rb:1076:in `invoke'
  from sinatra/base.rb:1094:in `dispatch!'
  from sinatra/base.rb:924:in `block in call!'
  from sinatra/base.rb:1076:in `block in invoke'
  from sinatra/base.rb:1076:in `catch'
  from sinatra/base.rb:1076:in `invoke'
  from sinatra/base.rb:924:in `call!'
  from sinatra/base.rb:913:in `call'
  from rack/ssl.rb:27:in `call'
  from rack/protection/xss_header.rb:18:in `call'
  from rack/protection/path_traversal.rb:16:in `call'
  from rack/protection/json_csrf.rb:26:in `call'
  from rack/protection/base.rb:50:in `call'
  from rack/protection/base.rb:50:in `call'
  from rack/protection/frame_options.rb:31:in `call'
  from rack/logger.rb:15:in `call'
  from rack/common_logger.rb:33:in `call'
  from sinatra/base.rb:231:in `call'
  from sinatra/base.rb:224:in `call'
  from rack/head.rb:12:in `call'
  from rack/method_override.rb:22:in `call'
  from sinatra/base.rb:194:in `call'
  from sinatra/base.rb:1957:in `call'
  from sinatra/base.rb:1502:in `block in call'
  from sinatra/base.rb:1729:in `synchronize'
  from sinatra/base.rb:1502:in `call'
  from rack/handler/webrick.rb:86:in `service'
  from webrick/httpserver.rb:140:in `service'
  from webrick/httpserver.rb:96:in `run'
  from webrick/server.rb:307:in `block in start_thread'

trackers

Let's make it possible to connect project tasks with a tracker. At the moment the only tracker is Telegram. Let's add GitHub.

The tracker should take a new task, submit a GitHub issue, and when the issue is closed, the task should be removed from the list of tasks.

Telegram bot is not working

@zerorsk_bot is not responding for any message, I tried some predefined commands like /done and /tasks but it's keeping silence. (also tried hello and version - no response)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.