From 53d1cd3a301534b189e51d95003718a79419ba40 Mon Sep 17 00:00:00 2001 From: Michael Simmons Date: Mon, 2 Jan 2023 18:03:15 -0600 Subject: [PATCH 1/2] setup database --- Gemfile | 4 + Gemfile.lock | 32 ++ Rakefile | 18 ++ config/application.rb | 18 ++ config/database.yml | 3 + db/cruises.db | Bin 0 -> 65536 bytes db/cruises.json | 285 ++++++++++++++++++ .../20230101232116_create_cruiselines.rb | 13 + db/migrate/20230101232336_create_ships.rb | 14 + db/migrate/20230102152439_create_cruises.rb | 18 ++ .../20230102163811_create_cruise_events.rb | 16 + db/migrate/20230102163814_create_ports.rb | 13 + db/schema.rb | 63 ++++ lib/cruise_importer.rb | 25 ++ models/cruise.rb | 5 + models/cruise_event.rb | 5 + models/cruiseline.rb | 4 + models/port.rb | 5 + models/ship.rb | 4 + 19 files changed, 545 insertions(+) create mode 100644 Gemfile create mode 100644 Gemfile.lock create mode 100644 Rakefile create mode 100644 config/application.rb create mode 100644 config/database.yml create mode 100644 db/cruises.db create mode 100644 db/cruises.json create mode 100644 db/migrate/20230101232116_create_cruiselines.rb create mode 100644 db/migrate/20230101232336_create_ships.rb create mode 100644 db/migrate/20230102152439_create_cruises.rb create mode 100644 db/migrate/20230102163811_create_cruise_events.rb create mode 100644 db/migrate/20230102163814_create_ports.rb create mode 100644 db/schema.rb create mode 100644 lib/cruise_importer.rb create mode 100644 models/cruise.rb create mode 100644 models/cruise_event.rb create mode 100644 models/cruiseline.rb create mode 100644 models/port.rb create mode 100644 models/ship.rb diff --git a/Gemfile b/Gemfile new file mode 100644 index 0000000..548f73b --- /dev/null +++ b/Gemfile @@ -0,0 +1,4 @@ +source 'https://rubygems.org' + +gem 'activerecord', require: "active_record" +gem 'sqlite3' diff --git a/Gemfile.lock b/Gemfile.lock new file mode 100644 index 0000000..449dd15 --- /dev/null +++ b/Gemfile.lock @@ -0,0 +1,32 @@ +GEM + remote: https://rubygems.org/ + specs: + activemodel (7.0.4) + activesupport (= 7.0.4) + activerecord (7.0.4) + activemodel (= 7.0.4) + activesupport (= 7.0.4) + activesupport (7.0.4) + concurrent-ruby (~> 1.0, >= 1.0.2) + i18n (>= 1.6, < 2) + minitest (>= 5.1) + tzinfo (~> 2.0) + concurrent-ruby (1.1.10) + i18n (1.12.0) + concurrent-ruby (~> 1.0) + mini_portile2 (2.8.1) + minitest (5.17.0) + sqlite3 (1.5.4) + mini_portile2 (~> 2.8.0) + tzinfo (2.0.5) + concurrent-ruby (~> 1.0) + +PLATFORMS + x86_64-linux + +DEPENDENCIES + activerecord + sqlite3 + +BUNDLED WITH + 2.4.1 diff --git a/Rakefile b/Rakefile new file mode 100644 index 0000000..9e048fe --- /dev/null +++ b/Rakefile @@ -0,0 +1,18 @@ +require "bundler/setup" + +load "active_record/railties/databases.rake" + +task :environment do + require "./config/application" +end + +task :console => :environment do + require "irb" + + ARGV.clear + IRB.start +end + +task :import => :environment do + CruiseImporter.new.import +end diff --git a/config/application.rb b/config/application.rb new file mode 100644 index 0000000..2597ab8 --- /dev/null +++ b/config/application.rb @@ -0,0 +1,18 @@ +RAKE_PATH = File.expand_path(".") +RAKE_ENV = ENV.fetch("RAKE_ENV", "development") + +Bundler.require :default, RAKE_ENV + +# Configuration for ActiveRecord rake tasks +ActiveRecord::Tasks::DatabaseTasks.root = RAKE_PATH +ActiveRecord::Tasks::DatabaseTasks.env = RAKE_ENV +ActiveRecord::Tasks::DatabaseTasks.db_dir = "db" +ActiveRecord::Tasks::DatabaseTasks.migrations_paths = ["db/migrate"] +ActiveRecord::Tasks::DatabaseTasks.seed_loader = nil + +# Set up ActiveRecord database connection +ActiveRecord::Base.configurations = YAML.load_file("config/database.yml") +ActiveRecord::Base.establish_connection RAKE_ENV.to_sym + +# Load all of our libs and models +Dir[File.join(__dir__, '..', '{lib,models}', '*.rb')].each { |file| require file } diff --git a/config/database.yml b/config/database.yml new file mode 100644 index 0000000..6359bf2 --- /dev/null +++ b/config/database.yml @@ -0,0 +1,3 @@ +development: + adapter: sqlite3 + database: ./db/cruises.db diff --git a/db/cruises.db b/db/cruises.db new file mode 100644 index 0000000000000000000000000000000000000000..50c3ebb55f4d1e7e5f79d1769cd285c77f9372ab GIT binary patch literal 65536 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 rFA0|qgqo|eB0W(qU!^DWqTlpy2W=l3b= Date: Tue, 3 Jan 2023 14:53:56 -0600 Subject: [PATCH 2/2] add dockerfile --- .dockerignore | 1 + Dockerfile | 25 +++++++++++++++++++++++++ 2 files changed, 26 insertions(+) create mode 100644 .dockerignore create mode 100644 Dockerfile diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..f3b6411 --- /dev/null +++ b/.dockerignore @@ -0,0 +1 @@ +**/.git diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..c05cf05 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,25 @@ +FROM ruby:3.2.0-slim AS base + +RUN apt-get update && \ + apt-get install -y \ + build-essential \ + pkg-config && \ + rm -rf /var/lib/apt/lists/* + +RUN groupadd --gid 999 cruises && \ + useradd --system --create-home --uid 999 --gid cruises cruises + +WORKDIR /app +RUN chown cruises:cruises . + +COPY Gemfile* ./ + +RUN bundle install + +FROM base + +USER cruises + +COPY --chown=cruises:cruises . . + +CMD rake console