Compare commits

...

4 Commits

31 changed files with 529 additions and 399 deletions

View File

@ -1 +1 @@
3.2.2 3.4.3

13
Gemfile
View File

@ -1,8 +1,8 @@
source 'https://rubygems.org' source 'https://rubygems.org'
ruby '3.2.2' ruby '3.4.3'
gem 'rails', '~> 7.0' gem 'rails', '~> 8.0'
# TODO Upgrade sprockets gem 'redis' #, '~> 4.0'
gem 'redis', '~> 4.0' # gem 'bootsnap'
gem 'sprockets' #, '~> 3.7' gem 'sprockets' #, '~> 3.7'
gem 'sass-rails' #, '~> 4.0.3' gem 'sass-rails' #, '~> 4.0.3'
# gem 'uglifier' #, '>= 1.3.0' # gem 'uglifier' #, '>= 1.3.0'
@ -17,7 +17,7 @@ gem 'devise_invitable'
gem 'haml-rails' gem 'haml-rails'
gem 'high_voltage' gem 'high_voltage'
gem 'pg' gem 'pg'
gem 'puma', '6' gem 'puma' #, '6'
gem 'pundit' gem 'pundit'
gem 'simple_form' gem 'simple_form'
gem 'dotenv-rails' gem 'dotenv-rails'
@ -61,7 +61,8 @@ group :development do
gem 'guard-ctags-bundler' gem 'guard-ctags-bundler'
end end
group :development, :test do group :development, :test do
gem 'factory_girl_rails' # todo upgrade to factory_bot
# gem 'factory_girl_rails'
gem 'faker' gem 'faker'
gem 'pry-rails' gem 'pry-rails'
gem 'pry-rescue' gem 'pry-rescue'

View File

