diff --git a/.tool-versions b/.tool-versions new file mode 100644 index 0000000..33a8789 --- /dev/null +++ b/.tool-versions @@ -0,0 +1 @@ +ruby 2.7.7 diff --git a/Gemfile.lock b/Gemfile.lock index 6a38748..fc57472 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,36 +1,44 @@ GEM remote: https://rubygems.org/ specs: - addressable (2.5.2) - public_suffix (>= 2.0.2, < 4.0) - backports (3.11.0) + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + base64 (0.2.0) bond (0.5.1) - capybara (2.17.0) + capybara (3.39.2) addressable + matrix mini_mime (>= 0.1.3) - nokogiri (>= 1.3.3) - rack (>= 1.0.0) - rack-test (>= 0.5.4) - xpath (>= 2.0, < 4.0) - coderay (1.1.2) - diff-lcs (1.3) - method_source (0.9.0) - mini_mime (1.0.0) - mini_portile2 (2.3.0) - multi_json (1.13.0) - mustermann (1.0.1) - nokogiri (1.8.1) - mini_portile2 (~> 2.3.0) - pry (0.11.3) - coderay (~> 1.1.0) - method_source (~> 0.9.0) - public_suffix (3.0.1) - rack (2.0.3) - rack-protection (2.0.0) - rack - rack-test (0.8.2) - rack (>= 1.0, < 3) - require_all (1.5.0) + nokogiri (~> 1.8) + rack (>= 1.6.0) + rack-test (>= 0.6.3) + regexp_parser (>= 1.5, < 3.0) + xpath (~> 3.2) + coderay (1.1.3) + diff-lcs (1.5.1) + matrix (0.4.2) + method_source (1.1.0) + mini_mime (1.1.5) + mini_portile2 (2.8.7) + multi_json (1.15.0) + mustermann (3.0.1) + ruby2_keywords (~> 0.0.1) + nokogiri (1.15.6) + mini_portile2 (~> 2.8.2) + racc (~> 1.4) + pry (0.14.2) + coderay (~> 1.1) + method_source (~> 1.0) + public_suffix (5.1.1) + racc (1.8.1) + rack (2.2.9) + rack-protection (3.2.0) + base64 (>= 0.1.0) + rack (~> 2.2, >= 2.2.4) + rack-test (2.1.0) + rack (>= 1.3) + regexp_parser (2.9.2) + require_all (3.0.0) ripl (0.7.1) bond (~> 0.5.1) ripl-multi_line (0.3.1) @@ -39,42 +47,42 @@ GEM rack (>= 1.0) rack-test (>= 0.5) ripl (>= 0.3.5) - rspec (3.7.0) - rspec-core (~> 3.7.0) - rspec-expectations (~> 3.7.0) - rspec-mocks (~> 3.7.0) - rspec-core (3.7.1) - rspec-support (~> 3.7.0) - rspec-expectations (3.7.0) + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-core (3.13.0) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.1) diff-lcs (>= 1.2.0, < 2.0) - rspec-support (~> 3.7.0) - rspec-mocks (3.7.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) diff-lcs (>= 1.2.0, < 2.0) - rspec-support (~> 3.7.0) - rspec-support (3.7.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + ruby2_keywords (0.0.5) shotgun (0.9.2) rack (>= 1.0) - sinatra (2.0.0) - mustermann (~> 1.0) - rack (~> 2.0) - rack-protection (= 2.0.0) + sinatra (3.2.0) + mustermann (~> 3.0) + rack (~> 2.2, >= 2.2.4) + rack-protection (= 3.2.0) + tilt (~> 2.0) + sinatra-contrib (3.2.0) + multi_json (>= 0.0.2) + mustermann (~> 3.0) + rack-protection (= 3.2.0) + sinatra (= 3.2.0) tilt (~> 2.0) - sinatra-contrib (2.0.0) - backports (>= 2.0) - multi_json - mustermann (~> 1.0) - rack-protection (= 2.0.0) - sinatra (= 2.0.0) - tilt (>= 1.3, < 3) sinatra-reloader (1.0) sinatra-contrib - tilt (2.0.8) + tilt (2.4.0) tux (0.3.0) ripl (>= 0.3.5) ripl-multi_line (>= 0.2.4) ripl-rack (>= 0.2.0) sinatra (>= 1.2.1) - xpath (3.0.0) + xpath (3.2.0) nokogiri (~> 1.8) PLATFORMS @@ -92,4 +100,4 @@ DEPENDENCIES tux BUNDLED WITH - 1.16.0 + 2.1.4 diff --git a/app.rb b/app.rb index 585554a..74b3665 100644 --- a/app.rb +++ b/app.rb @@ -1,9 +1,27 @@ require './environment' +require "Pry" module FormsLab class App < Sinatra::Base - # code other routes/actions here + get "/" do + erb :root + end + get "/new" do + erb :'pirates/new' + end + + post "/pirates" do + @pirate = Pirate.new(params["pirate"]) + + params[:pirate][:ships].each do |details| + Ship.new(details) + end + + @ships = Ship.all + + erb :"pirates/show" + end end end diff --git a/app/models/pirate.rb b/app/models/pirate.rb index 80a578b..e635f75 100644 --- a/app/models/pirate.rb +++ b/app/models/pirate.rb @@ -1,2 +1,17 @@ class Pirate -end \ No newline at end of file + attr_accessor :name, :weight, :height + + @@pirates = [] + + def initialize(pirate) + @name = pirate[:name] + @weight = pirate[:weight] + @height = pirate[:height] + + @@pirates << self + end + + def self.all + @@pirates + end +end diff --git a/app/models/ship.rb b/app/models/ship.rb index 09d35d6..1241a40 100644 --- a/app/models/ship.rb +++ b/app/models/ship.rb @@ -1,2 +1,20 @@ class Ship -end \ No newline at end of file + attr_accessor :name, :type, :booty + + @@ships = [] + + def initialize(ship) + @name = ship[:name] + @type = ship[:type] + @booty = ship[:booty] + @@ships << self + end + + def self.clear + @@ships.clear + end + + def self.all + @@ships + end +end diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index 28c210f..d749f6b 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -6,11 +6,10 @@ RSpec.configure do |config| config.include Capybara::DSL config.include Rack::Test::Methods - config.order = 'default' end def app Rack::Builder.parse_file('config.ru').first end -Capybara.app = app \ No newline at end of file +Capybara.app = app diff --git a/views/pirates/new.erb b/views/pirates/new.erb index f407a19..9bb6feb 100644 --- a/views/pirates/new.erb +++ b/views/pirates/new.erb @@ -1 +1,15 @@ -

Make your form here

+

Create New Pirate

+
+ Pirate Name: + Pirate Weight: + Pirate Height: +

Ship 1

+ Ship Name: + Ship Type: + Ship Booty: +

Ship 2

+ Ship Name: + Ship Type: + Ship Booty: + +
diff --git a/views/pirates/show.erb b/views/pirates/show.erb index f7832d2..d13c294 100644 --- a/views/pirates/show.erb +++ b/views/pirates/show.erb @@ -1,7 +1,14 @@

Display your Pirate here

- +

Pirate Name: <%= @pirate.name %>

+

Pirate Weight: <%= @pirate.weight %>

+

Pirate Height: <%= @pirate.height %>

Display your first ship here

- +

Ship Name: <%= @ships[0].name %>

+

Ship Type: <%= @ships[0].type %>

+

Ship Booty: <%= @ships[0].booty %>

Display your second ship here

+

Ship Name: <%= @ships[1].name %>

+

Ship Type: <%= @ships[1].type %>

+

Ship Booty: <%= @ships[1].booty %>