commit
b26b3cd908
@ -0,0 +1 @@
|
||||
3.1
|
@ -0,0 +1,15 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
source "https://rubygems.org"
|
||||
|
||||
git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }
|
||||
|
||||
gem "sequel"
|
||||
gem "sqlite3"
|
||||
|
||||
group :development do
|
||||
gem "minitest"
|
||||
gem "rake"
|
||||
gem "steep"
|
||||
gem "typeprof"
|
||||
end
|
@ -0,0 +1,71 @@
|
||||
GEM
|
||||
remote: https://rubygems.org/
|
||||
specs:
|
||||
activesupport (7.0.4)
|
||||
concurrent-ruby (~> 1.0, >= 1.0.2)
|
||||
i18n (>= 1.6, < 2)
|
||||
minitest (>= 5.1)
|
||||
tzinfo (~> 2.0)
|
||||
ast (2.4.2)
|
||||
concurrent-ruby (1.1.10)
|
||||
csv (3.2.5)
|
||||
ffi (1.15.5)
|
||||
fileutils (1.6.0)
|
||||
i18n (1.12.0)
|
||||
concurrent-ruby (~> 1.0)
|
||||
json (2.6.2)
|
||||
language_server-protocol (3.17.0.1)
|
||||
listen (3.7.1)
|
||||
rb-fsevent (~> 0.10, >= 0.10.3)
|
||||
rb-inotify (~> 0.9, >= 0.9.10)
|
||||
logger (1.5.1)
|
||||
minitest (5.16.3)
|
||||
parallel (1.22.1)
|
||||
parser (3.1.2.1)
|
||||
ast (~> 2.4.1)
|
||||
rainbow (3.1.1)
|
||||
rake (13.0.6)
|
||||
rb-fsevent (0.11.2)
|
||||
rb-inotify (0.10.1)
|
||||
ffi (~> 1.0)
|
||||
rbs (2.7.0)
|
||||
securerandom (0.2.0)
|
||||
sequel (5.62.0)
|
||||
sqlite3 (1.5.3-arm64-darwin)
|
||||
steep (1.2.1)
|
||||
activesupport (>= 5.1)
|
||||
csv (>= 3.0.9)
|
||||
fileutils (>= 1.1.0)
|
||||
json (>= 2.1.0)
|
||||
language_server-protocol (>= 3.15, < 4.0)
|
||||
listen (~> 3.0)
|
||||
logger (>= 1.3.0)
|
||||
parallel (>= 1.0.0)
|
||||
parser (>= 3.1)
|
||||
rainbow (>= 2.2.2, < 4.0)
|
||||
rbs (>= 2.7.0)
|
||||
securerandom (>= 0.1)
|
||||
strscan (>= 1.0.0)
|
||||
terminal-table (>= 2, < 4)
|
||||
strscan (3.0.4)
|
||||
terminal-table (3.0.2)
|
||||
unicode-display_width (>= 1.1.1, < 3)
|
||||
typeprof (0.21.3)
|
||||
rbs (>= 1.8.1)
|
||||
tzinfo (2.0.5)
|
||||
concurrent-ruby (~> 1.0)
|
||||
unicode-display_width (2.3.0)
|
||||
|
||||
PLATFORMS
|
||||
arm64-darwin-21
|
||||
|
||||
DEPENDENCIES
|
||||
minitest
|
||||
rake
|
||||
sequel
|
||||
sqlite3
|
||||
steep
|
||||
typeprof
|
||||
|
||||
BUNDLED WITH
|
||||
2.3.18
|
@ -0,0 +1,27 @@
|
||||
require "minitest/test_task"
|
||||
require "sequel"
|
||||
|
||||
task default: :test
|
||||
|
||||
namespace :db do
|
||||
desc "Run migrations"
|
||||
task :migrate, [:version] do |t, args|
|
||||
require "sequel/core"
|
||||
Sequel.extension :migration
|
||||
version = args[:version].to_i if args[:version]
|
||||
Sequel.connect(ENV.fetch("DATABASE_URL")) do |db|
|
||||
Sequel::Migrator.run(db, "db/migrations", target: version)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
Minitest::TestTask.create(:test) do |t|
|
||||
t.test_globs = ["test/**/test_*.rb"]
|
||||
end
|
||||
|
||||
namespace :test do
|
||||
desc "Run tests on Ruby file changes"
|
||||
task :watch do
|
||||
sh "fd .*.rb | entr -d rake test"
|
||||
end
|
||||
end
|
@ -0,0 +1,27 @@
|
||||
# D = Steep::Diagnostic
|
||||
#
|
||||
# target :lib do
|
||||
# signature "sig"
|
||||
#
|
||||
# check "lib" # Directory name
|
||||
# check "Gemfile" # File name
|
||||
# check "app/models/**/*.rb" # Glob
|
||||
# # ignore "lib/templates/*.rb"
|
||||
#
|
||||
# # library "pathname", "set" # Standard libraries
|
||||
# # library "strong_json" # Gems
|
||||
#
|
||||
# # configure_code_diagnostics(D::Ruby.strict) # `strict` diagnostics setting
|
||||
# # configure_code_diagnostics(D::Ruby.lenient) # `lenient` diagnostics setting
|
||||
# # configure_code_diagnostics do |hash| # You can setup everything yourself
|
||||
# # hash[D::Ruby::NoMethod] = :information
|
||||
# # end
|
||||
# end
|
||||
|
||||
# target :test do
|
||||
# signature "sig", "sig-private"
|
||||
#
|
||||
# check "test"
|
||||
#
|
||||
# # library "pathname", "set" # Standard libraries
|
||||
# end
|
@ -0,0 +1,61 @@
|
||||
Sequel.migration do
|
||||
change do
|
||||
create_table(:pools) do
|
||||
primary_key :id
|
||||
|
||||
String :name, null: false
|
||||
|
||||
DateTime :created_at, null: false
|
||||
DateTime :updated_at, null: false
|
||||
end
|
||||
|
||||
create_table(:items) do
|
||||
primary_key :id
|
||||
|
||||
foreign_key :pool_id, :pools
|
||||
|
||||
String :title, null: false
|
||||
String :body, null: false
|
||||
|
||||
DateTime :created_at, null: false
|
||||
DateTime :updated_at, null: false
|
||||
end
|
||||
|
||||
create_table(:axes) do
|
||||
primary_key :id
|
||||
|
||||
foreign_key :pool_id, :pools
|
||||
|
||||
String :name, null: false
|
||||
String :better_legend, null: false
|
||||
String :worse_legend, null: false
|
||||
|
||||
DateTime :created_at, null: false
|
||||
DateTime :updated_at, null: false
|
||||
end
|
||||
|
||||
create_table(:ratings) do
|
||||
primary_key :id
|
||||
|
||||
foreign_key :axis_id, :axes
|
||||
foreign_key :winner_id, :items
|
||||
foreign_key :loser_id, :items
|
||||
|
||||
DateTime :created_at, null: false
|
||||
DateTime :updated_at, null: false
|
||||
end
|
||||
|
||||
create_table(:rankings) do
|
||||
primary_key :id
|
||||
|
||||
foreign_key :axis_id, :axes
|
||||
foreign_key :item_id, :items
|
||||
|
||||
Float :mu, null: false
|
||||
Float :sigma, null: false
|
||||
|
||||
DateTime :created_at, null: false
|
||||
DateTime :updated_at, null: false
|
||||
end
|
||||
end
|
||||
end
|
@ -0,0 +1,19 @@
|
||||
require "sequel"
|
||||
|
||||
Sequel::Model.plugin :timestamps, update_on_create: true
|
||||
|
||||
module RankKing
|
||||
DB = Sequel.connect(ENV.fetch("DATABASE_URL"))
|
||||
|
||||
class Pool < Sequel::Model
|
||||
end
|
||||
|
||||
class Item < Sequel::Model
|
||||
end
|
||||
|
||||
class Axis < Sequel::Model(:axes)
|
||||
end
|
||||
|
||||
def self.rate(axis:, winner:, loser:)
|
||||
end
|
||||
end
|
@ -0,0 +1,20 @@
|
||||
require "minitest/autorun"
|
||||
|
||||
require "rank_king"
|
||||
|
||||
module RankKing
|
||||
class TestRankKing < Minitest::Test
|
||||
def test_rank_king
|
||||
pool = Pool.create(name: "Ping Pong")
|
||||
|
||||
alice = Item.create(title: "Alice", body: "")
|
||||
bob = Item.create(title: "Bob", body: "")
|
||||
eve = Item.create(title: "Eve", body: "")
|
||||
mallory = Item.create(title: "Mallory", body: "")
|
||||
|
||||
axis = Axis.create(name: "Rank", better_legend: "Better", worse_legend: "Worse")
|
||||
|
||||
RankKing.rate(axis:, winner: alice, loser: bob)
|
||||
end
|
||||
end
|
||||
end
|
Loading…
Reference in new issue