@ -8,113 +8,111 @@ GIT
GEM GEM
remote: https://rubygems.org/ remote: https://rubygems.org/
specs: specs:
actioncable (7.1.2) actioncable (8.0.2)
actionpack (= 7.1.2) actionpack (= 8.0.2)
activesupport (= 7.1.2) activesupport (= 8.0.2)
nio4r (~> 2.0) nio4r (~> 2.0)
websocket-driver (>= 0.6.1) websocket-driver (>= 0.6.1)
zeitwerk (~> 2.6) zeitwerk (~> 2.6)
actionmailbox (7.1.2) actionmailbox (8.0.2)
actionpack (= 7.1.2) actionpack (= 8.0.2)
activejob (= 7.1.2) activejob (= 8.0.2)
activerecord (= 7.1.2) activerecord (= 8.0.2)
activestorage (= 7.1.2) activestorage (= 8.0.2)
activesupport (= 7.1.2) activesupport (= 8.0.2)
mail (>= 2.7.1) mail (>= 2.8.0)
net-imap actionmailer (8.0.2)
net-pop actionpack (= 8.0.2)
net-smtp actionview (= 8.0.2)
actionmailer (7.1.2) activejob (= 8.0.2)
actionpack (= 7.1.2) activesupport (= 8.0.2)
actionview (= 7.1.2) mail (>= 2.8.0)
activejob (= 7.1.2)
activesupport (= 7.1.2)
mail (~> 2.5, >= 2.5.4)
net-imap
net-pop
net-smtp
rails-dom-testing (~> 2.2) rails-dom-testing (~> 2.2)
actionpack (7.1.2) actionpack (8.0.2)
actionview (= 7.1.2) actionview (= 8.0.2)
activesupport (= 7.1.2) activesupport (= 8.0.2)
nokogiri (>= 1.8.5) nokogiri (>= 1.8.5)
racc
rack (>= 2.2.4) rack (>= 2.2.4)
rack-session (>= 1.0.1) rack-session (>= 1.0.1)
rack-test (>= 0.6.3) rack-test (>= 0.6.3)
rails-dom-testing (~> 2.2) rails-dom-testing (~> 2.2)
rails-html-sanitizer (~> 1.6) rails-html-sanitizer (~> 1.6)
actiontext (7.1.2) useragent (~> 0.16)
actionpack (= 7.1.2) actiontext (8.0.2)
activerecord (= 7.1.2) actionpack (= 8.0.2)
activestorage (= 7.1.2) activerecord (= 8.0.2)
activesupport (= 7.1.2) activestorage (= 8.0.2)
activesupport (= 8.0.2)
globalid (>= 0.6.0) globalid (>= 0.6.0)
nokogiri (>= 1.8.5) nokogiri (>= 1.8.5)
actionview (7.1.2) actionview (8.0.2)
activesupport (= 7.1.2) activesupport (= 8.0.2)
builder (~> 3.1) builder (~> 3.1)
erubi (~> 1.11) erubi (~> 1.11)
rails-dom-testing (~> 2.2) rails-dom-testing (~> 2.2)
rails-html-sanitizer (~> 1.6) rails-html-sanitizer (~> 1.6)
activejob (7.1.2) activejob (8.0.2)
activesupport (= 7.1.2) activesupport (= 8.0.2)
globalid (>= 0.3.6) globalid (>= 0.3.6)
activemodel (7.1.2) activemodel (8.0.2)
activesupport (= 7.1.2) activesupport (= 8.0.2)
activerecord (7.1.2) activerecord (8.0.2)
activemodel (= 7.1.2) activemodel (= 8.0.2)
activesupport (= 7.1.2) activesupport (= 8.0.2)
timeout (>= 0.4.0) timeout (>= 0.4.0)
activestorage (7.1.2) activestorage (8.0.2)
actionpack (= 7.1.2) actionpack (= 8.0.2)
activejob (= 7.1.2) activejob (= 8.0.2)
activerecord (= 7.1.2) activerecord (= 8.0.2)
activesupport (= 7.1.2) activesupport (= 8.0.2)
marcel (~> 1.0) marcel (~> 1.0)
activesupport (7.1.2) activesupport (8.0.2)
base64 base64
benchmark (>= 0.3)
bigdecimal bigdecimal
concurrent-ruby (~> 1.0, >= 1.0.2) concurrent-ruby (~> 1.0, >= 1.3.1)
connection_pool (>= 2.2.5) connection_pool (>= 2.2.5)
drb drb
i18n (>= 1.6, < 2) i18n (>= 1.6, < 2)
logger (>= 1.4.2)
minitest (>= 5.1) minitest (>= 5.1)
mutex_m securerandom (>= 0.3)
tzinfo (~> 2.0) tzinfo (~> 2.0, >= 2.0.5)
addressable (2.8.5) uri (>= 0.13.1)
public_suffix (>= 2.0.2, < 6.0) addressable (2.8.7)
airbrussh (1.5.0) public_suffix (>= 2.0.2, < 7.0)
airbrussh (1.5.3)
sshkit (>= 1.6.1, != 1.7.0) sshkit (>= 1.6.1, != 1.7.0)
ast (2.4.2) ast (2.4.3)
babel-source (5.8.35) babel-source (5.8.35)
babel-transpiler (0.7.0) babel-transpiler (0.7.0)
babel-source (>= 4.0, < 6) babel-source (>= 4.0, < 6)
execjs (~> 2.0) execjs (~> 2.0)
base64 (0.2.0) base64 (0.2.0)
bcrypt (3.1.20) bcrypt (3.1.20)
bcrypt_pbkdf (1.1.0) bcrypt_pbkdf (1.1.1)
benchmark (0.4.0)
better_errors (2.10.1) better_errors (2.10.1)
erubi (>= 1.0.0) erubi (>= 1.0.0)
rack (>= 0.9.0) rack (>= 0.9.0)
rouge (>= 1.0.0) rouge (>= 1.0.0)
bigdecimal (3.1.4) bigdecimal (3.1.9)
binding_of_caller (1.0.0) binding_of_caller (1.0.1)
debug_inspector (>= 0.0.1) debug_inspector (>= 1.2.0)
builder (3.2.4) builder (3.3.0)
capistrano (3.18.0) capistrano (3.19.2)
airbrussh (>= 1.0.0) airbrussh (>= 1.0.0)
i18n i18n
rake (>= 10.0.0) rake (>= 10.0.0)
sshkit (>= 1.9.0) sshkit (>= 1.9.0)
capistrano-bundler (2.1.0) capistrano-bundler (2.1.1)
capistrano (~> 3.1) capistrano (~> 3.1)
capistrano-db-tasks (0.6) capistrano-db-tasks (0.6)
capistrano (>= 3.0.0) capistrano (>= 3.0.0)
capistrano-postgresql (6.2.0) capistrano-postgresql (6.2.0)
capistrano (>= 3.0) capistrano (>= 3.0)
sshkit (>= 1.17.0) sshkit (>= 1.17.0)
capistrano-rails (1.6.3) capistrano-rails (1.7.0)
capistrano (~> 3.1) capistrano (~> 3.1)
capistrano-bundler (>= 1.1, < 3) capistrano-bundler (>= 1.1, < 3)
capistrano-rails-console (2.3.0) capistrano-rails-console (2.3.0)
@ -123,15 +121,15 @@ GEM
capistrano-rbenv (2.2.0) capistrano-rbenv (2.2.0)
capistrano (~> 3.1) capistrano (~> 3.1)
sshkit (~> 1.3) sshkit (~> 1.3)
capistrano3-puma (6.0.0.beta.1) capistrano3-puma (6.0.0)
capistrano (~> 3.7) capistrano (~> 3.7)
capistrano-bundler capistrano-bundler
puma (>= 5.1, < 7.0) puma (>= 5.1, < 7.0)
capybara (3.39.2) capybara (3.40.0)
addressable addressable
matrix matrix
mini_mime (>= 0.1.3) mini_mime (>= 0.1.3)
nokogiri (~> 1.8) nokogiri (~> 1.11)
rack (>= 1.6.0) rack (>= 1.6.0)
rack-test (>= 0.6.3) rack-test (>= 0.6.3)
regexp_parser (>= 1.5, < 3.0) regexp_parser (>= 1.5, < 3.0)
@ -139,6 +137,8 @@ GEM
capybara-screenshot (1.0.26) capybara-screenshot (1.0.26)
capybara (>= 1.0, < 4) capybara (>= 1.0, < 4)
launchy launchy
childprocess (5.1.0)
logger (~> 1.5)
ci_reporter (2.1.0) ci_reporter (2.1.0)
builder (>= 2.1.2) builder (>= 2.1.2)
rexml rexml
@ -153,61 +153,58 @@ GEM
coffee-script-source coffee-script-source
execjs execjs
coffee-script-source (1.12.2) coffee-script-source (1.12.2)
concurrent-ruby (1.2.2) concurrent-ruby (1.3.5)
connection_pool (2.4.1) connection_pool (2.5.1)
crass (1.0.6) crass (1.0.6)
database_cleaner (2.0.2) database_cleaner (2.1.0)
database_cleaner-active_record (>= 2, < 3) database_cleaner-active_record (>= 2, < 3)
database_cleaner-active_record (2.1.0) database_cleaner-active_record (2.2.0)
activerecord (>= 5.a) activerecord (>= 5.a)
database_cleaner-core (~> 2.0.0) database_cleaner-core (~> 2.0.0)
database_cleaner-core (2.0.1) database_cleaner-core (2.0.1)
date (3.3.4) date (3.4.1)
debug_inspector (1.1.0) debug_inspector (1.2.0)
devise (4.9.3) devise (4.9.4)
bcrypt (~> 3.0) bcrypt (~> 3.0)
orm_adapter (~> 0.1) orm_adapter (~> 0.1)
railties (>= 4.1.0) railties (>= 4.1.0)
responders responders
warden (~> 1.2.3) warden (~> 1.2.3)
devise_invitable (2.0.9) devise_invitable (2.0.10)
actionmailer (>= 5.0) actionmailer (>= 5.0)
devise (>= 4.6) devise (>= 4.6)
diff-lcs (1.5.0) diff-lcs (1.6.1)
docile (1.4.0) docile (1.4.1)
dotenv (2.8.1) dotenv (3.1.8)
dotenv-rails (2.8.1) dotenv-rails (3.1.8)
dotenv (= 2.8.1) dotenv (= 3.1.8)
railties (>= 3.2) railties (>= 6.1)
drb (2.2.0) drb (2.2.1)
ruby2_keywords
ed25519 (1.3.0) ed25519 (1.3.0)
em-websocket (0.5.3) em-websocket (0.5.3)
eventmachine (>= 0.12.9) eventmachine (>= 0.12.9)
http_parser.rb (~> 0) http_parser.rb (~> 0)
erubi (1.12.0) erubi (1.13.1)
erubis (2.7.0) erubis (2.7.0)
eventmachine (1.2.7) eventmachine (1.2.7)
execjs (2.9.1) execjs (2.10.0)
factory_girl (4.9.0) faker (3.5.1)
activesupport (>= 3.0.0)
factory_girl_rails (4.9.0)
factory_girl (~> 4.9.0)
railties (>= 3.0.0)
faker (3.2.2)
i18n (>= 1.8.11, < 2) i18n (>= 1.8.11, < 2)
ffi (1.16.3) ffi (1.17.2)
ffi (1.17.2-x86_64-linux-gnu)
formatador (1.1.0) formatador (1.1.0)
friendly_id (5.4.2) friendly_id (5.4.2)
activerecord (>= 4.0.0) activerecord (>= 4.0.0)
globalid (1.2.1) globalid (1.2.1)
activesupport (>= 6.1) activesupport (>= 6.1)
guard (2.18.1) guard (2.19.1)
formatador (>= 0.2.4) formatador (>= 0.2.4)
listen (>= 2.7, < 4.0) listen (>= 2.7, < 4.0)
logger (~> 1.6)
lumberjack (>= 1.0.12, < 2.0) lumberjack (>= 1.0.12, < 2.0)
nenv (~> 0.1) nenv (~> 0.1)
notiffany (~> 0.0) notiffany (~> 0.0)
ostruct (~> 0.6)
pry (>= 0.13.0) pry (>= 0.13.0)
shellany (~> 0.0) shellany (~> 0.0)
thor (>= 0.18.1) thor (>= 0.18.1)
@ -231,7 +228,7 @@ GEM
guard (~> 2.1) guard (~> 2.1)
guard-compat (~> 1.1) guard-compat (~> 1.1)
rspec (>= 2.99.0, < 4.0) rspec (>= 2.99.0, < 4.0)
haml (6.2.3) haml (6.3.0)
temple (>= 0.8.2) temple (>= 0.8.2)
thor thor
tilt tilt
@ -240,7 +237,7 @@ GEM
activesupport (>= 5.1) activesupport (>= 5.1)
haml (>= 4.0.6) haml (>= 4.0.6)
railties (>= 5.1) railties (>= 5.1)
high_voltage (3.1.2) high_voltage (4.0.0)
html2haml (2.3.0) html2haml (2.3.0)
erubis (~> 2.7.0) erubis (~> 2.7.0)
haml (>= 4.0) haml (>= 4.0)
@ -248,37 +245,42 @@ GEM
ruby_parser (~> 3.5) ruby_parser (~> 3.5)
http_parser.rb (0.8.0) http_parser.rb (0.8.0)
hub (1.12.4) hub (1.12.4)
i18n (1.14.1) i18n (1.14.7)
concurrent-ruby (~> 1.0) concurrent-ruby (~> 1.0)
importmap-rails (1.2.3) importmap-rails (2.1.0)
actionpack (>= 6.0.0) actionpack (>= 6.0.0)
activesupport (>= 6.0.0) activesupport (>= 6.0.0)
railties (>= 6.0.0) railties (>= 6.0.0)
inline_svg (1.9.0) inline_svg (1.10.0)
activesupport (>= 3.0) activesupport (>= 3.0)
nokogiri (>= 1.6) nokogiri (>= 1.6)
interception (0.5) interception (0.5)
io-console (0.6.0) io-console (0.8.0)
irb (1.10.0) irb (1.15.2)
rdoc pp (>= 0.6.0)
reline (>= 0.3.8) rdoc (>= 4.0.0)
jbuilder (2.11.5) reline (>= 0.4.2)
jbuilder (2.13.0)
actionview (>= 5.0.0) actionview (>= 5.0.0)
activesupport (>= 5.0.0) activesupport (>= 5.0.0)
jquery-rails (4.6.0) jquery-rails (4.6.0)
rails-dom-testing (>= 1, < 3) rails-dom-testing (>= 1, < 3)
railties (>= 4.2.0) railties (>= 4.2.0)
thor (>= 0.14, < 2.0) thor (>= 0.14, < 2.0)
jquery-ui-rails (6.0.1) jquery-ui-rails (7.0.0)
railties (>= 3.2.16) railties (>= 3.2.16)
json (2.7.0) json (2.10.2)
language_server-protocol (3.17.0.3) language_server-protocol (3.17.0.4)
launchy (2.5.2) launchy (3.1.1)
addressable (~> 2.8) addressable (~> 2.8)
listen (3.8.0) childprocess (~> 5.0)
logger (~> 1.6)
lint_roller (1.1.0)
listen (3.9.0)
rb-fsevent (~> 0.10, >= 0.10.3) rb-fsevent (~> 0.10, >= 0.10.3)
rb-inotify (~> 0.9, >= 0.9.10) rb-inotify (~> 0.9, >= 0.9.10)
loofah (2.22.0) logger (1.7.0)
loofah (2.24.0)
crass (~> 1.0.2) crass (~> 1.0.2)
nokogiri (>= 1.12.0) nokogiri (>= 1.12.0)
lumberjack (1.2.10) lumberjack (1.2.10)
@ -287,167 +289,178 @@ GEM
net-imap net-imap
net-pop net-pop
net-smtp net-smtp
marcel (1.0.2) marcel (1.0.4)
matrix (0.4.2) matrix (0.4.2)
method_source (1.0.0) method_source (1.1.0)
mini_mime (1.1.5) mini_mime (1.1.5)
mini_portile2 (2.8.5) mini_portile2 (2.8.8)
minitest (5.20.0) minitest (5.25.5)
multi_json (1.15.0) multi_json (1.15.0)
mutex_m (0.2.0)
nenv (0.3.0) nenv (0.3.0)
net-imap (0.4.7) net-imap (0.5.7)
date date
net-protocol net-protocol
net-pop (0.1.2) net-pop (0.1.2)
net-protocol net-protocol
net-protocol (0.2.2) net-protocol (0.2.2)
timeout timeout
net-scp (4.0.0) net-scp (4.1.0)
net-ssh (>= 2.6.5, < 8.0.0) net-ssh (>= 2.6.5, < 8.0.0)
net-smtp (0.4.0) net-sftp (4.0.0)
net-ssh (>= 5.0.0, < 8.0.0)
net-smtp (0.5.1)
net-protocol net-protocol
net-ssh (7.2.0) net-ssh (7.3.0)
nio4r (2.7.0) nio4r (2.7.4)
nokogiri (1.15.5) nokogiri (1.18.8)
mini_portile2 (~> 2.8.2) mini_portile2 (~> 2.8.2)
racc (~> 1.4) racc (~> 1.4)
nokogiri (1.15.5-x86_64-linux) nokogiri (1.18.8-x86_64-linux-gnu)
racc (~> 1.4) racc (~> 1.4)
notiffany (0.1.3) notiffany (0.1.3)
nenv (~> 0.1) nenv (~> 0.1)
shellany (~> 0.0) shellany (~> 0.0)
orm_adapter (0.5.0) orm_adapter (0.5.0)
parallel (1.23.0) ostruct (0.6.1)
parallel_tests (4.3.0) parallel (1.27.0)
parallel_tests (5.1.0)
parallel parallel
parser (3.2.2.4) parser (3.3.8.0)
ast (~> 2.4.1) ast (~> 2.4.1)
racc racc
pg (1.5.4) pg (1.5.9)
pry (0.14.2) pp (0.6.2)
prettyprint
prettyprint (0.2.0)
prism (1.4.0)
pry (0.15.2)
coderay (~> 1.1) coderay (~> 1.1)
method_source (~> 1.0) method_source (~> 1.0)
pry-rails (0.3.9) pry-rails (0.3.11)
pry (>= 0.10.4) pry (>= 0.13.0)
pry-rescue (1.5.2) pry-rescue (1.6.0)
interception (>= 0.5) interception (>= 0.5)
pry (>= 0.12.0) pry (>= 0.12.0)
psych (5.1.1.1) psych (5.2.3)
date
stringio stringio
public_suffix (5.0.4) public_suffix (6.0.1)
puma (6.0.0) puma (6.6.0)
nio4r (~> 2.0) nio4r (~> 2.0)
pundit (2.3.1) pundit (2.5.0)
activesupport (>= 3.0.0) activesupport (>= 3.0.0)
racc (1.7.3) racc (1.8.1)
rack (3.0.8) rack (3.1.13)
rack-livereload (0.5.1) rack-livereload (0.6.1)
rack rack (>= 3.0, < 3.2)
rack-session (2.0.0) rack-session (2.1.0)
base64 (>= 0.1.0)
rack (>= 3.0.0) rack (>= 3.0.0)
rack-test (2.1.0) rack-test (2.2.0)
rack (>= 1.3) rack (>= 1.3)
rackup (2.1.0) rackup (2.2.1)
rack (>= 3) rack (>= 3)
webrick (~> 1.8) rails (8.0.2)
rails (7.1.2) actioncable (= 8.0.2)
actioncable (= 7.1.2) actionmailbox (= 8.0.2)
actionmailbox (= 7.1.2) actionmailer (= 8.0.2)
actionmailer (= 7.1.2) actionpack (= 8.0.2)
actionpack (= 7.1.2) actiontext (= 8.0.2)
actiontext (= 7.1.2) actionview (= 8.0.2)
actionview (= 7.1.2) activejob (= 8.0.2)
activejob (= 7.1.2) activemodel (= 8.0.2)
activemodel (= 7.1.2) activerecord (= 8.0.2)
activerecord (= 7.1.2) activestorage (= 8.0.2)
activestorage (= 7.1.2) activesupport (= 8.0.2)
activesupport (= 7.1.2)
bundler (>= 1.15.0) bundler (>= 1.15.0)
railties (= 7.1.2) railties (= 8.0.2)
rails-dom-testing (2.2.0) rails-dom-testing (2.2.0)
activesupport (>= 5.0.0) activesupport (>= 5.0.0)
minitest minitest
nokogiri (>= 1.6) nokogiri (>= 1.6)
rails-html-sanitizer (1.6.0) rails-html-sanitizer (1.6.2)
loofah (~> 2.21) loofah (~> 2.21)
nokogiri (~> 1.14) nokogiri (>= 1.15.7, != 1.16.7, != 1.16.6, != 1.16.5, != 1.16.4, != 1.16.3, != 1.16.2, != 1.16.1, != 1.16.0.rc1, != 1.16.0)
rails_layout (1.0.42) rails_layout (1.0.42)
railties (7.1.2) railties (8.0.2)
actionpack (= 7.1.2) actionpack (= 8.0.2)
activesupport (= 7.1.2) activesupport (= 8.0.2)
irb irb (~> 1.13)
rackup (>= 1.0.0) rackup (>= 1.0.0)
rake (>= 12.2) rake (>= 12.2)
thor (~> 1.0, >= 1.2.2) thor (~> 1.0, >= 1.2.2)
zeitwerk (~> 2.6) zeitwerk (~> 2.6)
rainbow (3.1.1) rainbow (3.1.1)
rake (13.1.0) rake (13.2.1)
rb-fchange (0.0.6) rb-fchange (0.0.6)
ffi ffi
rb-fsevent (0.11.2) rb-fsevent (0.11.2)
rb-inotify (0.10.1) rb-inotify (0.11.1)
ffi (~> 1.0) ffi (~> 1.0)
rbnacl (3.4.0) rbnacl (3.4.0)
ffi ffi
rbnacl-libsodium (1.0.16) rbnacl-libsodium (1.0.16)
rbnacl (>= 3.0.1) rbnacl (>= 3.0.1)
rdoc (6.6.0) rdoc (6.13.1)
psych (>= 4.0.0) psych (>= 4.0.0)
react-rails (3.1.1) react-rails (3.2.1)
babel-transpiler (>= 0.7.0) babel-transpiler (>= 0.7.0)
connection_pool connection_pool
execjs execjs
railties (>= 3.2) railties (>= 3.2)
tilt tilt
redis (4.8.1) redis (5.4.0)
regexp_parser (2.8.3) redis-client (>= 0.22.0)
reline (0.4.1) redis-client (0.24.0)
connection_pool
regexp_parser (2.10.0)
reline (0.6.1)
io-console (~> 0.5) io-console (~> 0.5)
responders (3.1.1) responders (3.1.1)
actionpack (>= 5.2) actionpack (>= 5.2)
railties (>= 5.2) railties (>= 5.2)
rexml (3.2.6) rexml (3.4.1)
rouge (4.2.0) rouge (4.5.1)
rspec (3.12.0) rspec (3.13.0)
rspec-core (~> 3.12.0) rspec-core (~> 3.13.0)
rspec-expectations (~> 3.12.0) rspec-expectations (~> 3.13.0)
rspec-mocks (~> 3.12.0) rspec-mocks (~> 3.13.0)
rspec-core (3.12.2) rspec-core (3.13.3)
rspec-support (~> 3.12.0) rspec-support (~> 3.13.0)
rspec-expectations (3.12.3) rspec-expectations (3.13.3)
diff-lcs (>= 1.2.0, < 2.0) diff-lcs (>= 1.2.0, < 2.0)
rspec-support (~> 3.12.0) rspec-support (~> 3.13.0)
rspec-mocks (3.12.6) rspec-mocks (3.13.2)
diff-lcs (>= 1.2.0, < 2.0) diff-lcs (>= 1.2.0, < 2.0)
rspec-support (~> 3.12.0) rspec-support (~> 3.13.0)
rspec-rails (6.1.0) rspec-rails (7.1.1)
actionpack (>= 6.1) actionpack (>= 7.0)
activesupport (>= 6.1) activesupport (>= 7.0)
railties (>= 6.1) railties (>= 7.0)
rspec-core (~> 3.12) rspec-core (~> 3.13)
rspec-expectations (~> 3.12) rspec-expectations (~> 3.13)
rspec-mocks (~> 3.12) rspec-mocks (~> 3.13)
rspec-support (~> 3.12) rspec-support (~> 3.13)
rspec-support (3.12.1) rspec-support (3.13.2)
rubocop (1.58.0) rubocop (1.75.3)
json (~> 2.3) json (~> 2.3)
language_server-protocol (>= 3.17.0) language_server-protocol (~> 3.17.0.2)
lint_roller (~> 1.1.0)
parallel (~> 1.10) parallel (~> 1.10)
parser (>= 3.2.2.4) parser (>= 3.3.0.2)
rainbow (>= 2.2.2, < 4.0) rainbow (>= 2.2.2, < 4.0)
regexp_parser (>= 1.8, < 3.0) regexp_parser (>= 2.9.3, < 3.0)
rexml (>= 3.2.5, < 4.0) rubocop-ast (>= 1.44.0, < 2.0)
rubocop-ast (>= 1.30.0, < 2.0)
ruby-progressbar (~> 1.7) ruby-progressbar (~> 1.7)
unicode-display_width (>= 2.4.0, < 3.0) unicode-display_width (>= 2.4.0, < 4.0)
rubocop-ast (1.30.0) rubocop-ast (1.44.1)
parser (>= 3.2.1.0) parser (>= 3.3.7.2)
prism (~> 1.4)
ruby-progressbar (1.13.0) ruby-progressbar (1.13.0)
ruby2_keywords (0.0.5) ruby_parser (3.21.1)
ruby_parser (3.20.3) racc (~> 1.5)
sexp_processor (~> 4.16) sexp_processor (~> 4.16)
rubyzip (2.3.2) rubyzip (2.4.1)
sass-rails (6.0.0) sass-rails (6.0.0)
sassc-rails (~> 2.1, >= 2.1.1) sassc-rails (~> 2.1, >= 2.1.1)
sassc (2.4.0) sassc (2.4.0)
@ -460,65 +473,74 @@ GEM
tilt tilt
sdoc (2.6.1) sdoc (2.6.1)
rdoc (>= 5.0) rdoc (>= 5.0)
securerandom (0.4.1)
selenium-webdriver (4.10.0) selenium-webdriver (4.10.0)
rexml (~> 3.2, >= 3.2.5) rexml (~> 3.2, >= 3.2.5)
rubyzip (>= 1.2.2, < 3.0) rubyzip (>= 1.2.2, < 3.0)
websocket (~> 1.0) websocket (~> 1.0)
sexp_processor (4.17.0) sexp_processor (4.17.3)
shellany (0.0.1) shellany (0.0.1)
simple_form (5.3.0) simple_form (5.3.1)
actionpack (>= 5.2) actionpack (>= 5.2)
activemodel (>= 5.2) activemodel (>= 5.2)
simplecov (0.22.0) simplecov (0.22.0)
docile (~> 1.1) docile (~> 1.1)
simplecov-html (~> 0.11) simplecov-html (~> 0.11)
simplecov_json_formatter (~> 0.1) simplecov_json_formatter (~> 0.1)
simplecov-html (0.12.3) simplecov-html (0.13.1)
simplecov_json_formatter (0.1.4) simplecov_json_formatter (0.1.4)
spring (4.1.3) spring (4.3.0)
spring-commands-rspec (1.0.4) spring-commands-rspec (1.0.4)
spring (>= 0.9.1) spring (>= 0.9.1)
sprockets (4.2.1) sprockets (4.2.2)
concurrent-ruby (~> 1.0) concurrent-ruby (~> 1.0)
logger
rack (>= 2.2.4, < 4) rack (>= 2.2.4, < 4)
sprockets-rails (3.4.2) sprockets-rails (3.5.2)
actionpack (>= 5.2) actionpack (>= 6.1)
activesupport (>= 5.2) activesupport (>= 6.1)
sprockets (>= 3.0.0) sprockets (>= 3.0.0)
sshkit (1.21.6) sshkit (1.24.0)
base64
logger
net-scp (>= 1.1.2) net-scp (>= 1.1.2)
net-sftp (>= 2.1.2)
net-ssh (>= 2.8.0) net-ssh (>= 2.8.0)
ostruct
sshkit-interactive (0.3.0) sshkit-interactive (0.3.0)
sshkit (~> 1.12) sshkit (~> 1.12)
stimulus-rails (1.3.0) stimulus-rails (1.3.4)
railties (>= 6.0.0) railties (>= 6.0.0)
stringio (3.1.0) stringio (3.1.7)
temple (0.10.3) temple (0.10.3)
thor (1.3.0) thor (1.3.2)
tilt (2.3.0) tilt (2.6.0)
timeout (0.4.1) timeout (0.4.3)
turbo-rails (1.5.0) turbo-rails (2.0.13)
actionpack (>= 6.0.0) actionpack (>= 7.1.0)
activejob (>= 6.0.0) railties (>= 7.1.0)
railties (>= 6.0.0)
tzinfo (2.0.6) tzinfo (2.0.6)
concurrent-ruby (~> 1.0) concurrent-ruby (~> 1.0)
unicode-display_width (2.5.0) unicode-display_width (3.1.4)
unicode-emoji (~> 4.0, >= 4.0.4)
unicode-emoji (4.0.4)
uri (1.0.3)
useragent (0.16.11)
warden (1.2.9) warden (1.2.9)
rack (>= 2.0.9) rack (>= 2.0.9)
webdrivers (5.3.1) webdrivers (5.3.1)
nokogiri (~> 1.6) nokogiri (~> 1.6)
rubyzip (>= 1.3.0) rubyzip (>= 1.3.0)
selenium-webdriver (~> 4.0, < 4.11) selenium-webdriver (~> 4.0, < 4.11)
webrick (1.8.1) websocket (1.2.11)
websocket (1.2.10) websocket-driver (0.7.7)
websocket-driver (0.7.6) base64
websocket-extensions (>= 0.1.0) websocket-extensions (>= 0.1.0)
websocket-extensions (0.1.5) websocket-extensions (0.1.5)
will_paginate (4.0.0) will_paginate (4.0.1)
xpath (3.2.0) xpath (3.2.0)
nokogiri (~> 1.8) nokogiri (~> 1.8)
zeitwerk (2.6.12) zeitwerk (2.7.2)
PLATFORMS PLATFORMS
ruby ruby
@ -546,7 +568,6 @@ DEPENDENCIES
devise_invitable devise_invitable
dotenv-rails dotenv-rails
ed25519 ed25519
factory_girl_rails
faker faker
friendly_id (~> 5.4.0) friendly_id (~> 5.4.0)
guard-bundler guard-bundler
@ -569,10 +590,10 @@ DEPENDENCIES
pg pg
pry-rails pry-rails
pry-rescue pry-rescue
puma (= 6) puma
pundit pundit
rack-livereload rack-livereload
rails (~> 7.0) rails (~> 8.0)
rails_layout rails_layout
rb-fchange rb-fchange
rb-fsevent rb-fsevent
@ -580,7 +601,7 @@ DEPENDENCIES
rbnacl (~> 3.4) rbnacl (~> 3.4)
rbnacl-libsodium rbnacl-libsodium
react-rails react-rails
redis (~> 4.0) redis
rspec-rails rspec-rails
rubocop rubocop
sass-rails sass-rails
@ -597,7 +618,7 @@ DEPENDENCIES
will_paginate will_paginate
RUBY VERSION RUBY VERSION
ruby 3.2.2p53 ruby 3.4.3p32
BUNDLED WITH BUNDLED WITH
2.4.22 2.4.22

