| @ -0,0 +1,9 @@ | |||
| # See https://git-scm.com/docs/gitattributes for more about git attribute files. | |||
| # Mark the database schema as having been generated. | |||
| db/schema.rb linguist-generated | |||
| # Mark any vendored files as having been vendored. | |||
| vendor/* linguist-vendored | |||
| config/credentials/*.yml.enc diff=rails_credentials | |||
| config/credentials.yml.enc diff=rails_credentials | |||
| @ -0,0 +1,50 @@ | |||
| # See https://help.github.com/articles/ignoring-files for more about ignoring files. | |||
| # | |||
| # If you find yourself ignoring temporary files generated by your text editor | |||
| # or operating system, you probably want to add a global ignore instead: | |||
| # git config --global core.excludesfile '~/.gitignore_global' | |||
| # Ignore bundler config. | |||
| /.bundle | |||
| # Ignore all environment files (except templates). | |||
| /.env* | |||
| !/.env*.erb | |||
| # Ignore all logfiles and tempfiles. | |||
| /log/* | |||
| /tmp/* | |||
| !/log/.keep | |||
| !/tmp/.keep | |||
| # Ignore pidfiles, but keep the directory. | |||
| /tmp/pids/* | |||
| !/tmp/pids/ | |||
| !/tmp/pids/.keep | |||
| # Ignore storage (uploaded files in development and any SQLite databases). | |||
| /storage/* | |||
| !/storage/.keep | |||
| /tmp/storage/* | |||
| !/tmp/storage/ | |||
| !/tmp/storage/.keep | |||
| /public/assets | |||
| # Ignore master key for decrypting credentials and more. | |||
| /config/master.key | |||
| /config/credentials.yml.enc | |||
| /config/database.yml | |||
| /config/ssl | |||
| /Procfile.dev | |||
| /vendor/* | |||
| !/vendor/.keep | |||
| !/vendor/javascript | |||
| /node_modules | |||
| /data.ms | |||
| /dump.rdb | |||
| /.ruby-lsp | |||
| @ -0,0 +1 @@ | |||
| ruby-3.3.0 | |||
| @ -0,0 +1,64 @@ | |||
| source "https://rubygems.org" | |||
| ruby "3.3.0" | |||
| # Bundle edge Rails instead: gem "rails", github: "rails/rails", branch: "main" | |||
| gem "rails", "~> 7.1.3", ">= 7.1.3.2" | |||
| # The original asset pipeline for Rails [https://github.com/rails/sprockets-rails] | |||
| gem "sprockets-rails" | |||
| # Use postgresql as the database for Active Record | |||
| gem "pg", "~> 1.1" | |||
| # Use the Puma web server [https://github.com/puma/puma] | |||
| gem "puma", ">= 5.0" | |||
| # Use JavaScript with ESM import maps [https://github.com/rails/importmap-rails] | |||
| gem "importmap-rails" | |||
| # Hotwire's SPA-like page accelerator [https://turbo.hotwired.dev] | |||
| gem "turbo-rails" | |||
| # Hotwire's modest JavaScript framework [https://stimulus.hotwired.dev] | |||
| gem "stimulus-rails" | |||
| # Build JSON APIs with ease [https://github.com/rails/jbuilder] | |||
| gem "jbuilder" | |||
| # Use Kredis to get higher-level data types in Redis [https://github.com/rails/kredis] | |||
| # gem "kredis" | |||
| # Use Active Model has_secure_password [https://guides.rubyonrails.org/active_model_basics.html#securepassword] | |||
| # gem "bcrypt", "~> 3.1.7" | |||
| # Windows does not include zoneinfo files, so bundle the tzinfo-data gem | |||
| gem "tzinfo-data", platforms: %i[ windows jruby ] | |||
| # Reduces boot times through caching; required in config/boot.rb | |||
| gem "bootsnap", require: false | |||
| # Use Active Storage variants [https://guides.rubyonrails.org/active_storage_overview.html#transforming-images] | |||
| # gem "image_processing", "~> 1.2" | |||
| group :development, :test do | |||
| # See https://guides.rubyonrails.org/debugging_rails_applications.html#debugging-with-the-debug-gem | |||
| gem "debug", platforms: %i[ mri windows ] | |||
| end | |||
| group :development do | |||
| # Use console on exceptions pages [https://github.com/rails/web-console] | |||
| gem "web-console" | |||
| # Add speed badges [https://github.com/MiniProfiler/rack-mini-profiler] | |||
| # gem "rack-mini-profiler" | |||
| # Speed up commands on slow machines / big apps [https://github.com/rails/spring] | |||
| # gem "spring" | |||
| end | |||
| group :test do | |||
| # Use system testing [https://guides.rubyonrails.org/testing.html#system-testing] | |||
| gem "capybara" | |||
| gem "selenium-webdriver" | |||
| end | |||
| @ -0,0 +1,272 @@ | |||
| GEM | |||
| remote: https://rubygems.org/ | |||
| specs: | |||
| actioncable (7.1.3.2) | |||
| actionpack (= 7.1.3.2) | |||
| activesupport (= 7.1.3.2) | |||
| nio4r (~> 2.0) | |||
| websocket-driver (>= 0.6.1) | |||
| zeitwerk (~> 2.6) | |||
| actionmailbox (7.1.3.2) | |||
| actionpack (= 7.1.3.2) | |||
| activejob (= 7.1.3.2) | |||
| activerecord (= 7.1.3.2) | |||
| activestorage (= 7.1.3.2) | |||
| activesupport (= 7.1.3.2) | |||
| mail (>= 2.7.1) | |||
| net-imap | |||
| net-pop | |||
| net-smtp | |||
| actionmailer (7.1.3.2) | |||
| actionpack (= 7.1.3.2) | |||
| actionview (= 7.1.3.2) | |||
| activejob (= 7.1.3.2) | |||
| activesupport (= 7.1.3.2) | |||
| mail (~> 2.5, >= 2.5.4) | |||
| net-imap | |||
| net-pop | |||
| net-smtp | |||
| rails-dom-testing (~> 2.2) | |||
| actionpack (7.1.3.2) | |||
| actionview (= 7.1.3.2) | |||
| activesupport (= 7.1.3.2) | |||
| nokogiri (>= 1.8.5) | |||
| racc | |||
| rack (>= 2.2.4) | |||
| rack-session (>= 1.0.1) | |||
| rack-test (>= 0.6.3) | |||
| rails-dom-testing (~> 2.2) | |||
| rails-html-sanitizer (~> 1.6) | |||
| actiontext (7.1.3.2) | |||
| actionpack (= 7.1.3.2) | |||
| activerecord (= 7.1.3.2) | |||
| activestorage (= 7.1.3.2) | |||
| activesupport (= 7.1.3.2) | |||
| globalid (>= 0.6.0) | |||
| nokogiri (>= 1.8.5) | |||
| actionview (7.1.3.2) | |||
| activesupport (= 7.1.3.2) | |||
| builder (~> 3.1) | |||
| erubi (~> 1.11) | |||
| rails-dom-testing (~> 2.2) | |||
| rails-html-sanitizer (~> 1.6) | |||
| activejob (7.1.3.2) | |||
| activesupport (= 7.1.3.2) | |||
| globalid (>= 0.3.6) | |||
| activemodel (7.1.3.2) | |||
| activesupport (= 7.1.3.2) | |||
| activerecord (7.1.3.2) | |||
| activemodel (= 7.1.3.2) | |||
| activesupport (= 7.1.3.2) | |||
| timeout (>= 0.4.0) | |||
| activestorage (7.1.3.2) | |||
| actionpack (= 7.1.3.2) | |||
| activejob (= 7.1.3.2) | |||
| activerecord (= 7.1.3.2) | |||
| activesupport (= 7.1.3.2) | |||
| marcel (~> 1.0) | |||
| activesupport (7.1.3.2) | |||
| base64 | |||
| bigdecimal | |||
| concurrent-ruby (~> 1.0, >= 1.0.2) | |||
| connection_pool (>= 2.2.5) | |||
| drb | |||
| i18n (>= 1.6, < 2) | |||
| minitest (>= 5.1) | |||
| mutex_m | |||
| tzinfo (~> 2.0) | |||
| addressable (2.8.6) | |||
| public_suffix (>= 2.0.2, < 6.0) | |||
| base64 (0.2.0) | |||
| bigdecimal (3.1.7) | |||
| bindex (0.8.1) | |||
| bootsnap (1.18.3) | |||
| msgpack (~> 1.2) | |||
| builder (3.2.4) | |||
| capybara (3.40.0) | |||
| addressable | |||
| matrix | |||
| mini_mime (>= 0.1.3) | |||
| nokogiri (~> 1.11) | |||
| rack (>= 1.6.0) | |||
| rack-test (>= 0.6.3) | |||
| regexp_parser (>= 1.5, < 3.0) | |||
| xpath (~> 3.2) | |||
| concurrent-ruby (1.2.3) | |||
| connection_pool (2.4.1) | |||
| crass (1.0.6) | |||
| date (3.3.4) | |||
| debug (1.9.2) | |||
| irb (~> 1.10) | |||
| reline (>= 0.3.8) | |||
| drb (2.2.1) | |||
| erubi (1.12.0) | |||
| globalid (1.2.1) | |||
| activesupport (>= 6.1) | |||
| i18n (1.14.4) | |||
| concurrent-ruby (~> 1.0) | |||
| importmap-rails (2.0.1) | |||
| actionpack (>= 6.0.0) | |||
| activesupport (>= 6.0.0) | |||
| railties (>= 6.0.0) | |||
| io-console (0.7.2) | |||
| irb (1.12.0) | |||
| rdoc | |||
| reline (>= 0.4.2) | |||
| jbuilder (2.11.5) | |||
| actionview (>= 5.0.0) | |||
| activesupport (>= 5.0.0) | |||
| loofah (2.22.0) | |||
| crass (~> 1.0.2) | |||
| nokogiri (>= 1.12.0) | |||
| mail (2.8.1) | |||
| mini_mime (>= 0.1.1) | |||
| net-imap | |||
| net-pop | |||
| net-smtp | |||
| marcel (1.0.4) | |||
| matrix (0.4.2) | |||
| mini_mime (1.1.5) | |||
| minitest (5.22.3) | |||
| msgpack (1.7.2) | |||
| mutex_m (0.2.0) | |||
| net-imap (0.4.10) | |||
| date | |||
| net-protocol | |||
| net-pop (0.1.2) | |||
| net-protocol | |||
| net-protocol (0.2.2) | |||
| timeout | |||
| net-smtp (0.5.0) | |||
| net-protocol | |||
| nio4r (2.7.1) | |||
| nokogiri (1.16.4-aarch64-linux) | |||
| racc (~> 1.4) | |||
| nokogiri (1.16.4-arm-linux) | |||
| racc (~> 1.4) | |||
| nokogiri (1.16.4-arm64-darwin) | |||
| racc (~> 1.4) | |||
| nokogiri (1.16.4-x86-linux) | |||
| racc (~> 1.4) | |||
| nokogiri (1.16.4-x86_64-darwin) | |||
| racc (~> 1.4) | |||
| nokogiri (1.16.4-x86_64-linux) | |||
| racc (~> 1.4) | |||
| pg (1.5.6) | |||
| psych (5.1.2) | |||
| stringio | |||
| public_suffix (5.0.5) | |||
| puma (6.4.2) | |||
| nio4r (~> 2.0) | |||
| racc (1.7.3) | |||
| rack (3.0.10) | |||
| rack-session (2.0.0) | |||
| rack (>= 3.0.0) | |||
| rack-test (2.1.0) | |||
| rack (>= 1.3) | |||
| rackup (2.1.0) | |||
| rack (>= 3) | |||
| webrick (~> 1.8) | |||
| rails (7.1.3.2) | |||
| actioncable (= 7.1.3.2) | |||
| actionmailbox (= 7.1.3.2) | |||
| actionmailer (= 7.1.3.2) | |||
| actionpack (= 7.1.3.2) | |||
| actiontext (= 7.1.3.2) | |||
| actionview (= 7.1.3.2) | |||
| activejob (= 7.1.3.2) | |||
| activemodel (= 7.1.3.2) | |||
| activerecord (= 7.1.3.2) | |||
| activestorage (= 7.1.3.2) | |||
| activesupport (= 7.1.3.2) | |||
| bundler (>= 1.15.0) | |||
| railties (= 7.1.3.2) | |||
| rails-dom-testing (2.2.0) | |||
| activesupport (>= 5.0.0) | |||
| minitest | |||
| nokogiri (>= 1.6) | |||
| rails-html-sanitizer (1.6.0) | |||
| loofah (~> 2.21) | |||
| nokogiri (~> 1.14) | |||
| railties (7.1.3.2) | |||
| actionpack (= 7.1.3.2) | |||
| activesupport (= 7.1.3.2) | |||
| irb | |||
| rackup (>= 1.0.0) | |||
| rake (>= 12.2) | |||
| thor (~> 1.0, >= 1.2.2) | |||
| zeitwerk (~> 2.6) | |||
| rake (13.2.1) | |||
| rdoc (6.6.3.1) | |||
| psych (>= 4.0.0) | |||
| regexp_parser (2.9.0) | |||
| reline (0.5.2) | |||
| io-console (~> 0.5) | |||
| rexml (3.2.6) | |||
| rubyzip (2.3.2) | |||
| selenium-webdriver (4.19.0) | |||
| base64 (~> 0.2) | |||
| rexml (~> 3.2, >= 3.2.5) | |||
| rubyzip (>= 1.2.2, < 3.0) | |||
| websocket (~> 1.0) | |||
| sprockets (4.2.1) | |||
| concurrent-ruby (~> 1.0) | |||
| rack (>= 2.2.4, < 4) | |||
| sprockets-rails (3.4.2) | |||
| actionpack (>= 5.2) | |||
| activesupport (>= 5.2) | |||
| sprockets (>= 3.0.0) | |||
| stimulus-rails (1.3.3) | |||
| railties (>= 6.0.0) | |||
| stringio (3.1.0) | |||
| thor (1.3.1) | |||
| timeout (0.4.1) | |||
| turbo-rails (2.0.5) | |||
| actionpack (>= 6.0.0) | |||
| activejob (>= 6.0.0) | |||
| railties (>= 6.0.0) | |||
| tzinfo (2.0.6) | |||
| concurrent-ruby (~> 1.0) | |||
| web-console (4.2.1) | |||
| actionview (>= 6.0.0) | |||
| activemodel (>= 6.0.0) | |||
| bindex (>= 0.4.0) | |||
| railties (>= 6.0.0) | |||
| webrick (1.8.1) | |||
| websocket (1.2.10) | |||
| websocket-driver (0.7.6) | |||
| websocket-extensions (>= 0.1.0) | |||
| websocket-extensions (0.1.5) | |||
| xpath (3.2.0) | |||
| nokogiri (~> 1.8) | |||
| zeitwerk (2.6.13) | |||
| PLATFORMS | |||
| aarch64-linux | |||
| arm-linux | |||
| arm64-darwin | |||
| x86-linux | |||
| x86_64-darwin | |||
| x86_64-linux | |||
| DEPENDENCIES | |||
| bootsnap | |||
| capybara | |||
| debug | |||
| importmap-rails | |||
| jbuilder | |||
| pg (~> 1.1) | |||
| puma (>= 5.0) | |||
| rails (~> 7.1.3, >= 7.1.3.2) | |||
| selenium-webdriver | |||
| sprockets-rails | |||
| stimulus-rails | |||
| turbo-rails | |||
| tzinfo-data | |||
| web-console | |||
| RUBY VERSION | |||
| ruby 3.3.0p0 | |||
| BUNDLED WITH | |||
| 2.5.9 | |||
| @ -0,0 +1,37 @@ | |||
| Development | |||
| -------------------- | |||
| Local | |||
| dropdb -U mattias ikea_foundtation_week_2024 | |||
| createdb ikea_foundtation_week_2024 | |||
| pg_restore -Fc --create --dbname=ikea_foundtation_week_2024 --username=mattias db20150901.bak | |||
| DB | |||
| ------------------- | |||
| sudo -u postgres createuser --interactive ikea_foundation | |||
| sudo -u postgres createdb -O ikea_foundation ikea_foundtation_week_2024 | |||
| dropdb -U ikea_foundation ikea_foundtation_week_2024 | |||
| RAILS_ENV=production rails db:migrate | |||
| rake db:create:all | |||
| CREATE EXTENSION hstore; | |||
| sudo -u postgres psql -d ikea_foundtation_week_2024 | |||
| pg_dump -U ikea_foundation -Fc ikea_foundtation_week_2024 > db20140909.bak | |||
| sudo -i -u postgres | |||
| psql | |||
| Dump DEV | |||
| ------------------- | |||
| pg_dump -U mattias -Fc ikea_foundtation_week_2024 > db20140909.bak | |||
| pg_dump -U mattias ikea_foundtation_week_2024 > db20140909.sql | |||
| pg_restore -Fc --dbname=ikea_foundtation_week_2024 --username=ikea_foundation dumps/db20230209.bak | |||
| pg_restore -Fc --create --dbname=ikea_foundtation_week_2024 --username=ikea_foundation db20150901.bak | |||
| @ -0,0 +1,191 @@ | |||
| Assets | |||
| ------------------- | |||
| RAILS_ENV=production bundle exec rake assets:precompile | |||
| RAILS_ENV=production bundle exec rake assets:clean | |||
| git clone https://mattias:zibxa7-qozsej-qoksaM@git.oncotype.dk/hirschsprung/hirschsprung.dk.2024.git | |||
| rails new --skip-docker --skip-action-mailbox --skip-action-text --skip-action-cable --database=postgresql hirschsprung.dk.2024 | |||
| Credentials | |||
| ------------------- | |||
| EDITOR=vi rails credentials:edit | |||
| Gem | |||
| ------------------- | |||
| bundle config set --local without 'development test' | |||
| https://www.youtube.com/playlist?list=PL3mtAHT_eRex1sJI2uoTBgFT3qAXFbEcy | |||
| https://www.youtube.com/watch?v=X7H1N6pMYzg&list=PL3mtAHT_eRex1sJI2uoTBgFT3qAXFbEcy&index=6 | |||
| Captcha | |||
| ------------------- | |||
| https://blog.cloudflare.com/turnstile-ga | |||
| Utils | |||
| ------------------------------- | |||
| RAILS_ENV=production bundle exec rake utils:delete_old_verification_codes | |||
| # Delete old verification codes | |||
| 10 3 * * * cd /home/hirschsprung/hirschsprung.dk && RAILS_ENV=production /home/hirschsprung/.rbenv/shims/bundle exec rake utils:delete_old_verification_codes | |||
| Mailer | |||
| ------------------------------- | |||
| http://localhost:3000/rails/mailers/user_mailer/verify_email.html | |||
| curl -L -X GET 'https://maps.googleapis.com/maps/api/place/details/json?place_id=ChIJh3wvJx1TUkYRsBM5GKdGnxs&fields=opening_hours&key=AIzaSyD6ERQbg8j--n4RV8QiaRLqR792m9LRSrk' | |||
| curl -L -X GET 'https://maps.googleapis.com/maps/api/place/findplacefromtext/json?input=Hirschsprung+Collection&inputtype=textquery&fields=formatted_address%2Cname%2Ccurrent_opening_hours%2Cplace_id%2Cgeometry&key=AIzaSyD6ERQbg8j--n4RV8QiaRLqR792m9LRSrk' | |||
| curl -L -X GET 'https://maps.googleapis.com/maps/api/place/details/json?place_id=ChIJh3wvJx1TUkYRsBM5GKdGnxs&fields=name%2Cbusiness_status%2Copening_hours/open_now&key=AIzaSyD6ERQbg8j--n4RV8QiaRLqR792m9LRSrk' | |||
| CLOSED_TEMPORARILY | |||
| Louisianna | |||
| Louisiana Museum of Modern Art | |||
| ChIJq5pUwwc3UkYRTpARr0S5L2o | |||
| curl -L -X GET 'https://maps.googleapis.com/maps/api/place/findplacefromtext/json?input=Louisiana+Museum+of+Modern+Art&inputtype=textquery&fields=formatted_address%2Cname%2Ccurrent_opening_hours%2Cplace_id%2Cgeometry&key=AIzaSyD6ERQbg8j--n4RV8QiaRLqR792m9LRSrk' | |||
| curl -L -X GET 'https://maps.googleapis.com/maps/api/place/details/json?place_id=ChIJq5pUwwc3UkYRTpARr0S5L2o&fields=name%2Cbusiness_status%2Copening_hours/open_now&key=AIzaSyD6ERQbg8j--n4RV8QiaRLqR792m9LRSrk' | |||
| /home/hs/hirschsprung.dk.2024/log/*.log { | |||
| weekly | |||
| missingok | |||
| rotate 4 | |||
| compress | |||
| delaycompress | |||
| notifempty | |||
| copytruncate | |||
| } | |||
| { | |||
| "html_attributions" : [], | |||
| "result" : | |||
| { | |||
| "business_status" : "OPERATIONAL", | |||
| "name" : "Louisiana Museum of Modern Art", | |||
| "opening_hours" : | |||
| { | |||
| "open_now" : false, | |||
| "periods" : | |||
| [ | |||
| { | |||
| "close" : | |||
| { | |||
| "day" : 0, | |||
| "time" : "1800" | |||
| }, | |||
| "open" : | |||
| { | |||
| "day" : 0, | |||
| "time" : "1100" | |||
| } | |||
| }, | |||
| { | |||
| "close" : | |||
| { | |||
| "day" : 2, | |||
| "time" : "2200" | |||
| }, | |||
| "open" : | |||
| { | |||
| "day" : 2, | |||
| "time" : "1100" | |||
| } | |||
| }, | |||
| { | |||
| "close" : | |||
| { | |||
| "day" : 3, | |||
| "time" : "2200" | |||
| }, | |||
| "open" : | |||
| { | |||
| "day" : 3, | |||
| "time" : "1100" | |||
| } | |||
| }, | |||
| { | |||
| "close" : | |||
| { | |||
| "day" : 4, | |||
| "time" : "2200" | |||
| }, | |||
| "open" : | |||
| { | |||
| "day" : 4, | |||
| "time" : "1100" | |||
| } | |||
| }, | |||
| { | |||
| "close" : | |||
| { | |||
| "day" : 5, | |||
| "time" : "2200" | |||
| }, | |||
| "open" : | |||
| { | |||
| "day" : 5, | |||
| "time" : "1100" | |||
| } | |||
| }, | |||
| { | |||
| "close" : | |||
| { | |||
| "day" : 6, | |||
| "time" : "1800" | |||
| }, | |||
| "open" : | |||
| { | |||
| "day" : 6, | |||
| "time" : "1100" | |||
| } | |||
| } | |||
| ], | |||
| "weekday_text" : | |||
| [ | |||
| "Monday: Closed", | |||
| "Tuesday: 11:00 AM – 10:00 PM", | |||
| "Wednesday: 11:00 AM – 10:00 PM", | |||
| "Thursday: 11:00 AM – 10:00 PM", | |||
| "Friday: 11:00 AM – 10:00 PM", | |||
| "Saturday: 11:00 AM – 6:00 PM", | |||
| "Sunday: 11:00 AM – 6:00 PM" | |||
| ] | |||
| } | |||
| }, | |||
| "status" : "OK" | |||
| }% | |||
| #curl -L -X GET 'https://maps.googleapis.com/maps/api/place/details/json?place_id=ChIJq5pUwwc3UkYRTpARr0S5L2o& | |||
| #fields=name%2Cbusiness_status%2Copening_hours/open_now&key=AIzaSyD6ERQbg8j--n4RV8QiaRLqR792m9LRSrk' | |||
| {"html_attributions"=>[], | |||
| "result"=> | |||
| {"business_status"=>"OPERATIONAL", | |||
| "name"=>"Hirschsprung Collection", | |||
| "opening_hours"=> | |||
| {"open_now"=>true, | |||
| "periods"=> | |||
| [{"close"=>{"day"=>0, "time"=>"1700"}, "open"=>{"day"=>0, "time"=>"1000"}}, | |||
| {"close"=>{"day"=>3, "time"=>"1700"}, "open"=>{"day"=>3, "time"=>"1000"}}, | |||
| {"close"=>{"day"=>4, "time"=>"1700"}, "open"=>{"day"=>4, "time"=>"1000"}}, | |||
| {"close"=>{"day"=>5, "time"=>"1700"}, "open"=>{"day"=>5, "time"=>"1000"}}, | |||
| {"close"=>{"day"=>6, "time"=>"1700"}, "open"=>{"day"=>6, "time"=>"1000"}}], | |||
| "weekday_text"=> | |||
| ["Monday: Closed", | |||
| "Tuesday: Closed", | |||
| "Wednesday: 10:00 AM – 5:00 PM", | |||
| "Thursday: 10:00 AM – 5:00 PM", | |||
| "Friday: 10:00 AM – 5:00 PM", | |||
| "Saturday: 10:00 AM – 5:00 PM", | |||
| "Sunday: 10:00 AM – 5:00 PM"]}}, | |||
| "status"=>"OK"} | |||
| @ -0,0 +1,6 @@ | |||
| # Add your own tasks in files placed in lib/tasks ending in .rake, | |||
| # for example lib/tasks/capistrano.rake, and they will automatically be available to Rake. | |||
| require_relative "config/application" | |||
| Rails.application.load_tasks | |||
| @ -0,0 +1,4 @@ | |||
| //= link_tree ../images | |||
| //= link_directory ../stylesheets .css | |||
| //= link_tree ../../javascript .js | |||
| //= link_tree ../../../vendor/javascript .js | |||
| @ -0,0 +1,15 @@ | |||
| /* | |||
| * This is a manifest file that'll be compiled into application.css, which will include all the files | |||
| * listed below. | |||
| * | |||
| * Any CSS (and SCSS, if configured) file within this directory, lib/assets/stylesheets, or any plugin's | |||
| * vendor/assets/stylesheets directory can be referenced here using a relative path. | |||
| * | |||
| * You're free to add application-wide styles to this file and they'll appear at the bottom of the | |||
| * compiled file so the styles you add here take precedence over styles defined in any other CSS | |||
| * files in this directory. Styles in this file should be added after the last require_* statement. | |||
| * It is generally better to create a new file per style scope. | |||
| * | |||
| *= require_tree . | |||
| *= require_self | |||
| */ | |||
| @ -0,0 +1,2 @@ | |||
| class ApplicationController < ActionController::Base | |||
| end | |||
| @ -0,0 +1,2 @@ | |||
| module ApplicationHelper | |||
| end | |||
| @ -0,0 +1,3 @@ | |||
| // Configure your import map in config/importmap.rb. Read more: https://github.com/rails/importmap-rails | |||
| import "@hotwired/turbo-rails" | |||
| import "controllers" | |||
| @ -0,0 +1,9 @@ | |||
| import { Application } from "@hotwired/stimulus" | |||
| const application = Application.start() | |||
| // Configure Stimulus development experience | |||
| application.debug = false | |||
| window.Stimulus = application | |||
| export { application } | |||
| @ -0,0 +1,7 @@ | |||
| import { Controller } from "@hotwired/stimulus" | |||
| export default class extends Controller { | |||
| connect() { | |||
| this.element.textContent = "Hello World!" | |||
| } | |||
| } | |||
| @ -0,0 +1,11 @@ | |||
| // Import and register all your controllers from the importmap under controllers/* | |||
| import { application } from "controllers/application" | |||
| // Eager load all controllers defined in the import map under controllers/**/*_controller | |||
| import { eagerLoadControllersFrom } from "@hotwired/stimulus-loading" | |||
| eagerLoadControllersFrom("controllers", application) | |||
| // Lazy load controllers as they appear in the DOM (remember not to preload controllers in import map!) | |||
| // import { lazyLoadControllersFrom } from "@hotwired/stimulus-loading" | |||
| // lazyLoadControllersFrom("controllers", application) | |||
| @ -0,0 +1,7 @@ | |||
| class ApplicationJob < ActiveJob::Base | |||
| # Automatically retry jobs that encountered a deadlock | |||
| # retry_on ActiveRecord::Deadlocked | |||
| # Most jobs are safe to ignore if the underlying records are no longer available | |||
| # discard_on ActiveJob::DeserializationError | |||
| end | |||
| @ -0,0 +1,4 @@ | |||
| class ApplicationMailer < ActionMailer::Base | |||
| default from: "from@example.com" | |||
| layout "mailer" | |||
| end | |||
| @ -0,0 +1,3 @@ | |||
| class ApplicationRecord < ActiveRecord::Base | |||
| primary_abstract_class | |||
| end | |||
| @ -0,0 +1,16 @@ | |||
| <!DOCTYPE html> | |||
| <html> | |||
| <head> | |||
| <title>Week2024</title> | |||
| <meta name="viewport" content="width=device-width,initial-scale=1"> | |||
| <%= csrf_meta_tags %> | |||
| <%= csp_meta_tag %> | |||
| <%= stylesheet_link_tag "application", "data-turbo-track": "reload" %> | |||
| <%= javascript_importmap_tags %> | |||
| </head> | |||
| <body> | |||
| <%= yield %> | |||
| </body> | |||
| </html> | |||
| @ -0,0 +1,13 @@ | |||
| <!DOCTYPE html> | |||
| <html> | |||
| <head> | |||
| <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> | |||
| <style> | |||
| /* Email styles need to be inline */ | |||
| </style> | |||
| </head> | |||
| <body> | |||
| <%= yield %> | |||
| </body> | |||
| </html> | |||
| @ -0,0 +1 @@ | |||
| <%= yield %> | |||
| @ -0,0 +1,109 @@ | |||
| #!/usr/bin/env ruby | |||
| # frozen_string_literal: true | |||
| # | |||
| # This file was generated by Bundler. | |||
| # | |||
| # The application 'bundle' is installed as part of a gem, and | |||
| # this file is here to facilitate running it. | |||
| # | |||
| require "rubygems" | |||
| m = Module.new do | |||
| module_function | |||
| def invoked_as_script? | |||
| File.expand_path($0) == File.expand_path(__FILE__) | |||
| end | |||
| def env_var_version | |||
| ENV["BUNDLER_VERSION"] | |||
| end | |||
| def cli_arg_version | |||
| return unless invoked_as_script? # don't want to hijack other binstubs | |||
| return unless "update".start_with?(ARGV.first || " ") # must be running `bundle update` | |||
| bundler_version = nil | |||
| update_index = nil | |||
| ARGV.each_with_index do |a, i| | |||
| if update_index && update_index.succ == i && a.match?(Gem::Version::ANCHORED_VERSION_PATTERN) | |||
| bundler_version = a | |||
| end | |||
| next unless a =~ /\A--bundler(?:[= ](#{Gem::Version::VERSION_PATTERN}))?\z/ | |||
| bundler_version = $1 | |||
| update_index = i | |||
| end | |||
| bundler_version | |||
| end | |||
| def gemfile | |||
| gemfile = ENV["BUNDLE_GEMFILE"] | |||
| return gemfile if gemfile && !gemfile.empty? | |||
| File.expand_path("../Gemfile", __dir__) | |||
| end | |||
| def lockfile | |||
| lockfile = | |||
| case File.basename(gemfile) | |||
| when "gems.rb" then gemfile.sub(/\.rb$/, ".locked") | |||
| else "#{gemfile}.lock" | |||
| end | |||
| File.expand_path(lockfile) | |||
| end | |||
| def lockfile_version | |||
| return unless File.file?(lockfile) | |||
| lockfile_contents = File.read(lockfile) | |||
| return unless lockfile_contents =~ /\n\nBUNDLED WITH\n\s{2,}(#{Gem::Version::VERSION_PATTERN})\n/ | |||
| Regexp.last_match(1) | |||
| end | |||
| def bundler_requirement | |||
| @bundler_requirement ||= | |||
| env_var_version || | |||
| cli_arg_version || | |||
| bundler_requirement_for(lockfile_version) | |||
| end | |||
| def bundler_requirement_for(version) | |||
| return "#{Gem::Requirement.default}.a" unless version | |||
| bundler_gem_version = Gem::Version.new(version) | |||
| bundler_gem_version.approximate_recommendation | |||
| end | |||
| def load_bundler! | |||
| ENV["BUNDLE_GEMFILE"] ||= gemfile | |||
| activate_bundler | |||
| end | |||
| def activate_bundler | |||
| gem_error = activation_error_handling do | |||
| gem "bundler", bundler_requirement | |||
| end | |||
| return if gem_error.nil? | |||
| require_error = activation_error_handling do | |||
| require "bundler/version" | |||
| end | |||
| return if require_error.nil? && Gem::Requirement.new(bundler_requirement).satisfied_by?(Gem::Version.new(Bundler::VERSION)) | |||
| warn "Activating bundler (#{bundler_requirement}) failed:\n#{gem_error.message}\n\nTo install the version of bundler this project requires, run `gem install bundler -v '#{bundler_requirement}'`" | |||
| exit 42 | |||
| end | |||
| def activation_error_handling | |||
| yield | |||
| nil | |||
| rescue StandardError, LoadError => e | |||
| e | |||
| end | |||
| end | |||
| m.load_bundler! | |||
| if m.invoked_as_script? | |||
| load Gem.bin_path("bundler", "bundle") | |||
| end | |||
| @ -0,0 +1,4 @@ | |||
| #!/usr/bin/env ruby | |||
| require_relative "../config/application" | |||
| require "importmap/commands" | |||
| @ -0,0 +1,4 @@ | |||
| #!/usr/bin/env ruby | |||
| APP_PATH = File.expand_path("../config/application", __dir__) | |||
| require_relative "../config/boot" | |||
| require "rails/commands" | |||
| @ -0,0 +1,4 @@ | |||
| #!/usr/bin/env ruby | |||
| require_relative "../config/boot" | |||
| require "rake" | |||
| Rake.application.run | |||
| @ -0,0 +1,33 @@ | |||
| #!/usr/bin/env ruby | |||
| require "fileutils" | |||
| # path to your application root. | |||
| APP_ROOT = File.expand_path("..", __dir__) | |||
| def system!(*args) | |||
| system(*args, exception: true) | |||
| end | |||
| FileUtils.chdir APP_ROOT do | |||
| # This script is a way to set up or update your development environment automatically. | |||
| # This script is idempotent, so that you can run it at any time and get an expectable outcome. | |||
| # Add necessary setup steps to this file. | |||
| puts "== Installing dependencies ==" | |||
| system! "gem install bundler --conservative" | |||
| system("bundle check") || system!("bundle install") | |||
| # puts "\n== Copying sample files ==" | |||
| # unless File.exist?("config/database.yml") | |||
| # FileUtils.cp "config/database.yml.sample", "config/database.yml" | |||
| # end | |||
| puts "\n== Preparing database ==" | |||
| system! "bin/rails db:prepare" | |||
| puts "\n== Removing old logs and tempfiles ==" | |||
| system! "bin/rails log:clear tmp:clear" | |||
| puts "\n== Restarting application server ==" | |||
| system! "bin/rails restart" | |||
| end | |||
| @ -0,0 +1,6 @@ | |||
| # This file is used by Rack-based servers to start the application. | |||
| require_relative "config/environment" | |||
| run Rails.application | |||
| Rails.application.load_server | |||
| @ -0,0 +1,48 @@ | |||
| require_relative "boot" | |||
| require "rails" | |||
| # Pick the frameworks you want: | |||
| require "active_model/railtie" | |||
| require "active_job/railtie" | |||
| require "active_record/railtie" | |||
| require "active_storage/engine" | |||
| require "action_controller/railtie" | |||
| require "action_mailer/railtie" | |||
| # require "action_mailbox/engine" | |||
| # require "action_text/engine" | |||
| require "action_view/railtie" | |||
| # require "action_cable/engine" | |||
| require "rails/test_unit/railtie" | |||
| # Require the gems listed in Gemfile, including any gems | |||
| # you've limited to :test, :development, or :production. | |||
| Bundler.require(*Rails.groups) | |||
| module Week2024 | |||
| class Application < Rails::Application | |||
| # Initialize configuration defaults for originally generated Rails version. | |||
| config.load_defaults 7.1 | |||
| # Please, add to the `ignore` list any other `lib` subdirectories that do | |||
| # not contain `.rb` files, or that should not be reloaded or eager loaded. | |||
| # Common ones are `templates`, `generators`, or `middleware`, for example. | |||
| config.autoload_lib(ignore: %w(assets tasks)) | |||
| config.time_zone = "Copenhagen" | |||
| config.i18n.default_locale = :da | |||
| config.i18n.available_locales = [:da, :en, :de] | |||
| config.i18n.fallbacks = true | |||
| config.active_storage.routes_prefix = 'storage' #change /rails/active_storage to /storage | |||
| # Configuration for the application, engines, and railties goes here. | |||
| # | |||
| # These settings can be overridden in specific environments using the files | |||
| # in config/environments, which are processed later. | |||
| # | |||
| # config.time_zone = "Central Time (US & Canada)" | |||
| # config.eager_load_paths << Rails.root.join("extras") | |||
| end | |||
| end | |||
| @ -0,0 +1,4 @@ | |||
| ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../Gemfile", __dir__) | |||
| require "bundler/setup" # Set up gems listed in the Gemfile. | |||
| require "bootsnap/setup" # Speed up boot time by caching expensive operations. | |||
| @ -0,0 +1,5 @@ | |||
| # Load the Rails application. | |||
| require_relative "application" | |||
| # Initialize the Rails application. | |||
| Rails.application.initialize! | |||
| @ -0,0 +1,73 @@ | |||
| require "active_support/core_ext/integer/time" | |||
| Rails.application.configure do | |||
| # Settings specified here will take precedence over those in config/application.rb. | |||
| # In the development environment your application's code is reloaded any time | |||
| # it changes. This slows down response time but is perfect for development | |||
| # since you don't have to restart the web server when you make code changes. | |||
| config.enable_reloading = true | |||
| # Do not eager load code on boot. | |||
| config.eager_load = false | |||
| # Show full error reports. | |||
| config.consider_all_requests_local = true | |||
| # Enable server timing | |||
| config.server_timing = true | |||
| # Enable/disable caching. By default caching is disabled. | |||
| # Run rails dev:cache to toggle caching. | |||
| if Rails.root.join("tmp/caching-dev.txt").exist? | |||
| config.action_controller.perform_caching = true | |||
| config.action_controller.enable_fragment_cache_logging = true | |||
| config.cache_store = :memory_store | |||
| config.public_file_server.headers = { | |||
| "Cache-Control" => "public, max-age=#{2.days.to_i}" | |||
| } | |||
| else | |||
| config.action_controller.perform_caching = false | |||
| config.cache_store = :null_store | |||
| end | |||
| # Store uploaded files on the local file system (see config/storage.yml for options). | |||
| config.active_storage.service = :local | |||
| # Don't care if the mailer can't send. | |||
| config.action_mailer.raise_delivery_errors = false | |||
| config.action_mailer.perform_caching = false | |||
| # Print deprecation notices to the Rails logger. | |||
| config.active_support.deprecation = :log | |||
| # Raise exceptions for disallowed deprecations. | |||
| config.active_support.disallowed_deprecation = :raise | |||
| # Tell Active Support which deprecation messages to disallow. | |||
| config.active_support.disallowed_deprecation_warnings = [] | |||
| # Raise an error on page load if there are pending migrations. | |||
| config.active_record.migration_error = :page_load | |||
| # Highlight code that triggered database queries in logs. | |||
| config.active_record.verbose_query_logs = true | |||
| # Highlight code that enqueued background job in logs. | |||
| config.active_job.verbose_enqueue_logs = true | |||
| # Suppress logger output for asset requests. | |||
| config.assets.quiet = true | |||
| # Raises error for missing translations. | |||
| # config.i18n.raise_on_missing_translations = true | |||
| # Annotate rendered view with file names. | |||
| # config.action_view.annotate_rendered_view_with_filenames = true | |||
| # Raise error when a before_action's only/except options reference missing actions | |||
| config.action_controller.raise_on_missing_callback_actions = true | |||
| end | |||
| @ -0,0 +1,92 @@ | |||
| require "active_support/core_ext/integer/time" | |||
| Rails.application.configure do | |||
| # Settings specified here will take precedence over those in config/application.rb. | |||
| # Code is not reloaded between requests. | |||
| config.enable_reloading = false | |||
| # Eager load code on boot. This eager loads most of Rails and | |||
| # your application in memory, allowing both threaded web servers | |||
| # and those relying on copy on write to perform better. | |||
| # Rake tasks automatically ignore this option for performance. | |||
| config.eager_load = true | |||
| # Full error reports are disabled and caching is turned on. | |||
| config.consider_all_requests_local = false | |||
| config.action_controller.perform_caching = true | |||
| # Ensures that a master key has been made available in ENV["RAILS_MASTER_KEY"], config/master.key, or an environment | |||
| # key such as config/credentials/production.key. This key is used to decrypt credentials (and other encrypted files). | |||
| # config.require_master_key = true | |||
| # Disable serving static files from `public/`, relying on NGINX/Apache to do so instead. | |||
| # config.public_file_server.enabled = false | |||
| # Compress CSS using a preprocessor. | |||
| # config.assets.css_compressor = :sass | |||
| # Do not fall back to assets pipeline if a precompiled asset is missed. | |||
| config.assets.compile = false | |||
| # Enable serving of images, stylesheets, and JavaScripts from an asset server. | |||
| # config.asset_host = "http://assets.example.com" | |||
| # Specifies the header that your server uses for sending files. | |||
| # config.action_dispatch.x_sendfile_header = "X-Sendfile" # for Apache | |||
| # config.action_dispatch.x_sendfile_header = "X-Accel-Redirect" # for NGINX | |||
| # Store uploaded files on the local file system (see config/storage.yml for options). | |||
| config.active_storage.service = :local | |||
| # Assume all access to the app is happening through a SSL-terminating reverse proxy. | |||
| # Can be used together with config.force_ssl for Strict-Transport-Security and secure cookies. | |||
| # config.assume_ssl = true | |||
| # Force all access to the app over SSL, use Strict-Transport-Security, and use secure cookies. | |||
| config.force_ssl = true | |||
| # Log to STDOUT by default | |||
| config.logger = ActiveSupport::Logger.new(STDOUT) | |||
| .tap { |logger| logger.formatter = ::Logger::Formatter.new } | |||
| .then { |logger| ActiveSupport::TaggedLogging.new(logger) } | |||
| # Prepend all log lines with the following tags. | |||
| config.log_tags = [ :request_id ] | |||
| # "info" includes generic and useful information about system operation, but avoids logging too much | |||
| # information to avoid inadvertent exposure of personally identifiable information (PII). If you | |||
| # want to log everything, set the level to "debug". | |||
| config.log_level = ENV.fetch("RAILS_LOG_LEVEL", "info") | |||
| # Use a different cache store in production. | |||
| # config.cache_store = :mem_cache_store | |||
| # Use a real queuing backend for Active Job (and separate queues per environment). | |||
| # config.active_job.queue_adapter = :resque | |||
| # config.active_job.queue_name_prefix = "week_2024_production" | |||
| config.action_mailer.perform_caching = false | |||
| # Ignore bad email addresses and do not raise email delivery errors. | |||
| # Set this to true and configure the email server for immediate delivery to raise delivery errors. | |||
| # config.action_mailer.raise_delivery_errors = false | |||
| # Enable locale fallbacks for I18n (makes lookups for any locale fall back to | |||
| # the I18n.default_locale when a translation cannot be found). | |||
| config.i18n.fallbacks = true | |||
| # Don't log any deprecations. | |||
| config.active_support.report_deprecations = false | |||
| # Do not dump schema after migrations. | |||
| config.active_record.dump_schema_after_migration = false | |||
| # Enable DNS rebinding protection and other `Host` header attacks. | |||
| # config.hosts = [ | |||
| # "example.com", # Allow requests from example.com | |||
| # /.*\.example\.com/ # Allow requests from subdomains like `www.example.com` | |||
| # ] | |||
| # Skip DNS rebinding protection for the default health check endpoint. | |||
| # config.host_authorization = { exclude: ->(request) { request.path == "/up" } } | |||
| end | |||
| @ -0,0 +1,64 @@ | |||
| require "active_support/core_ext/integer/time" | |||
| # The test environment is used exclusively to run your application's | |||
| # test suite. You never need to work with it otherwise. Remember that | |||
| # your test database is "scratch space" for the test suite and is wiped | |||
| # and recreated between test runs. Don't rely on the data there! | |||
| Rails.application.configure do | |||
| # Settings specified here will take precedence over those in config/application.rb. | |||
| # While tests run files are not watched, reloading is not necessary. | |||
| config.enable_reloading = false | |||
| # Eager loading loads your entire application. When running a single test locally, | |||
| # this is usually not necessary, and can slow down your test suite. However, it's | |||
| # recommended that you enable it in continuous integration systems to ensure eager | |||
| # loading is working properly before deploying your code. | |||
| config.eager_load = ENV["CI"].present? | |||
| # Configure public file server for tests with Cache-Control for performance. | |||
| config.public_file_server.enabled = true | |||
| config.public_file_server.headers = { | |||
| "Cache-Control" => "public, max-age=#{1.hour.to_i}" | |||
| } | |||
| # Show full error reports and disable caching. | |||
| config.consider_all_requests_local = true | |||
| config.action_controller.perform_caching = false | |||
| config.cache_store = :null_store | |||
| # Render exception templates for rescuable exceptions and raise for other exceptions. | |||
| config.action_dispatch.show_exceptions = :rescuable | |||
| # Disable request forgery protection in test environment. | |||
| config.action_controller.allow_forgery_protection = false | |||
| # Store uploaded files on the local file system in a temporary directory. | |||
| config.active_storage.service = :test | |||
| config.action_mailer.perform_caching = false | |||
| # Tell Action Mailer not to deliver emails to the real world. | |||
| # The :test delivery method accumulates sent emails in the | |||
| # ActionMailer::Base.deliveries array. | |||
| config.action_mailer.delivery_method = :test | |||
| # Print deprecation notices to the stderr. | |||
| config.active_support.deprecation = :stderr | |||
| # Raise exceptions for disallowed deprecations. | |||
| config.active_support.disallowed_deprecation = :raise | |||
| # Tell Active Support which deprecation messages to disallow. | |||
| config.active_support.disallowed_deprecation_warnings = [] | |||
| # Raises error for missing translations. | |||
| # config.i18n.raise_on_missing_translations = true | |||
| # Annotate rendered view with file names. | |||
| # config.action_view.annotate_rendered_view_with_filenames = true | |||
| # Raise error when a before_action's only/except options reference missing actions | |||
| config.action_controller.raise_on_missing_callback_actions = true | |||
| end | |||
| @ -0,0 +1,7 @@ | |||
| # Pin npm packages by running ./bin/importmap | |||
| pin "application" | |||
| pin "@hotwired/turbo-rails", to: "turbo.min.js" | |||
| pin "@hotwired/stimulus", to: "stimulus.min.js" | |||
| pin "@hotwired/stimulus-loading", to: "stimulus-loading.js" | |||
| pin_all_from "app/javascript/controllers", under: "controllers" | |||
| @ -0,0 +1 @@ | |||
| Ancestry.default_ancestry_format = :materialized_path2 | |||
| @ -0,0 +1,12 @@ | |||
| # Be sure to restart your server when you modify this file. | |||
| # Version of your assets, change this if you want to expire all your assets. | |||
| Rails.application.config.assets.version = "1.0" | |||
| # Add additional assets to the asset load path. | |||
| # Rails.application.config.assets.paths << Emoji.images_path | |||
| # Precompile additional assets. | |||
| # application.js, application.css, and all non-JS/CSS in the app/assets | |||
| # folder are already added. | |||
| # Rails.application.config.assets.precompile += %w( admin.js admin.css ) | |||
| @ -0,0 +1,25 @@ | |||
| # Be sure to restart your server when you modify this file. | |||
| # Define an application-wide content security policy. | |||
| # See the Securing Rails Applications Guide for more information: | |||
| # https://guides.rubyonrails.org/security.html#content-security-policy-header | |||
| # Rails.application.configure do | |||
| # config.content_security_policy do |policy| | |||
| # policy.default_src :self, :https | |||
| # policy.font_src :self, :https, :data | |||
| # policy.img_src :self, :https, :data | |||
| # policy.object_src :none | |||
| # policy.script_src :self, :https | |||
| # policy.style_src :self, :https | |||
| # # Specify URI for violation reports | |||
| # # policy.report_uri "/csp-violation-report-endpoint" | |||
| # end | |||
| # | |||
| # # Generate session nonces for permitted importmap, inline scripts, and inline styles. | |||
| # config.content_security_policy_nonce_generator = ->(request) { request.session.id.to_s } | |||
| # config.content_security_policy_nonce_directives = %w(script-src style-src) | |||
| # | |||
| # # Report violations without enforcing the policy. | |||
| # # config.content_security_policy_report_only = true | |||
| # end | |||
| @ -0,0 +1,8 @@ | |||
| # Be sure to restart your server when you modify this file. | |||
| # Configure parameters to be partially matched (e.g. passw matches password) and filtered from the log file. | |||
| # Use this to limit dissemination of sensitive information. | |||
| # See the ActiveSupport::ParameterFilter documentation for supported notations and behaviors. | |||
| Rails.application.config.filter_parameters += [ | |||
| :passw, :secret, :token, :_key, :crypt, :salt, :certificate, :otp, :ssn | |||
| ] | |||
| @ -0,0 +1,16 @@ | |||
| # Be sure to restart your server when you modify this file. | |||
| # Add new inflection rules using the following format. Inflections | |||
| # are locale specific, and you may define rules for as many different | |||
| # locales as you wish. All of these examples are active by default: | |||
| # ActiveSupport::Inflector.inflections(:en) do |inflect| | |||
| # inflect.plural /^(ox)$/i, "\\1en" | |||
| # inflect.singular /^(ox)en/i, "\\1" | |||
| # inflect.irregular "person", "people" | |||
| # inflect.uncountable %w( fish sheep ) | |||
| # end | |||
| # These inflection rules are supported but not enabled by default: | |||
| # ActiveSupport::Inflector.inflections(:en) do |inflect| | |||
| # inflect.acronym "RESTful" | |||
| # end | |||
| @ -0,0 +1,14 @@ | |||
| # frozen_string_literal: true | |||
| Kaminari.configure do |config| | |||
| config.default_per_page = 20 | |||
| # config.max_per_page = nil | |||
| # config.window = 4 | |||
| # config.outer_window = 0 | |||
| # config.left = 0 | |||
| # config.right = 0 | |||
| # config.page_method_name = :page | |||
| # config.param_name = :page | |||
| # config.max_pages = nil | |||
| # config.params_on_first_page = false | |||
| end | |||
| @ -0,0 +1,129 @@ | |||
| Mobility.configure do | |||
| # PLUGINS | |||
| plugins do | |||
| # Backend | |||
| # | |||
| # Sets the default backend to use in models. This can be overridden in models | |||
| # by passing +backend: ...+ to +translates+. | |||
| # | |||
| # To default to a different backend globally, replace +:key_value+ by another | |||
| # backend name. | |||
| # | |||
| backend :jsonb | |||
| # ActiveRecord | |||
| # | |||
| # Defines ActiveRecord as ORM, and enables ActiveRecord-specific plugins. | |||
| active_record | |||
| # Accessors | |||
| # | |||
| # Define reader and writer methods for translated attributes. Remove either | |||
| # to disable globally, or pass +reader: false+ or +writer: false+ to | |||
| # +translates+ in any translated model. | |||
| # | |||
| reader | |||
| writer | |||
| # Backend Reader | |||
| # | |||
| # Defines reader to access the backend for any attribute, of the form | |||
| # +<attribute>_backend+. | |||
| # | |||
| backend_reader | |||
| # | |||
| # Or pass an interpolation string to define a different pattern: | |||
| # backend_reader "%s_translations" | |||
| # Query | |||
| # | |||
| # Defines a scope on the model class which allows querying on | |||
| # translated attributes. The default scope is named +i18n+, pass a different | |||
| # name as default to change the global default, or to +translates+ in any | |||
| # model to change it for that model alone. | |||
| # | |||
| query | |||
| # Cache | |||
| # | |||
| # Comment out to disable caching reads and writes. | |||
| # | |||
| cache | |||
| # Dirty | |||
| # | |||
| # Uncomment this line to include and enable globally: | |||
| # dirty | |||
| # | |||
| # Or uncomment this line to include but disable by default, and only enable | |||
| # per model by passing +dirty: true+ to +translates+. | |||
| dirty false | |||
| # Column Fallback | |||
| # | |||
| # Uncomment line below to fallback to original column. You can pass | |||
| # +column_fallback: true+ to +translates+ to return original column on | |||
| # default locale, or pass +column_fallback: [:en, :de]+ to +translates+ | |||
| # to return original column for those locales or pass | |||
| # +column_fallback: ->(locale) { ... }+ to +translates to evaluate which | |||
| # locales to return original column for. | |||
| # column_fallback | |||
| # | |||
| # Or uncomment this line to enable column fallback with a global default. | |||
| # column_fallback true | |||
| # Fallbacks | |||
| # | |||
| # Uncomment line below to enable fallbacks, using +I18n.fallbacks+. | |||
| fallbacks | |||
| # | |||
| # Or uncomment this line to enable fallbacks with a global default. | |||
| # fallbacks { :pt => :en } | |||
| # Presence | |||
| # | |||
| # Converts blank strings to nil on reads and writes. Comment out to | |||
| # disable. | |||
| # | |||
| # presence | |||
| # Default | |||
| # | |||
| # Set a default translation per attributes. When enabled, passing +default: | |||
| # 'foo'+ sets a default translation string to show in case no translation is | |||
| # present. Can also be passed a proc. | |||
| # | |||
| # default 'foo' | |||
| # Fallthrough Accessors | |||
| # | |||
| # Uses method_missing to define locale-specific accessor methods like | |||
| # +title_en+, +title_en=+, +title_fr+, +title_fr=+ for each translated | |||
| # attribute. If you know what set of locales you want to support, it's | |||
| # generally better to use Locale Accessors (or both together) since | |||
| # +method_missing+ is very slow. (You can use both fallthrough and locale | |||
| # accessor plugins together without conflict.) | |||
| # | |||
| # fallthrough_accessors | |||
| # Locale Accessors | |||
| # | |||
| # Uses +def+ to define accessor methods for a set of locales. By default uses | |||
| # +I18n.available_locales+, but you can pass the set of locales with | |||
| # +translates+ and/or set a global default here. | |||
| # | |||
| locale_accessors | |||
| # | |||
| # Or define specific defaults by uncommenting line below | |||
| # locale_accessors [:en, :ja] | |||
| # Attribute Methods | |||
| # | |||
| # Adds translated attributes to +attributes+ hash, and defines methods | |||
| # +translated_attributes+ and +untranslated_attributes+ which return hashes | |||
| # with translated and untranslated attributes, respectively. Be aware that | |||
| # this plugin can create conflicts with other gems. | |||
| # | |||
| # attribute_methods | |||
| end | |||
| end | |||
| @ -0,0 +1,13 @@ | |||
| # Be sure to restart your server when you modify this file. | |||
| # Define an application-wide HTTP permissions policy. For further | |||
| # information see: https://developers.google.com/web/updates/2018/06/feature-policy | |||
| # Rails.application.config.permissions_policy do |policy| | |||
| # policy.camera :none | |||
| # policy.gyroscope :none | |||
| # policy.microphone :none | |||
| # policy.usb :none | |||
| # policy.fullscreen :self | |||
| # policy.payment :self, "https://secure.example.com" | |||
| # end | |||
| @ -0,0 +1,768 @@ | |||
| da: | |||
| project_name: Den Hirschsprungske Samling | |||
| client_name: Den Hirschsprungske Samling | |||
| domain: hirschsprung.dk | |||
| logo: den-hirschsprungske-samling | |||
| base_url: 'https://www.hirschsprung.dk' | |||
| a11y: | |||
| skip_to_content: Gå til indhold | |||
| opening_hours: | |||
| OPERATIONAL: Åbent | |||
| CLOSED_TEMPORARILY: Lukket midlertidig | |||
| closed: Lukket i dag | |||
| open_between: Åbent i dag <span class="nowrap">%{from} - %{until}</span> | |||
| aria: | |||
| play_pause: Afspil/Pause | |||
| logo: Startside for Den Hirschsprungske Samling | |||
| gdpr: | |||
| accept: Accepter | |||
| reject: Afvis | |||
| third_party: Dette indhold hostes af en tredjepart (%{site}). Ved at vise det eksterne indhold accepterer du vilkårene og betingelserne på <a target="_blank" href="https://%{site}">%{site}</a>. | |||
| show_external_content: Vis eksternt indhold | |||
| icons: | |||
| assets: image | |||
| users: person | |||
| nodes: file_copy | |||
| tags: sell | |||
| date_formats: schedule | |||
| subscribers: group | |||
| newsletters: mail | |||
| help: | |||
| markdown: '<a href="https://www.markdownguide.org/cheat-sheet" target="markdown">Markdown cheat sheet</a>' | |||
| i18n: | |||
| da: Dansk | |||
| en: Engelsk | |||
| de: Tysk | |||
| skip_to_content: Spring til indhold | |||
| exhibitions: | |||
| current: Aktuelle | |||
| future: Kommende | |||
| past: Tidligere | |||
| nohits: | |||
| title: Din søgning matchede intet | |||
| your_search: Din søgning | |||
| no_match: matchede ingen | |||
| suggestion: Forslag | |||
| suggestions: | |||
| make_sure_that_all_words_are_spelled_correctly: Sørg for at alle ord er stavet korrekt. | |||
| try_different_keywords: Prøv forskellige søgeord. | |||
| try_more_general_keywords: Prøv mere generelle søgeord. | |||
| try_fewer_keywords: Prøv færre søgeord. | |||
| ui: | |||
| 'yes': Ja | |||
| 'no': Nej | |||
| send: Send | |||
| active: Aktiv | |||
| inactive: Inaktiv | |||
| cancel: Annuller | |||
| search: Søg | |||
| are_you_sure: Er du sikker på at du vil slette dette objekt? Denne handling kan ikke fortrydes. | |||
| will_overwrite: Du er ved at foretage en handling, der vil overskrive den eksisterende transskription. Denne proces er uigenkaldelig, og alle tidligere transskriptionsdata vil blive permanent erstattet. | |||
| updated: Opdateret | |||
| untitled: Uden titel | |||
| main_menu: Hovedmenu | |||
| new: Ny | |||
| edit: Rediger | |||
| save: Gem | |||
| add: Opret | |||
| append: Tilføj | |||
| append_text: Tilføj tekst | |||
| append_asset: Tilføj fil | |||
| download: Hent | |||
| category_created: "%{category} gemt" | |||
| category_updated: "%{category} opdateret" | |||
| category_destroyed: "%{category} slettet" | |||
| delete: Slet | |||
| destroy: Slet | |||
| destroyed: Slettet | |||
| example: Eksempel | |||
| copy: Kopier | |||
| copied: Kopieret | |||
| reindex: Renindeksere | |||
| reindex_started: Reindeksering startet | |||
| tickets: Billet & Årskort | |||
| search: Søg | |||
| accept: Accepter | |||
| subscribers: | |||
| subscribe_to: Følg med i hvad der sker på museet. | |||
| send: Tilmeld nyhedsbrev | |||
| booking: | |||
| send: Send forespørgelse | |||
| utils: | |||
| search_engines: SEO | |||
| visibility: Synlighed | |||
| settings: indstillinger | |||
| danish: Dansk | |||
| english: Engelsk | |||
| transparent: Transparent | |||
| example: Eksempel | |||
| choose: Vælg | |||
| choose_image: Choose image | |||
| change_image: Change image | |||
| add: Add | |||
| out_of: out of | |||
| save: Gem | |||
| cancel: cancel | |||
| back: back | |||
| remove: Slet | |||
| address: Address | |||
| clear_cache: Clear cache | |||
| cache_cleared: Cachen is now cleared | |||
| search: Søg | |||
| updated_at: Senest opdateret | |||
| close: Close | |||
| new: Tilføj | |||
| edit: Rediger | |||
| details: Detaljer | |||
| delete: Slet | |||
| are_you_sure: Denne handling kan ikke fortrydes - Er du sikker på, at du gerne vil fortsætte? | |||
| upload: Upload | |||
| download: Download | |||
| move: Move | |||
| plus: + | |||
| up: Up | |||
| down: Down | |||
| copy: Copy | |||
| send: Send | |||
| preview: Preview | |||
| content: Content | |||
| or: or | |||
| reset: reset | |||
| read_more: Read more | |||
| behavior: Behavior | |||
| systematics: Systematik | |||
| newsletters: Nyhedsbreve | |||
| booking_requests: | |||
| date_expl: Skriv ønsket dato og tidspunkt inden for onsdag til søndag fra kl. 11:15 -15:00. Skriv gerne en alternativ dato og et alternativt tidspunkt, hvis vi ikke kan imødekomme din første prioritet. Skoler kan også få omvisning om tirsdagen. | |||
| subject_expl: Er der et særligt emne for omvisningen? Skoler kan finde vores forløb under ’Læring’ | |||
| n_expl: 'Skoleklasser: max 25. Voksengrupper: max 20' | |||
| group_expl: Skolens eller gruppens navn | |||
| name_expl: Lærer eller kontaktperson | |||
| ean_expl: P-nummer angives kun af skoler i Københavns Kommune | |||
| address_expl: Adresselinje | |||
| result: | |||
| title: Vi har modtaget din forespørgelse | |||
| msg: "Du vil snarest modtage en mail fra os med de oplysninger, vi har registeret i forbindelse med din forespørgsel på en omvisning. Du vil høre fra os, når vi har behandlet din forespørgsel." | |||
| mailers: | |||
| test_mail_queue: Test send e-mail | |||
| test_mail_sent: Test mail sent til %{email} | |||
| verified_subscription_heading: Bekræftet tilmelding | |||
| verified_subscription_title: Tilmelding bekræftet | |||
| verified_subscription_msg: "Du er nu tilmeldt vores nyhedsbrev." | |||
| unsubscribed_title: Afmelding udført | |||
| unsubscribed_msg: "Du vil modtage en mail, som bekræftelse på din afmelding" | |||
| confirm_unsubscribing_title: Bekræft venlig afmelding til vores nyhedsbrev | |||
| unsubscribe: Afmeld | |||
| booking_request: | |||
| subject: Tak for din forespørgsel | |||
| title: Tak for din forespørgsel på omvisning på Den Hirschsprungske Samling | |||
| sub_title: Bemærk at dette ikke er en bekræftelse på en omvisning. Vi besvarer din henvendelse hurtigst muligt. | |||
| verify_subscription: | |||
| msg: Tak for din interesse. For at gennemføre din tilmelding skal du blot klikke på linket i den e-mail, vi lige har sendt dig. | |||
| subject: Den Hirschsprungske Samling - Bekræft venligst din tilmelding. | |||
| verify_link: Bekræft | |||
| title: Ja tak, tilmeld mig Den Hirschsprungske Samlings nyhedsbrev | |||
| desc: Du bliver ikke tilmeldt vores nyhedsbrev, hvis ikke du bekræfter via linket nedenunder. Din e-mail adresse vil kun blive brugt til at modtage disse nyheder og vil ikke blive videregivet til tredjepart. Hvis du har modtaget denne e-mail ved en fejltagelse, skal du blot slette den. | |||
| unsubscribed: | |||
| subject: Den Hirschsprungske Samling - Bekræftelse på afmelding | |||
| title: Bekræftelse på afmelding | |||
| desc: Du er nu afmeldt Den Hirschsprungske Samlings nyhedsbrev og dit navn og emailadresse er hermed slettet. Vi håber, du kommer tilbage en anden gang. | |||
| newsletter: | |||
| unsubscribe: Afmeld nyhedsbrev | |||
| address: "Den Hirschsprungske Samling\nStockholmsgade 20\n2100 København Ø\nTlf. 35420336\ndhs@hirschsprung.dk" | |||
| not_you: "Denne kode udløber kl %{time}. Hvis det ikke var dig, der loggede ind, skal du nulstille din adgangskode." | |||
| verify_email_subject: "Your verification code is: %{token}" | |||
| newsletters: | |||
| title: Nyhedsbreve | |||
| new: Opret nyhedsbrev | |||
| list: Nyhedsbreve | |||
| created: Nyhedsbrev gemt | |||
| updated: Nyhedsbrev opdateret | |||
| destroyed: Nyhedsbrev slettet | |||
| destroy_failed: Kunde ikke slette dette nyhedsbrev | |||
| to: Til | |||
| from: Fra | |||
| delivered_to_one: Nyhedsbrev blev sendt til %{to} | |||
| send_to_one: Send | |||
| send_to_list: Send til abonnenter | |||
| test_sent: Test sendt til %{to} | |||
| lists: Abonnenter | |||
| choose_mailing_list: Vælg liste | |||
| are_you_sure_send_newsletter: Er du sikker? Nyhedsbrevet bliver sendt til ALLE abonnenter i de valgte lister. Denne handling kan ikke fortryde. | |||
| test_ok_deliver: Testen var OK. Send til valgte adresselister | |||
| newsletter_is_beeing_delivered_to_lists: Nyhedsbrevet bliver nu sendt til %{lists} | |||
| opened: Opened | |||
| clicked: Clicked | |||
| statuses: | |||
| status_draft: Udkast | |||
| status_published: Udgivet | |||
| status_archived: Arkiveret | |||
| sessions: | |||
| login: Log ind | |||
| email: E-mail | |||
| password: Password | |||
| login_failed: Logind misslykkedes | |||
| logout: Log ud | |||
| verification_code: Verifikationskode | |||
| verify_email: Bekræft | |||
| verification_failed: Verifikation mislykkedes | |||
| some: | |||
| follow: Follow | |||
| parkmuseerne: | |||
| title: Parkmuseerne | |||
| link: http://parkmuseerne.dk | |||
| facebook: | |||
| title: Facebook | |||
| link: https://www.facebook.com/hirschsprung | |||
| instagram: | |||
| title: Instagram | |||
| link: https://www.instagram.com/hirschsprungskesamling | |||
| tripadvisor: | |||
| title: Trip Advisor | |||
| link: https://www.tripadvisor.dk/Attraction_Review-g189541-d245022-Reviews- Hirschsprung_Collection_Hirschsprungske_Samling-Copenhagen_Zealand.html | |||
| views: | |||
| pagination: | |||
| first: "« First" | |||
| last: "Last »" | |||
| previous: "Forrige" | |||
| next: "Næste" | |||
| truncate: "…" | |||
| subscribers: | |||
| new: Opret abonnent | |||
| created: Abonnent gemt | |||
| updated: Abonnent opdateret | |||
| destroy: Slet abonnent | |||
| destroyed: Abonnent slettet | |||
| destroy_failed: Kunde ikke slette denne abonnent | |||
| title: Abonnenter | |||
| list: Abonnenter | |||
| all: Alle | |||
| users: | |||
| you_cant_change_the_email_on_this_user: Du kan ikke ændre e-mail for denne brugere | |||
| you_cant_change_this_on_this_user: Du kan ikke ændre dette for denne brugere | |||
| you_cant_disable_this_user: Du kan ikke af aktivere denne brugere | |||
| cant_destroy_this_user: Du kan ikke fjerne denne brugere | |||
| new: Opret brugere | |||
| created: Brugere gemt | |||
| updated: Brugere opdateret | |||
| destroy: Slet brugere | |||
| destroyed: Brugere slettet | |||
| destroy_failed: Kunde ikke slette denne brugere | |||
| title: Brugere og tilladelser | |||
| list: Bruger liste | |||
| roles: | |||
| admin: Admin | |||
| user: Gæst | |||
| assets: | |||
| new: Upload fil | |||
| created: Fil gemt | |||
| updated: Fil opdateret | |||
| destroy: Slet fil | |||
| destroyed: Fil slettet | |||
| destroy_failed: Kunde ikke slette denne fil | |||
| title: Filer | |||
| sort: | |||
| by_name: Navn | |||
| by_filename: Filenavn | |||
| by_last_modified: Senest opdateret | |||
| nodes: | |||
| sort: Sorter undersider %{parent} | |||
| labels: Fakta | |||
| project_details: Detaljer | |||
| content: Indhold | |||
| title: Sider | |||
| created: Side gemt | |||
| updated: Side opdateret | |||
| destroy: Slet side | |||
| destroyed: Side slettet | |||
| destroy_failed: Kunde ikke slette denne side | |||
| move: Flyt mappe/side til... | |||
| layout: Sideattributter | |||
| add_expire_date: Tilføj udløbsdato | |||
| remove_expire_date: Fjern | |||
| add_part: Nyt afsnit | |||
| settings: | |||
| main_menu: Hovedmenu | |||
| sub_menu: Undermenu | |||
| footer_node: Sidfod | |||
| cookie_policy: Cookie policy | |||
| cta_link: Call To Action link | |||
| opening_hours: Åbningstider | |||
| negative_menu: Hvid menu | |||
| buy_ticket: Køb billet & Årskort | |||
| newsletter: Tilmeld nyhedsbrev | |||
| langs: | |||
| da: Dansk | |||
| en: Engelsk | |||
| de: Tysk | |||
| templates: | |||
| tmpl_index: Forside | |||
| tmpl_article: Side | |||
| tmpl_lists: Lister | |||
| tmpl_list: Liste | |||
| tmpl_exhibitions: Udstillinger | |||
| tmpl_occasions: Kalender | |||
| tmpl_poster: Poster | |||
| tmpl_story: Kort historie | |||
| tmpl_text: Tekst | |||
| categories: | |||
| box: Kasse | |||
| folder: Mappe | |||
| cover: Læg | |||
| document: Side | |||
| new_categories: | |||
| box: Kasse | |||
| folder: Mappe | |||
| cover: Læg | |||
| document: Tilføj side | |||
| statuses: | |||
| status_draft: Udkast | |||
| status_published: Udgivet | |||
| status_archived: Arkiveret | |||
| icons: | |||
| box: inventory_2 | |||
| folder: folder | |||
| cover: book_2 | |||
| document: description | |||
| attachments: | |||
| alignments: | |||
| N: Nord | |||
| NE: Nordøst | |||
| E: Øst | |||
| SE: Sydøst | |||
| S: Syd | |||
| SW: Sydvest | |||
| W: Vest | |||
| NW: Nordvest | |||
| templates: | |||
| Hero: Hero | |||
| L: Stor | |||
| occasions: | |||
| future: Det sker | |||
| past: Tidligere | |||
| tiles: | |||
| title: Fliser | |||
| created: Flise gemt | |||
| updated: Flise opdateret | |||
| destroyed: Flise slettet | |||
| destroy_failed: Kunde ikke slette denne flise | |||
| templates: | |||
| tmpl_poster: Poster | |||
| tmpl_story: Kort historie | |||
| sort: | |||
| published: Udgivet | |||
| draft: Udkast | |||
| archived: Arkiveret | |||
| statuses: | |||
| status_published: Udgivet | |||
| status_draft: Udkast | |||
| status_archived: Arkiveret | |||
| activerecord: | |||
| errors: | |||
| messages: | |||
| record_invalid: 'Godkendelse gik galt: %{errors}' | |||
| restrict_dependent_destroy: | |||
| has_one: Kunne ikke slette posten fordi en afhængig %{record} findes | |||
| has_many: Kunne ikke slette posten fordi afhængige %{record} findes | |||
| models: | |||
| node: | |||
| attributes: | |||
| expires_at: | |||
| not_a_date: er ikke gyldig | |||
| after: skal være et kommende dato | |||
| models: | |||
| occasion: | |||
| zero: begivenheder | |||
| one: begivenhed | |||
| other: begivenheder | |||
| user: | |||
| zero: brugere | |||
| one: brugere | |||
| other: brugere | |||
| attachment: | |||
| zero: bilag | |||
| one: bilag | |||
| other: bilag | |||
| asset: | |||
| zero: filer | |||
| one: fil | |||
| other: filer | |||
| node: | |||
| zero: sider | |||
| one: side | |||
| other: sider | |||
| tile: | |||
| zero: fliser | |||
| one: flise | |||
| other: fliser | |||
| subscriber: | |||
| zero: abonnenter | |||
| one: abonnent | |||
| other: abonnenter | |||
| newsletter: | |||
| zero: nyhedsbreve | |||
| one: nyhedsbrev | |||
| other: nyhedsbreve | |||
| attributes: | |||
| occasion: | |||
| starts_on: Start dato | |||
| starts_at: Start tid | |||
| ends_on: Slut dato | |||
| ends_at: Slut tid | |||
| newsletter: | |||
| subject: Emne | |||
| from: Fra | |||
| to: Til | |||
| slug: Del af URL | |||
| delivered_at: Udsendt | |||
| stats: Statistik | |||
| updated_at: Senest opdateret | |||
| attachments: Bilag | |||
| subscriber: | |||
| name: Navn | |||
| email: E-mail | |||
| locale: Sprog | |||
| tags: Adresseliste | |||
| verified_at: Opt-in | |||
| tile: | |||
| title: Titel | |||
| sub_title: Undertitel | |||
| description: Beskrivelse | |||
| status: Status | |||
| template: Skabelon | |||
| bg_color: Baggrundsfarve | |||
| url: URL | |||
| header: Overskrift | |||
| excluded_locales: Ikke synlig under sprog | |||
| is_allowlist: Inverter liste til kun synlig | |||
| node: | |||
| title: Titel | |||
| page_title: Sidetitel | |||
| page_description: Meta beskrivelse | |||
| slug: Del af URL | |||
| url: URL | |||
| published_at: Udgivet fra | |||
| status: Status | |||
| template: Skabelon | |||
| href: Link til | |||
| parent_id: Forælder | |||
| expires_at: Udgivet frem til | |||
| settings: Indstillinger | |||
| tags_da: Tags | |||
| tags_en: Tags | |||
| tags_de: Tags | |||
| excluded_locales: Ikke synlig under sprog | |||
| is_allowlist: Inverter liste til kun synlig | |||
| occasions: Begivenhed | |||
| attachments: Bilag | |||
| attachment: | |||
| body: Indhold | |||
| body_da: Indhold | |||
| body_en: Indhold | |||
| body_de: Indhold | |||
| url: Link | |||
| fg_color: Tekst farve | |||
| bg_color: Baggrundsfarve | |||
| alignment: Gravitation | |||
| template: Skabelon | |||
| asset: | |||
| title: Filnavn | |||
| created_at: Skabt | |||
| updated_at: Senest opdateret | |||
| booking_request: | |||
| name: Navn | |||
| email: E-mail | |||
| phone: Tlf | |||
| group: Bestiller | |||
| n_persons: Antal deltagere | |||
| ages: Alder/klassetrin | |||
| subject: Omvisningens emne | |||
| ean: EAN | |||
| cvr: CVR-nummer | |||
| comment: Bemærkninger | |||
| primo_date: Dato og tidspunkt | |||
| secundo_date: Dato, alternativ | |||
| address: Adresse | |||
| postal_code: Postnr. | |||
| city: By | |||
| user: | |||
| enabled_at: Aktiv | |||
| role: Rolle | |||
| title: Titel | |||
| phone: Telefon | |||
| name: Navn | |||
| firstname: Fornavn | |||
| lastname: Efternavn | |||
| email: E-mail | |||
| password: Password | |||
| password_confirmation: Gentag password | |||
| date: | |||
| abbr_day_names: | |||
| - søn | |||
| - man | |||
| - tir | |||
| - ons | |||
| - tor | |||
| - fre | |||
| - lør | |||
| abbr_month_names: | |||
| - | |||
| - jan | |||
| - feb | |||
| - mar | |||
| - apr | |||
| - maj | |||
| - jun | |||
| - jul | |||
| - aug | |||
| - sep | |||
| - okt | |||
| - nov | |||
| - dec | |||
| day_names: | |||
| - søndag | |||
| - mandag | |||
| - tirsdag | |||
| - onsdag | |||
| - torsdag | |||
| - fredag | |||
| - lørdag | |||
| formats: | |||
| default: "%d.%m.%Y" | |||
| long: "%e. %B %Y" | |||
| short: "%e. %b %Y" | |||
| month_names: | |||
| - | |||
| - januar | |||
| - februar | |||
| - marts | |||
| - april | |||
| - maj | |||
| - juni | |||
| - juli | |||
| - august | |||
| - september | |||
| - oktober | |||
| - november | |||
| - december | |||
| order: | |||
| - :day | |||
| - :month | |||
| - :year | |||
| datetime: | |||
| distance_in_words: | |||
| about_x_hours: | |||
| one: cirka en time | |||
| other: cirka %{count} timer | |||
| about_x_months: | |||
| one: cirka en måned | |||
| other: cirka %{count} måneder | |||
| about_x_years: | |||
| one: cirka et år | |||
| other: cirka %{count} år | |||
| almost_x_years: | |||
| one: næsten et år | |||
| other: næsten %{count} år | |||
| half_a_minute: et halvt minut | |||
| less_than_x_minutes: | |||
| one: mindre end et minut | |||
| other: mindre end %{count} minutter | |||
| less_than_x_seconds: | |||
| one: mindre end et sekund | |||
| other: mindre end %{count} sekunder | |||
| over_x_years: | |||
| one: mere end et år | |||
| other: mere end %{count} år | |||
| x_days: | |||
| one: en dag | |||
| other: "%{count} dage" | |||
| x_minutes: | |||
| one: et minut | |||
| other: "%{count} minutter" | |||
| x_months: | |||
| one: en måned | |||
| other: "%{count} måneder" | |||
| x_years: | |||
| one: en år | |||
| other: "%{count} år" | |||
| x_seconds: | |||
| one: et sekund | |||
| other: "%{count} sekunder" | |||
| prompts: | |||
| day: Dag | |||
| hour: Time | |||
| minute: Minut | |||
| month: Måned | |||
| second: Sekund | |||
| year: År | |||
| errors: | |||
| format: "%{attribute} %{message}" | |||
| messages: | |||
| accepted: skal accepteres | |||
| blank: skal udfyldes | |||
| present: skal være tom | |||
| confirmation: stemmer ikke overens med bekræftelse | |||
| empty: må ikke udelades | |||
| equal_to: skal være %{count} | |||
| even: skal være et lige tal | |||
| exclusion: er reserveret | |||
| greater_than: skal være større end %{count} | |||
| greater_than_or_equal_to: skal være større end, eller lig med, %{count} | |||
| inclusion: er ikke på listen | |||
| invalid: er ikke gyldig | |||
| less_than: skal være mindre end %{count} | |||
| less_than_or_equal_to: skal være mindre end, eller lig med, %{count} | |||
| model_invalid: "Godkendelse gik galt: %{errors}" | |||
| not_a_number: er ikke et tal | |||
| not_an_integer: er ikke et heltal | |||
| odd: skal være et ulige tal | |||
| required: skal eksistere | |||
| taken: er allerede brugt | |||
| too_long: er for lang (højst %{count} tegn) | |||
| too_short: er for kort (mindst %{count} tegn) | |||
| wrong_length: har forkert længde (skulle være %{count} tegn) | |||
| other_than: skal være forskellig fra %{count} | |||
| url: is not a valid URL | |||
| template: | |||
| body: 'Der var problemer med følgende felter:' | |||
| header: | |||
| one: En fejl forhindrede %{model} i at blive gemt | |||
| other: "%{count} fejl forhindrede %{model} i at blive gemt" | |||
| views: | |||
| pagination: | |||
| first: "first_page" | |||
| last: "last_page" | |||
| previous: "navigate_before" | |||
| next: "navigate_next" | |||
| truncate: "…" | |||
| helpers: | |||
| select: | |||
| prompt: Vælg... | |||
| submit: | |||
| create: Opret %{model} | |||
| submit: Gem %{model} | |||
| update: Opdater %{model} | |||
| page_entries_info: | |||
| one_page: | |||
| display_entries: | |||
| zero: "Ingen %{entry_name} fundet" | |||
| one: "Viser <b>1</b> %{entry_name}" | |||
| other: "<b>%{count}</b> %{entry_name}" | |||
| more_pages: | |||
| display_entries: "<b>%{first} - %{last}</b> udaf <b>%{total}</b>" | |||
| number: | |||
| currency: | |||
| format: | |||
| delimiter: "." | |||
| format: "%u %n" | |||
| precision: 2 | |||
| separator: "," | |||
| significant: false | |||
| strip_insignificant_zeros: false | |||
| unit: DKK | |||
| format: | |||
| delimiter: "." | |||
| precision: 3 | |||
| separator: "," | |||
| significant: false | |||
| strip_insignificant_zeros: false | |||
| human: | |||
| decimal_units: | |||
| format: "%n %u" | |||
| units: | |||
| billion: Milliard | |||
| million: Million | |||
| quadrillion: Billiard | |||
| thousand: Tusind | |||
| trillion: Billion | |||
| unit: '' | |||
| format: | |||
| delimiter: '' | |||
| precision: 3 | |||
| significant: true | |||
| strip_insignificant_zeros: true | |||
| storage_units: | |||
| format: "%n %u" | |||
| units: | |||
| byte: | |||
| one: Byte | |||
| other: Bytes | |||
| gb: GB | |||
| kb: KB | |||
| mb: MB | |||
| tb: TB | |||
| percentage: | |||
| format: | |||
| delimiter: '' | |||
| format: "%n%" | |||
| precision: | |||
| format: | |||
| delimiter: '' | |||
| support: | |||
| array: | |||
| last_word_connector: " og " | |||
| two_words_connector: " og " | |||
| words_connector: ", " | |||
| time: | |||
| am: '' | |||
| formats: | |||
| default: "%e. %B %Y, %H.%M" | |||
| long: "%A d. %e. %B %Y, %H.%M" | |||
| short: "%e. %b %Y, %H.%M" | |||
| time_only: "%H.%M" | |||
| listing: ! "%e. %b %Y" | |||
| medium: ! '%e. %b %Y, %H.%M' | |||
| pm: '' | |||
| @ -0,0 +1,31 @@ | |||
| # Files in the config/locales directory are used for internationalization and | |||
| # are automatically loaded by Rails. If you want to use locales other than | |||
| # English, add the necessary files in this directory. | |||
| # | |||
| # To use the locales, use `I18n.t`: | |||
| # | |||
| # I18n.t "hello" | |||
| # | |||
| # In views, this is aliased to just `t`: | |||
| # | |||
| # <%= t("hello") %> | |||
| # | |||
| # To use a different locale, set it with `I18n.locale`: | |||
| # | |||
| # I18n.locale = :es | |||
| # | |||
| # This would use the information in config/locales/es.yml. | |||
| # | |||
| # To learn more about the API, please read the Rails Internationalization guide | |||
| # at https://guides.rubyonrails.org/i18n.html. | |||
| # | |||
| # Be aware that YAML interprets the following case-insensitive strings as | |||
| # booleans: `true`, `false`, `on`, `off`, `yes`, `no`. Therefore, these strings | |||
| # must be quoted to be interpreted as strings. For example: | |||
| # | |||
| # en: | |||
| # "yes": yup | |||
| # enabled: "ON" | |||
| en: | |||
| hello: "Hello world" | |||
| @ -0,0 +1,90 @@ | |||
| # http > https | |||
| server { | |||
| listen 80; | |||
| server_name ikea-foundation-week-2024.onc.dk; | |||
| root /home/ikea_foundation/week_2024/public; | |||
| # Lets encrypt | |||
| location ~ /.well-known { | |||
| allow all; | |||
| } | |||
| location / { | |||
| return 301 https://ikea-foundation-week-2024.onc.dk$request_uri; | |||
| } | |||
| } | |||
| # Puma | |||
| upstream puma_ikea { | |||
| server unix:///home/ikea_foundation/week_2024/tmp/pids/puma.sock fail_timeout=0; | |||
| } | |||
| # # https | |||
| # server { | |||
| # listen 443 ssl http2; | |||
| # server_name ikea-foundation-week-2024.onc.dk; | |||
| # | |||
| # # keepalive_timeout 300; | |||
| # keepalive_timeout 5; | |||
| # client_max_body_size 4G; | |||
| # | |||
| # ssl_certificate /etc/letsencrypt/live/ikea-foundation-week-2024.onc.dk/fullchain.pem; # managed by Certbot | |||
| # ssl_certificate_key /etc/letsencrypt/live/ikea-foundation-week-2024.onc.dk/privkey.pem; # managed by Certbot | |||
| # include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot | |||
| # ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot | |||
| # | |||
| # access_log /home/ikea_foundation/week_2024/log/httpd-access.log; | |||
| # error_log /home/ikea_foundation/week_2024/log/httpd-errors.log; | |||
| # | |||
| # root /home/ikea_foundation/week_2024/public; | |||
| # | |||
| # # App server | |||
| # location @puma_ikea { | |||
| # proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; | |||
| # proxy_set_header Host $http_host; | |||
| # proxy_set_header X-Forwarded_Proto $scheme; | |||
| # proxy_redirect off; | |||
| # | |||
| # proxy_pass http://puma_ikea; | |||
| # } | |||
| # | |||
| # # Serve static (compiled) assets directly if they exist (for rails production) | |||
| # location ~ ^/(assets|packs|static)/ { | |||
| # try_files $uri @puma_ikea; | |||
| # | |||
| # access_log off; | |||
| # gzip_static on; | |||
| # | |||
| # expires max; | |||
| # add_header Cache-Control public; | |||
| # | |||
| # # Some browsers still send conditional-GET requests if there's a | |||
| # # Last-Modified header or an ETag header even if they haven't | |||
| # # reached the expiry date sent in the Expires header. | |||
| # add_header Last-Modified ""; | |||
| # add_header ETag ""; | |||
| # break; | |||
| # } | |||
| # | |||
| # # location /cable { | |||
| # # proxy_pass http://puma_ikea; | |||
| # # proxy_http_version 1.1; | |||
| # # proxy_set_header Upgrade $http_upgrade; | |||
| # # proxy_set_header Connection 'upgrade'; | |||
| # # } | |||
| # | |||
| # # Send non-static file requests to the app server | |||
| # location / { | |||
| # try_files $uri @puma_ikea; | |||
| # } | |||
| # | |||
| # # You can override error pages by redirecting the requests to a file in your | |||
| # # application's public folder, if you so desire: | |||
| # error_page 500 502 503 504 /500.html; | |||
| # location = /500.html { | |||
| # root /home/ikea_foundation/week_2024/public; | |||
| # } | |||
| # } | |||
| @ -0,0 +1,35 @@ | |||
| # This configuration file will be evaluated by Puma. The top-level methods that | |||
| # are invoked here are part of Puma's configuration DSL. For more information | |||
| # about methods provided by the DSL, see https://puma.io/puma/Puma/DSL.html. | |||
| # Puma can serve each request in a thread from an internal thread pool. | |||
| # The `threads` method setting takes two numbers: a minimum and maximum. | |||
| # Any libraries that use thread pools should be configured to match | |||
| # the maximum value specified for Puma. Default is set to 5 threads for minimum | |||
| # and maximum; this matches the default thread size of Active Record. | |||
| max_threads_count = ENV.fetch("RAILS_MAX_THREADS") { 5 } | |||
| min_threads_count = ENV.fetch("RAILS_MIN_THREADS") { max_threads_count } | |||
| threads min_threads_count, max_threads_count | |||
| # Specifies that the worker count should equal the number of processors in production. | |||
| if ENV["RAILS_ENV"] == "production" | |||
| require "concurrent-ruby" | |||
| worker_count = Integer(ENV.fetch("WEB_CONCURRENCY") { Concurrent.physical_processor_count }) | |||
| workers worker_count if worker_count > 1 | |||
| end | |||
| # Specifies the `worker_timeout` threshold that Puma will use to wait before | |||
| # terminating a worker in development environments. | |||
| worker_timeout 3600 if ENV.fetch("RAILS_ENV", "development") == "development" | |||
| # Specifies the `port` that Puma will listen on to receive requests; default is 3000. | |||
| port ENV.fetch("PORT") { 3000 } | |||
| # Specifies the `environment` that Puma will run in. | |||
| environment ENV.fetch("RAILS_ENV") { "development" } | |||
| # Specifies the `pidfile` that Puma will use. | |||
| pidfile ENV.fetch("PIDFILE") { "tmp/pids/server.pid" } | |||
| # Allow puma to be restarted by `bin/rails restart` command. | |||
| plugin :tmp_restart | |||
| @ -0,0 +1,43 @@ | |||
| # Puma can serve each request in a thread from an internal thread pool. | |||
| # The `threads` method setting takes two numbers: a minimum and maximum. | |||
| # Any libraries that use thread pools should be configured to match | |||
| # the maximum value specified for Puma. Default is set to 5 threads for minimum | |||
| # and maximum; this matches the default thread size of Active Record. | |||
| # | |||
| max_threads_count = ENV.fetch("RAILS_MAX_THREADS") { 5 } | |||
| min_threads_count = ENV.fetch("RAILS_MIN_THREADS") { max_threads_count } | |||
| threads min_threads_count, max_threads_count | |||
| # Specifies the `worker_timeout` threshold that Puma will use to wait before | |||
| # terminating a worker in development environments. | |||
| # | |||
| worker_timeout 3600 if ENV.fetch("RAILS_ENV", "development") == "development" | |||
| # Specifies the `port` that Puma will listen on to receive requests; default is 3000. | |||
| # | |||
| port ENV.fetch("PORT") { 3000 } | |||
| # Specifies the `environment` that Puma will run in. | |||
| # | |||
| environment ENV.fetch("RAILS_ENV") { "development" } | |||
| # Specifies the `pidfile` that Puma will use. | |||
| pidfile ENV.fetch("PIDFILE") { "tmp/pids/server.pid" } | |||
| # Specifies the number of `workers` to boot in clustered mode. | |||
| # Workers are forked web server processes. If using threads and workers together | |||
| # the concurrency of the application would be max `threads` * `workers`. | |||
| # Workers do not work on JRuby or Windows (both of which do not support | |||
| # processes). | |||
| # | |||
| # workers ENV.fetch("WEB_CONCURRENCY") { 2 } | |||
| # Use the `preload_app!` method when specifying a `workers` number. | |||
| # This directive tells Puma to first boot the application and load code | |||
| # before forking the application. This takes advantage of Copy On Write | |||
| # process behavior so workers use less memory. | |||
| # | |||
| # preload_app! | |||
| # Allow puma to be restarted by `bin/rails restart` command. | |||
| plugin :tmp_restart | |||
| @ -0,0 +1,10 @@ | |||
| Rails.application.routes.draw do | |||
| # Define your application routes per the DSL in https://guides.rubyonrails.org/routing.html | |||
| # Reveal health status on /up that returns 200 if the app boots with no exceptions, otherwise 500. | |||
| # Can be used by load balancers and uptime monitors to verify that the app is live. | |||
| get "up" => "rails/health#show", as: :rails_health_check | |||
| # Defines the root path route ("/") | |||
| # root "posts#index" | |||
| end | |||
| @ -0,0 +1,34 @@ | |||
| test: | |||
| service: Disk | |||
| root: <%= Rails.root.join("tmp/storage") %> | |||
| local: | |||
| service: Disk | |||
| root: <%= Rails.root.join("storage") %> | |||
| # Use bin/rails credentials:edit to set the AWS secrets (as aws:access_key_id|secret_access_key) | |||
| # amazon: | |||
| # service: S3 | |||
| # access_key_id: <%= Rails.application.credentials.dig(:aws, :access_key_id) %> | |||
| # secret_access_key: <%= Rails.application.credentials.dig(:aws, :secret_access_key) %> | |||
| # region: us-east-1 | |||
| # bucket: your_own_bucket-<%= Rails.env %> | |||
| # Remember not to checkin your GCS keyfile to a repository | |||
| # google: | |||
| # service: GCS | |||
| # project: your_project | |||
| # credentials: <%= Rails.root.join("path/to/gcs.keyfile") %> | |||
| # bucket: your_own_bucket-<%= Rails.env %> | |||
| # Use bin/rails credentials:edit to set the Azure Storage secret (as azure_storage:storage_access_key) | |||
| # microsoft: | |||
| # service: AzureStorage | |||
| # storage_account_name: your_account_name | |||
| # storage_access_key: <%= Rails.application.credentials.dig(:azure_storage, :storage_access_key) %> | |||
| # container: your_container_name-<%= Rails.env %> | |||
| # mirror: | |||
| # service: Mirror | |||
| # primary: local | |||
| # mirrors: [ amazon, google, microsoft ] | |||
| @ -0,0 +1,9 @@ | |||
| # This file should ensure the existence of records required to run the application in every environment (production, | |||
| # development, test). The code here should be idempotent so that it can be executed at any point in every environment. | |||
| # The data can then be loaded with the bin/rails db:seed command (or created alongside the database with db:setup). | |||
| # | |||
| # Example: | |||
| # | |||
| # ["Action", "Comedy", "Drama", "Horror"].each do |genre_name| | |||
| # MovieGenre.find_or_create_by!(name: genre_name) | |||
| # end | |||
| @ -0,0 +1,67 @@ | |||
| <!DOCTYPE html> | |||
| <html> | |||
| <head> | |||
| <title>The page you were looking for doesn't exist (404)</title> | |||
| <meta name="viewport" content="width=device-width,initial-scale=1"> | |||
| <style> | |||
| .rails-default-error-page { | |||
| background-color: #EFEFEF; | |||
| color: #2E2F30; | |||
| text-align: center; | |||
| font-family: arial, sans-serif; | |||
| margin: 0; | |||
| } | |||
| .rails-default-error-page div.dialog { | |||
| width: 95%; | |||
| max-width: 33em; | |||
| margin: 4em auto 0; | |||
| } | |||
| .rails-default-error-page div.dialog > div { | |||
| border: 1px solid #CCC; | |||
| border-right-color: #999; | |||
| border-left-color: #999; | |||
| border-bottom-color: #BBB; | |||
| border-top: #B00100 solid 4px; | |||
| border-top-left-radius: 9px; | |||
| border-top-right-radius: 9px; | |||
| background-color: white; | |||
| padding: 7px 12% 0; | |||
| box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17); | |||
| } | |||
| .rails-default-error-page h1 { | |||
| font-size: 100%; | |||
| color: #730E15; | |||
| line-height: 1.5em; | |||
| } | |||
| .rails-default-error-page div.dialog > p { | |||
| margin: 0 0 1em; | |||
| padding: 1em; | |||
| background-color: #F7F7F7; | |||
| border: 1px solid #CCC; | |||
| border-right-color: #999; | |||
| border-left-color: #999; | |||
| border-bottom-color: #999; | |||
| border-bottom-left-radius: 4px; | |||
| border-bottom-right-radius: 4px; | |||
| border-top-color: #DADADA; | |||
| color: #666; | |||
| box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17); | |||
| } | |||
| </style> | |||
| </head> | |||
| <body class="rails-default-error-page"> | |||
| <!-- This file lives in public/404.html --> | |||
| <div class="dialog"> | |||
| <div> | |||
| <h1>The page you were looking for doesn't exist.</h1> | |||
| <p>You may have mistyped the address or the page may have moved.</p> | |||
| </div> | |||
| <p>If you are the application owner check the logs for more information.</p> | |||
| </div> | |||
| </body> | |||
| </html> | |||
| @ -0,0 +1,67 @@ | |||
| <!DOCTYPE html> | |||
| <html> | |||
| <head> | |||
| <title>The change you wanted was rejected (422)</title> | |||
| <meta name="viewport" content="width=device-width,initial-scale=1"> | |||
| <style> | |||
| .rails-default-error-page { | |||
| background-color: #EFEFEF; | |||
| color: #2E2F30; | |||
| text-align: center; | |||
| font-family: arial, sans-serif; | |||
| margin: 0; | |||
| } | |||
| .rails-default-error-page div.dialog { | |||
| width: 95%; | |||
| max-width: 33em; | |||
| margin: 4em auto 0; | |||
| } | |||
| .rails-default-error-page div.dialog > div { | |||
| border: 1px solid #CCC; | |||
| border-right-color: #999; | |||
| border-left-color: #999; | |||
| border-bottom-color: #BBB; | |||
| border-top: #B00100 solid 4px; | |||
| border-top-left-radius: 9px; | |||
| border-top-right-radius: 9px; | |||
| background-color: white; | |||
| padding: 7px 12% 0; | |||
| box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17); | |||
| } | |||
| .rails-default-error-page h1 { | |||
| font-size: 100%; | |||
| color: #730E15; | |||
| line-height: 1.5em; | |||
| } | |||
| .rails-default-error-page div.dialog > p { | |||
| margin: 0 0 1em; | |||
| padding: 1em; | |||
| background-color: #F7F7F7; | |||
| border: 1px solid #CCC; | |||
| border-right-color: #999; | |||
| border-left-color: #999; | |||
| border-bottom-color: #999; | |||
| border-bottom-left-radius: 4px; | |||
| border-bottom-right-radius: 4px; | |||
| border-top-color: #DADADA; | |||
| color: #666; | |||
| box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17); | |||
| } | |||
| </style> | |||
| </head> | |||
| <body class="rails-default-error-page"> | |||
| <!-- This file lives in public/422.html --> | |||
| <div class="dialog"> | |||
| <div> | |||
| <h1>The change you wanted was rejected.</h1> | |||
| <p>Maybe you tried to change something you didn't have access to.</p> | |||
| </div> | |||
| <p>If you are the application owner check the logs for more information.</p> | |||
| </div> | |||
| </body> | |||
| </html> | |||
| @ -0,0 +1,66 @@ | |||
| <!DOCTYPE html> | |||
| <html> | |||
| <head> | |||
| <title>We're sorry, but something went wrong (500)</title> | |||
| <meta name="viewport" content="width=device-width,initial-scale=1"> | |||
| <style> | |||
| .rails-default-error-page { | |||
| background-color: #EFEFEF; | |||
| color: #2E2F30; | |||
| text-align: center; | |||
| font-family: arial, sans-serif; | |||
| margin: 0; | |||
| } | |||
| .rails-default-error-page div.dialog { | |||
| width: 95%; | |||
| max-width: 33em; | |||
| margin: 4em auto 0; | |||
| } | |||
| .rails-default-error-page div.dialog > div { | |||
| border: 1px solid #CCC; | |||
| border-right-color: #999; | |||
| border-left-color: #999; | |||
| border-bottom-color: #BBB; | |||
| border-top: #B00100 solid 4px; | |||
| border-top-left-radius: 9px; | |||
| border-top-right-radius: 9px; | |||
| background-color: white; | |||
| padding: 7px 12% 0; | |||
| box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17); | |||
| } | |||
| .rails-default-error-page h1 { | |||
| font-size: 100%; | |||
| color: #730E15; | |||
| line-height: 1.5em; | |||
| } | |||
| .rails-default-error-page div.dialog > p { | |||
| margin: 0 0 1em; | |||
| padding: 1em; | |||
| background-color: #F7F7F7; | |||
| border: 1px solid #CCC; | |||
| border-right-color: #999; | |||
| border-left-color: #999; | |||
| border-bottom-color: #999; | |||
| border-bottom-left-radius: 4px; | |||
| border-bottom-right-radius: 4px; | |||
| border-top-color: #DADADA; | |||
| color: #666; | |||
| box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17); | |||
| } | |||
| </style> | |||
| </head> | |||
| <body class="rails-default-error-page"> | |||
| <!-- This file lives in public/500.html --> | |||
| <div class="dialog"> | |||
| <div> | |||
| <h1>We're sorry, but something went wrong.</h1> | |||
| </div> | |||
| <p>If you are the application owner check the logs for more information.</p> | |||
| </div> | |||
| </body> | |||
| </html> | |||
| @ -0,0 +1 @@ | |||
| # See https://www.robotstxt.org/robotstxt.html for documentation on how to use the robots.txt file | |||
| @ -0,0 +1,26 @@ | |||
| #!/bin/bash | |||
| RAILS_ENV=production bundle exec rake assets:precompile | |||
| # Get the current directory name | |||
| current_dir=$(basename "$(pwd)") | |||
| # Get the list of process IDs matching the criteria | |||
| process_ids=$(ps -e -o pid,cmd | grep -E "puma|sidekiq" | grep "[ /]${current_dir}[ /]" | awk '{print $1}') | |||
| cmds=$(ps -e -o pid,cmd | grep -E "puma|sidekiq" | grep "[ /]${current_dir}[ /]" | awk '{print $0}') | |||
| # Check if any processes match the criteria | |||
| if [ -n "$process_ids" ]; then | |||
| echo "Restarting $current_dir" | |||
| echo "$cmds" | |||
| # echo "Processes to be killed:" | |||
| # echo "$process_ids" | |||
| # Send SIGTERM signal to each matching process | |||
| for pid in $process_ids; do | |||
| echo "Killing process $pid" | |||
| kill -TERM "$pid" | |||
| done | |||
| else | |||
| echo "No matching processes found." | |||
| fi | |||
| @ -0,0 +1,5 @@ | |||
| require "test_helper" | |||
| class ApplicationSystemTestCase < ActionDispatch::SystemTestCase | |||
| driven_by :selenium, using: :chrome, screen_size: [1400, 1400] | |||
| end | |||
| @ -0,0 +1,15 @@ | |||
| ENV["RAILS_ENV"] ||= "test" | |||
| require_relative "../config/environment" | |||
| require "rails/test_help" | |||
| module ActiveSupport | |||
| class TestCase | |||
| # Run tests in parallel with specified workers | |||
| parallelize(workers: :number_of_processors) | |||
| # Setup all fixtures in test/fixtures/*.yml for all tests in alphabetical order. | |||
| fixtures :all | |||
| # Add more helper methods to be used by all tests here... | |||
| end | |||
| end | |||