View File

@ -0,0 +1,5 @@
class PagesController < ApplicationController
before_action :skip_authorization
def czechers
end
end

View File

@ -0,0 +1,2 @@
module PagesHelper
end

View File

@ -1,13 +1,13 @@
# The game class # The game class
class Game < ActiveRecord::Base class Game < ActiveRecord::Base
belongs_to :table belongs_to :table, optional: true
has_many :seats has_many :seats
has_many :players, dependent: :destroy has_many :players, dependent: :destroy
has_many :users, through: :players has_many :users, through: :players
has_many :player_cards, through: :players has_many :player_cards, through: :players
has_many :plays, through: :players has_many :plays, through: :players
belongs_to :play_to_beat belongs_to :play_to_beat, optional: true
belongs_to :controlling_player, class_name: "Player", foreign_key: "controlling_player_id" belongs_to :controlling_player, class_name: "Player", foreign_key: "controlling_player_id", optional: true
accepts_nested_attributes_for :players accepts_nested_attributes_for :players
#validates :title, presence: true #validates :title, presence: true
after_create :add_table after_create :add_table
@ -177,7 +177,7 @@ class Game < ActiveRecord::Base
@inventory_counts.include? 0 @inventory_counts.include? 0
end end
private # private
def add_table def add_table
self.table ||= Table.create current_game_id: self.id self.table ||= Table.create current_game_id: self.id

View File

@ -1,7 +1,7 @@
# Associates users to games # Associates users to games
class Player < ActiveRecord::Base class Player < ActiveRecord::Base
belongs_to :game belongs_to :game
belongs_to :user belongs_to :user, optional: true
has_many :player_cards has_many :player_cards
has_many :plays has_many :plays
@ -32,7 +32,7 @@ class Player < ActiveRecord::Base
def display_name def display_name
return user.email.split("@")[0] if self.user return user.email.split("@")[0] if self.user
return "BotPlayer" if self.is_bot? return "BotPlayer #{self.id}" if self.is_bot?
return ("Guest" + self.soft_token)[0..9] if self.soft_token return ("Guest" + self.soft_token)[0..9] if self.soft_token
return "Empty" return "Empty"
end end

View File

@ -1,6 +1,6 @@
class PlayerCard < ActiveRecord::Base class PlayerCard < ActiveRecord::Base
belongs_to :player belongs_to :player
belongs_to :play belongs_to :play, optional: true
def to_s def to_s
# TODO: Shouldn't hard code face cards here # TODO: Shouldn't hard code face cards here

View File

@ -14,12 +14,12 @@ class Seat < ActiveRecord::Base
self.reload self.reload
if self.player == nil if self.player == nil
# TODO: Decouple seat from game # TODO: Decouple seat from game
# self.player_id = self.table.current_game.add_player_from_user(current_user).id self.player_id = self.table.current_game.add_player_from_user(current_user).id
end end
# self.player.user_id = current_user.id self.player.user_id = current_user.id
# self.player.soft_token = current_user.soft_token self.player.soft_token = current_user.soft_token
# self.player.save self.player.save
self.user_id = current_user.id self.user_id = current_user.id
self.user_soft_token = current_user.soft_token self.user_soft_token = current_user.soft_token

View File

@ -6,7 +6,7 @@ class Table < ActiveRecord::Base
has_many :users, through: :seats has_many :users, through: :seats
has_many :games has_many :games
has_many :players, through: :games has_many :players, through: :games
belongs_to :token # belongs_to :token
#TODO: Deprecated current_game_id from database. #TODO: Deprecated current_game_id from database.
# Instead calculate with self.current_game # Instead calculate with self.current_game
# #
@ -14,7 +14,7 @@ class Table < ActiveRecord::Base
#TODO: Should these be part of Game initialize instead of callback? #TODO: Should these be part of Game initialize instead of callback?
after_create :add_seats after_create :add_seats
# after_create :add_game after_create :add_game # TODO decouple game from table
# Returns the newest joinable table or creates a new table if none are found # Returns the newest joinable table or creates a new table if none are found
# scope :play_now, lambda { |user| # scope :play_now, lambda { |user|
@ -36,6 +36,8 @@ class Table < ActiveRecord::Base
def add_game def add_game
self.games.create self.games.create
# game = self.games.new
# game.
end end
# private # private

View File

@ -1,5 +1,5 @@
class Token < ActiveRecord::Base class Token < ActiveRecord::Base
enum standard: [:dip20, :icrc1, :unknown] enum :standard, [:dip20, :icrc1, :unknown]
validates :canister_id, uniqueness: true, allow_nil: true validates :canister_id, uniqueness: true, allow_nil: true
before_create :refresh before_create :refresh

View File

@ -1,5 +1,5 @@
class User < ActiveRecord::Base class User < ActiveRecord::Base
enum role: [:user, :vip, :admin] enum :role, [:user, :vip, :admin]
after_initialize :set_default_role, if: :new_record? after_initialize :set_default_role, if: :new_record?
validates :email, presence: true, uniqueness: true validates :email, presence: true, uniqueness: true
validates :soft_token, presence: true, uniqueness: true validates :soft_token, presence: true, uniqueness: true

View File

@ -15,11 +15,11 @@ class TablePolicy
end end
def create? def create?
@current_user.admin? @current_user.admin? || true
end end
def new? def new?
@current_user.admin? @current_user.admin? || true
end end
def edit? def edit?
@ -36,7 +36,8 @@ class TablePolicy
end end
def play_now? def play_now?
@current_user.admin? || @current_user.email == "bort@13.24x7.hk" return true
# @current_user.admin? || @current_user.email == "bort@13.24x7.hk"
end end
def new_game? def new_game?

View File

@ -1,37 +0,0 @@
<nav>
<ul>
<% if current_user.signed_in? %>
<li><%= link_to 'My Tendy Zone', root_path, class: "home-link", data: { turbo: false } %></li>
<% end %>
<li><%= link_to 'Public', '/public', data: { turbo: false } %></li>
<li><%= link_to 'Tokens', tokens_path %></li>
<li><%= link_to 'Profiles', profiles_path %></li>
<li><%= link_to 'Projects', projects_path %></li>
<li><%= link_to 'MetaPurse', metapurses_path %></li>
<% if policy(:canister).index? %>
<li><%= link_to 'Canisters', canisters_path %></li>
<% end %>
<li><%= link_to 'Doodads', doodads_path, data: { turbo: false } %></li>
<% if policy(:bot).index? %>
<li><%= link_to 'Bots', bots_path %></li>
<% end %>
<% if policy(:table).index? %>
<li><%= link_to 'Tables', tables_path %></li>
<% end %>
<% if policy(:room).index? %>
<li><%= link_to 'Chat', rooms_path %></li>
<% end %>
<% if current_user.signed_in? %>
<% if current_user.admin? %>
<li><%= link_to 'Users', users_path %></li>
<% end %>
<% end %>
<% if current_user.signed_in? %>
<li><%= link_to 'My account', edit_user_registration_path %></li>
<li><%= link_to 'Sign out', destroy_user_session_path, :method=>'delete' %></li>
<% else %>
<li><%= link_to 'Sign in', new_user_session_path %></li>
<li><%= link_to 'Sign up', new_user_registration_path %></li>
<% end %>
</ul>
</nav>

View File

@ -0,0 +1,28 @@
%nav
%ul
%li= link_to 'Home', root_path, class: "home-link", data: { turbo: false }
-# - if current_user.signed_in?
-# %li= link_to 'My Tendy Zone', root_path, class: "home-link", data: { turbo: false }
-# %li= link_to 'Public', '/public', data: { turbo: false }
-# %li= link_to 'Tokens', tokens_path
-# %li= link_to 'Profiles', profiles_path
-# %li= link_to 'Projects', projects_path
-# %li= link_to 'MetaPurse', metapurses_path
-# - if policy(:canister).index?
-# %li= link_to 'Canisters', canisters_path
-# %li= link_to 'Doodads', doodads_path, data: { turbo: false }
-# - if policy(:bot).index?
-# %li= link_to 'Bots', bots_path
- if policy(:table).index?
%li= link_to 'Tables', tables_path
-# - if policy(:room).index?
-# %li= link_to 'Chat', rooms_path
- if current_user.signed_in?
- if current_user.admin?
%li= link_to 'Users', users_path
- if current_user.signed_in?
%li= link_to 'My account', edit_user_registration_path
%li= link_to 'Sign out', destroy_user_session_path, :method=>'delete'
- else
%li= link_to 'Sign in', new_user_session_path
%li= link_to 'Sign up', new_user_registration_path

View File

@ -26,7 +26,7 @@
<header> <header>
<%= render "layouts/navigation_links" %> <%= render "layouts/navigation_links" %>
<%= render "layouts/navigation_wallet" %> <%# <%= render "layouts/navigation_wallet" %1> %>
</header> </header>
<%= render "layouts/flashmessages" %> <%= render "layouts/flashmessages" %>
@ -35,9 +35,9 @@
<%= yield %> <%= yield %>
</div> </div>
<footer> <%# <footer> %>
<%= render "layouts/footer" %> <%# <%= render "layouts/footer" %1> %>
</footer> <%# </footer> %>
</body> </body>
</html> </html>

View File

@ -0,0 +1,142 @@
%h1{style: "padding-left: 0.5em;"} Czechers
:css
.board {
position: relative;
margin-top: 1em;
margin-bottom: 1em;
display: grid;
grid-template-columns: repeat(8, 80px);
grid-template-rows: repeat(8, 80px);
gap: 1px;
}
.cell {
width: 80px;
height: 80px;
background-color: white;
}
.cell:nth-child(2n+1):nth-child(-n+8),
.cell:nth-child(2n):nth-child(n+9):nth-child(-n+16),
.cell:nth-child(2n+1):nth-child(n+17):nth-child(-n+24),
.cell:nth-child(2n):nth-child(n+25):nth-child(-n+32),
.cell:nth-child(2n+1):nth-child(n+33):nth-child(-n+40),
.cell:nth-child(2n):nth-child(n+41):nth-child(-n+48),
.cell:nth-child(2n+1):nth-child(n+49):nth-child(-n+56),
.cell:nth-child(2n):nth-child(n+57):nth-child(-n+64) {
background-color: black;
}
.czecher-piece {
border-radius: 5em;
width: 50px;
outline: 2px #cccccc solid;
position: absolute;
z-index: 100;
}
.czecher-piece:active {
outline: 2px #00ffff solid;
}
%img.czecher-piece{src:"/czech-logo-dip20.png", style: "left: 182px; top: 912px;"}
%img.czecher-piece{src:"/czech-logo-dip20.png", style: "left: 262px; top: 912px;"}
%img.czecher-piece{src:"/czech-logo-dip20.png", style: "left: 343px; top: 912px;"}
%img.czecher-piece{src:"/czech-logo-dip20.png", style: "left: 424px; top: 912px;"}
%img.czecher-piece{src:"/czech-logo-dip20.png", style: "left: 505px; top: 912px;"}
%img.czecher-piece{src:"/czech-logo-dip20.png", style: "left: 586px; top: 912px;"}
%img.czecher-piece{src:"/czech-logo-dip20.png", style: "left: 667px; top: 912px;"}
%img.czecher-piece{src:"/czech-logo-dip20.png", style: "left: 748px; top: 912px;"}
%img.czecher-piece{src:"/czech-logo-dip20.png", style: "left: 182px; top: 993px;"}
%img.czecher-piece{src:"/czech-logo-dip20.png", style: "left: 262px; top: 993px;"}
%img.czecher-piece{src:"/czech-logo-dip20.png", style: "left: 343px; top: 993px;"}
%img.czecher-piece{src:"/czech-logo-dip20.png", style: "left: 424px; top: 993px;"}
%img.czecher-piece{src:"/czech-logo-dip20.png", style: "left: 505px; top: 993px;"}
%img.czecher-piece{src:"/czech-logo-dip20.png", style: "left: 586px; top: 993px;"}
%img.czecher-piece{src:"/czech-logo-dip20.png", style: "left: 667px; top: 993px;"}
%img.czecher-piece{src:"/czech-logo-dip20.png", style: "left: 748px; top: 993px;"}
%img.czecher-piece{src:"/tendy-logo-icrc1.jpg", style: "left: 181px; top: 1480px;"}
%img.czecher-piece{src:"/tendy-logo-icrc1.jpg", style: "left: 261px; top: 1480px;"}
%img.czecher-piece{src:"/tendy-logo-icrc1.jpg", style: "left: 342px; top: 1480px;"}
%img.czecher-piece{src:"/tendy-logo-icrc1.jpg", style: "left: 423px; top: 1480px;"}
%img.czecher-piece{src:"/tendy-logo-icrc1.jpg", style: "left: 504px; top: 1480px;"}
%img.czecher-piece{src:"/tendy-logo-icrc1.jpg", style: "left: 585px; top: 1480px;"}
%img.czecher-piece{src:"/tendy-logo-icrc1.jpg", style: "left: 666px; top: 1480px;"}
%img.czecher-piece{src:"/tendy-logo-icrc1.jpg", style: "left: 747px; top: 1480px;"}
%img.czecher-piece{src:"/tendy-logo-icrc1.jpg", style: "left: 181px; top: 1399px;"}
%img.czecher-piece{src:"/tendy-logo-icrc1.jpg", style: "left: 261px; top: 1399px; outline: 2px #00ffff solid;"}
%img.czecher-piece{src:"/tendy-logo-icrc1.jpg", style: "left: 342px; top: 1399px;"}
%img.czecher-piece{src:"/tendy-logo-icrc1.jpg", style: "left: 423px; top: 1399px;"}
%img.czecher-piece{src:"/tendy-logo-icrc1.jpg", style: "left: 504px; top: 1399px;"}
%img.czecher-piece{src:"/tendy-logo-icrc1.jpg", style: "left: 585px; top: 1399px;"}
%img.czecher-piece{src:"/tendy-logo-icrc1.jpg", style: "left: 666px; top: 1399px;"}
%img.czecher-piece{src:"/tendy-logo-icrc1.jpg", style: "left: 747px; top: 1399px;"}
.board
.cell
.cell
.cell
.cell
.cell
.cell
.cell
.cell
.cell
.cell
.cell
.cell
.cell
.cell
.cell
.cell
.cell
.cell
.cell
.cell
.cell
.cell
.cell
.cell
.cell
.cell
.cell
.cell
.cell
.cell
.cell
.cell
.cell
.cell
.cell
.cell
.cell
.cell
.cell
.cell
.cell{style: "background: #EFFA8D;"}
.cell
.cell{style: "background: #EFFA8D;"}
.cell
.cell
.cell
.cell
.cell
.cell
.cell{style: "background: #B5FFFF;"}
.cell
.cell
.cell
.cell
.cell
.cell
.cell
.cell
.cell
.cell
.cell
.cell
.cell
.cell

View File

@ -2,14 +2,15 @@
- @game = seat.game - @game = seat.game
.seat{class: "position-#{@seats.index(seat) + 1}"} .seat{class: "position-#{@seats.index(seat) + 1}"}
- if seat.user_soft_token -# - if seat.user_soft_token
- if seat.player
-# = button_to remove_player_seat_path(seat), :data => { :confirm => 'Are you sure you want to remove this player?' } do -# = button_to remove_player_seat_path(seat), :data => { :confirm => 'Are you sure you want to remove this player?' } do
-# TODO: Remove Player button -# TODO: Remove Player button
-# = button_to remove_player_seat_path(seat) do -# = button_to remove_player_seat_path(seat) do
- "Remove Player" - "Remove Player"
.user{id: "user-#{seat.user_soft_token}", class: @game.try("controlling_player") == seat.player ? "taking-turn" : "", .user{id: "user-#{seat.user_soft_token}", class: @game.try("controlling_player") == seat.player ? "taking-turn" : "",
data: {soft_token: seat.user_soft_token} } data: {soft_token: seat.user_soft_token} }
.user-name= seat.user_soft_token[0..3] .user-name= seat.player.display_name
-# .user-soft-token= seat.user.soft_token -# .user-soft-token= seat.user.soft_token
-# TODO user principal -# TODO user principal
-# .user-principal= seat.user_soft_token[0..3] -# .user-principal= seat.user_soft_token[0..3]
@ -19,14 +20,14 @@
= seat.player.inventory.count = seat.player.inventory.count
-# Show player controls if player is owned by current_user -# Show player controls if player is owned by current_user
- if seat.user.soft_token == current_user.soft_token - if seat.player.soft_token == current_user.soft_token
= form_for(@game, = form_for(@game,
url: play_hand_game_path(@game), url: play_hand_game_path(@game),
method: "post", method: "post",
name: "player_controls_" + seat.user_id.to_s, name: "player_controls_" + seat.player_id.to_s,
id: "player_controls_" + seat.user_id.to_s) do |f| id: "player_controls_" + seat.player_id.to_s) do |f|
%ul#inventory %ul#inventory
-# - seat.player.inventory.each do |card| - seat.player.inventory.each do |card|
%li %li
%label %label
= check_box_tag 'player_card_ids[]', = check_box_tag 'player_card_ids[]',
@ -34,7 +35,7 @@
false, false,
data: {value: card.id, card_name: card.rank.gsub('11','J') .gsub('12','Q') .gsub('13','K') .gsub('14','A') .gsub('15','2') + ' ' + card.suit} data: {value: card.id, card_name: card.rank.gsub('11','J') .gsub('12','Q') .gsub('13','K') .gsub('14','A') .gsub('15','2') + ' ' + card.suit}
-# %input{form: "player_controls_" + card.player_id.to_s, %input{form: "player_controls_" + card.player_id.to_s,
type: "checkbox", type: "checkbox",
name: "player_card_ids[]", name: "player_card_ids[]",
data: {value: card.id, card_name: card.rank.gsub('11','J') .gsub('12','Q') .gsub('13','K') .gsub('14','A') .gsub('15','2') + ' ' + card.suit}} data: {value: card.id, card_name: card.rank.gsub('11','J') .gsub('12','Q') .gsub('13','K') .gsub('14','A') .gsub('15','2') + ' ' + card.suit}}
@ -52,7 +53,7 @@
.seat-controls .seat-controls
- if seat.occupied? - if seat.occupied?
- if seat.player.try("is_bot?") - if seat.player.try("is_bot?")
-# = button_to remove_bot_seat_path(seat) do = button_to remove_bot_seat_path(seat) do
- "- Bot" - "- Bot"
- if seat.occupied_by? current_user - if seat.occupied_by? current_user
-# = button_to stand_seat_path(seat), :data => { :confirm => 'Are you sure you want to leave this seat?' } do -# = button_to stand_seat_path(seat), :data => { :confirm => 'Are you sure you want to leave this seat?' } do
@ -66,6 +67,6 @@
- else - else
= button_to sit_seat_path(seat) do = button_to sit_seat_path(seat) do
- "Sit" - "Sit"
-# = button_to add_bot_seat_path(seat) do = button_to add_bot_seat_path(seat) do
- "+ Bot" - "+ Bot"

View File

@ -17,7 +17,7 @@
-# - if @game.winner_player_id || @game.nil? -# - if @game.winner_player_id || @game.nil?
-# = button_to 'New Game', new_game_table_path(@table) -# = button_to 'New Game', new_game_table_path(@table)
- if @game && !@game.startable? - if (@game && !@game.startable?) || !@game
#table-controls #table-controls
#newgame= button_to 'New Game', new_game_table_path(@table) #newgame= button_to 'New Game', new_game_table_path(@table)

View File

@ -1,85 +1,12 @@
#home-headline.home-headline #home-headline
- if request.base_url.match(/pin|my|fireside/) %h1 Thirteen <br/>Tien Len
%h1 Your own public tendy zone 🍗
- else
%h1 Web3 Social Gaming <br/>Crypto Rewards
- if @feed_items.any?
.contain
%h2 Post feed
= render 'shared/feed'
.contain
#doodads
%h2 Doodads
- if current_user.signed_in?
%p= link_to '+ New Doodad', new_doodad_path
= render @doodads
:javascript
function destroyDoodad(doodad_id) {
return fetch("/doodads/" + doodad_id, {
method: 'DELETE',
headers: {
"Content-Type": "application/json",
"Accept": "application/json"
}
})
.then(response => response)
};
// var s2 = Swiped.init({ query: '.bar li', list: true, left: 200, right: 200 });
var index_doodad_swiped = Swiped.init({ query: '#doodads .doodad',
list: true,
left: 200,
right: 200,
onOpen: function() {
var doodad_id = this.elem.className.split("-")[1];
destroyDoodad(doodad_id)
.then(results => console.log(results));
this.destroy(true)
}
});
-# #canisters
= render @canisters
- if current_user.signed_in?
= link_to '+ Add Existing Canister', new_canister_path
#main-menu #main-menu
-# - if policy(:table).play_now? - if policy(:table).play_now?
= link_to 'Play 13 Now', play_now_path = link_to 'Play Now', play_now_path
-# - else - else
Soon Soon
-# = link_to 'Browse Tables', tables_path = link_to 'Browse Tables', tables_path
-# = link_to 'Tutorial', tutorial_path = link_to 'Tutorial', tutorial_path
-# = link_to 'About', page_path('about') = link_to 'About', page_path('about')
-# - if !request.base_url.match(/pin|my|fireside/)
- unless current_user.signed_in?
.eyecandy.icypepe
= image_tag "icy pepe.png", style: 'width: 800px'
-# = inline_svg_tag "Icy Pepe.svg"
- 5.times do |i|
.eyecandy
= image_tag "gongo-logo.png"
- 10.times do |i|
.eyecandy
= image_tag "ICYPEES-glass.png"
- 20.times do |i|
.eyecandy
= image_tag "chicken-tenders.png"
-# - 10.times do |i|
.eyecandy.roundcandy
= image_tag "tendy-logo.jpg"
- 10.times do |i|
.eyecandy
= image_tag "ICYPEES-coin.png"
-# - Dir.glob("app/assets/images/cards/png/**").each do |card_img|
- puts card_img
= image_tag
-# %iframe#videoplayer{:allowfullscreen => "", :frameborder => "0", :height => "480", :mozallowfullscreen => "true", :src => "https://archive.org/embed/my-dinner-with-andre-conspiracy-theory-scene-hd", :webkitallowfullscreen => "true", :width => "640", :autostart => "true"}
-# %iframe{:allow => "accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share", :allowfullscreen => "", :frameborder => "0", :height => "315", :src => "https://www.youtube.com/embed/kK-1axSGkXc", :title => "YouTube video player", :width => "560"}
-# %iframe#videoplayer{:allow => "accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share", :allowfullscreen => "", :frameborder => "0", :height => "315", :src => "https://www.youtube.com/embed/PhIM5k_m_hs", :title => "YouTube video player", :width => "560"}
-# .video-cover
-# = video_tag "video.mp4", autoplay: true, id: "videoplayer", loop: true

View File

@ -13,6 +13,9 @@ module MyTendyZone
config.load_defaults 7.0 config.load_defaults 7.0
# config.active_support.cache_format_version = 7.0 # config.active_support.cache_format_version = 7.0
# TODO move secrets to credentials
config.secrets = config_for(:secrets)
# Configuration for the application, engines, and railties goes here. # Configuration for the application, engines, and railties goes here.
# #
# These settings can be overridden in specific environments using the files # These settings can be overridden in specific environments using the files

View File

@ -1,5 +1,5 @@
set :application, "thirteen_tien_len_#{fetch(:stage)}" set :application, "thirteen_tien_len_#{fetch(:stage)}"
set :repo_url, 'git@pineapple.punked.us:Bort/thirteen-tien-len.git' set :repo_url, 'git@git.tendy.zone:Bort/thirteen-tien-len.git'
# If you want to import assets, you can change default asset dir (default = system) # If you want to import assets, you can change default asset dir (default = system)
# This directory must be in your shared directory on the server # This directory must be in your shared directory on the server

View File

@ -10,7 +10,9 @@ Devise.setup do |config|
# Configure the e-mail address which will be shown in Devise::Mailer, # Configure the e-mail address which will be shown in Devise::Mailer,
# note that it will be overwritten if you use your own mailer class # note that it will be overwritten if you use your own mailer class
# with default "from" parameter. # with default "from" parameter.
config.mailer_sender = 'no-reply@' + Rails.application.secrets.domain_name # TODO move secrets to credentials
# config.mailer_sender = 'no-reply@' + Rails.application.secrets.domain_name
config.mailer_sender = 'no-reply@' + Rails.configuration.secrets.domain_name
# Configure the class responsible to send e-mails. # Configure the class responsible to send e-mails.
# config.mailer = 'Devise::Mailer' # config.mailer = 'Devise::Mailer'

View File

@ -1,4 +1,5 @@
Rails.application.routes.draw do Rails.application.routes.draw do
get 'pages/czechers'
resources :metapurses do resources :metapurses do
member do member do
get 'data' get 'data'

View File

@ -10,7 +10,7 @@
# #
# It's strongly recommended that you check this file into your version control system. # It's strongly recommended that you check this file into your version control system.
ActiveRecord::Schema[7.1].define(version: 2024_03_25_142502) do ActiveRecord::Schema[7.2].define(version: 2024_03_25_142502) do
# These are extensions that must be enabled in order to support this database # These are extensions that must be enabled in order to support this database
enable_extension "plpgsql" enable_extension "plpgsql"
@ -79,7 +79,7 @@ ActiveRecord::Schema[7.1].define(version: 2024_03_25_142502) do
t.integer "sluggable_id", null: false t.integer "sluggable_id", null: false
t.string "sluggable_type", limit: 50 t.string "sluggable_type", limit: 50
t.string "scope" t.string "scope"
t.datetime "created_at", precision: nil t.datetime "created_at"
t.index ["slug", "sluggable_type", "scope"], name: "index_friendly_id_slugs_on_slug_and_sluggable_type_and_scope", unique: true t.index ["slug", "sluggable_type", "scope"], name: "index_friendly_id_slugs_on_slug_and_sluggable_type_and_scope", unique: true
t.index ["slug", "sluggable_type"], name: "index_friendly_id_slugs_on_slug_and_sluggable_type" t.index ["slug", "sluggable_type"], name: "index_friendly_id_slugs_on_slug_and_sluggable_type"
t.index ["sluggable_type", "sluggable_id"], name: "index_friendly_id_slugs_on_sluggable_type_and_sluggable_id" t.index ["sluggable_type", "sluggable_id"], name: "index_friendly_id_slugs_on_sluggable_type_and_sluggable_id"

BIN
public/czech-logo-dip20.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 72 KiB

BIN
public/tendy-logo-icrc1.jpg Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 124 KiB

View File

@ -0,0 +1,15 @@
require 'rails_helper'
# Specs in this file have access to a helper object that includes
# the PagesHelper. For example:
#
# describe PagesHelper do
# describe "string concat" do
# it "concats two strings with spaces" do
# expect(helper.concat_strings("this","that")).to eq("this that")
# end
# end
# end
RSpec.describe PagesHelper, type: :helper do
pending "add some examples to (or delete) #{__FILE__}"
end

View File

@ -0,0 +1,11 @@
require 'rails_helper'
RSpec.describe "Pages", type: :request do
describe "GET /czechers" do
it "returns http success" do
get "/pages/czechers"
expect(response).to have_http_status(:success)
end
end
end

View File

@ -0,0 +1,5 @@
require 'rails_helper'
RSpec.describe "pages/czechers.html.haml", type: :view do
pending "add some examples to (or delete) #{__FILE__}"
end