-
-
Save mlg-/e9d8b9a93306d60d2983 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
➜ ghost_tours git:(master) rake db:create | |
ghost_tours_development already exists | |
ghost_tours_test already exists | |
➜ ghost_tours git:(master) rake db:create_migration NAME=create_actors | |
db/migrate/20150910202035_create_actors.rb | |
➜ ghost_tours git:(master) ✗ rake db:migrate | |
== 20150910202035 CreateActors: migrating ===================================== | |
-- create_table(:actors) | |
rake aborted! | |
StandardError: An error has occurred, this and all later migrations canceled: | |
PG::DuplicateTable: ERROR: relation "actors" already exists | |
: CREATE TABLE "actors" ("id" serial primary key, "email" character varying NOT NULL, "phone_number" character varying NOT NULL, "first_name" character varying, "last_name" character varying) /Users/mlg/.gem/ruby/2.0.0/gems/activerecord-4.2.4/lib/active_record/connection_adapters/postgresql/database_statements.rb:155:in `async_exec' | |
/Users/mlg/.gem/ruby/2.0.0/gems/activerecord-4.2.4/lib/active_record/connection_adapters/postgresql/database_statements.rb:155:in `block in execute' | |
/Users/mlg/.gem/ruby/2.0.0/gems/activerecord-4.2.4/lib/active_record/connection_adapters/abstract_adapter.rb:473:in `block in log' | |
/Users/mlg/.gem/ruby/2.0.0/gems/activesupport-4.2.4/lib/active_support/notifications/instrumenter.rb:20:in `instrument' | |
/Users/mlg/.gem/ruby/2.0.0/gems/activerecord-4.2.4/lib/active_record/connection_adapters/abstract_adapter.rb:467:in `log' | |
/Users/mlg/.gem/ruby/2.0.0/gems/activerecord-4.2.4/lib/active_record/connection_adapters/postgresql/database_statements.rb:154:in `execute' | |
/Users/mlg/.gem/ruby/2.0.0/gems/activerecord-4.2.4/lib/active_record/connection_adapters/abstract/schema_statements.rb:208:in `create_table' | |
/Users/mlg/.gem/ruby/2.0.0/gems/activerecord-4.2.4/lib/active_record/migration.rb:662:in `block in method_missing' | |
/Users/mlg/.gem/ruby/2.0.0/gems/activerecord-4.2.4/lib/active_record/migration.rb:631:in `block in say_with_time' | |
/Users/mlg/.gem/ruby/2.0.0/gems/activerecord-4.2.4/lib/active_record/migration.rb:631:in `say_with_time' | |
/Users/mlg/.gem/ruby/2.0.0/gems/activerecord-4.2.4/lib/active_record/migration.rb:651:in `method_missing' | |
/Users/mlg/cf/ghost_tours/db/migrate/20150910202035_create_actors.rb:3:in `change' | |
/Users/mlg/.gem/ruby/2.0.0/gems/activerecord-4.2.4/lib/active_record/migration.rb:605:in `exec_migration' | |
/Users/mlg/.gem/ruby/2.0.0/gems/activerecord-4.2.4/lib/active_record/migration.rb:589:in `block (2 levels) in migrate' | |
/Users/mlg/.gem/ruby/2.0.0/gems/activerecord-4.2.4/lib/active_record/migration.rb:588:in `block in migrate' | |
/Users/mlg/.gem/ruby/2.0.0/gems/activerecord-4.2.4/lib/active_record/connection_adapters/abstract/connection_pool.rb:292:in `with_connection' | |
/Users/mlg/.gem/ruby/2.0.0/gems/activerecord-4.2.4/lib/active_record/migration.rb:587:in `migrate' | |
/Users/mlg/.gem/ruby/2.0.0/gems/activerecord-4.2.4/lib/active_record/migration.rb:765:in `migrate' | |
/Users/mlg/.gem/ruby/2.0.0/gems/activerecord-4.2.4/lib/active_record/migration.rb:995:in `block in execute_migration_in_transaction' | |
/Users/mlg/.gem/ruby/2.0.0/gems/activerecord-4.2.4/lib/active_record/migration.rb:1041:in `block in ddl_transaction' | |
/Users/mlg/.gem/ruby/2.0.0/gems/activerecord-4.2.4/lib/active_record/connection_adapters/abstract/database_statements.rb:213:in `block in transaction' | |
/Users/mlg/.gem/ruby/2.0.0/gems/activerecord-4.2.4/lib/active_record/connection_adapters/abstract/transaction.rb:184:in `within_new_transaction' | |
/Users/mlg/.gem/ruby/2.0.0/gems/activerecord-4.2.4/lib/active_record/connection_adapters/abstract/database_statements.rb:213:in `transaction' | |
/Users/mlg/.gem/ruby/2.0.0/gems/activerecord-4.2.4/lib/active_record/transactions.rb:220:in `transaction' | |
/Users/mlg/.gem/ruby/2.0.0/gems/activerecord-4.2.4/lib/active_record/migration.rb:1041:in `ddl_transaction' | |
/Users/mlg/.gem/ruby/2.0.0/gems/activerecord-4.2.4/lib/active_record/migration.rb:994:in `execute_migration_in_transaction' | |
/Users/mlg/.gem/ruby/2.0.0/gems/activerecord-4.2.4/lib/active_record/migration.rb:956:in `block in migrate' | |
/Users/mlg/.gem/ruby/2.0.0/gems/activerecord-4.2.4/lib/active_record/migration.rb:952:in `each' | |
/Users/mlg/.gem/ruby/2.0.0/gems/activerecord-4.2.4/lib/active_record/migration.rb:952:in `migrate' | |
/Users/mlg/.gem/ruby/2.0.0/gems/activerecord-4.2.4/lib/active_record/migration.rb:820:in `up' | |
/Users/mlg/.gem/ruby/2.0.0/gems/activerecord-4.2.4/lib/active_record/migration.rb:798:in `migrate' | |
/Users/mlg/.gem/ruby/2.0.0/gems/activerecord-4.2.4/lib/active_record/tasks/database_tasks.rb:137:in `migrate' | |
/Users/mlg/.gem/ruby/2.0.0/gems/activerecord-4.2.4/lib/active_record/railties/databases.rake:44:in `block (2 levels) in <top (required)>' | |
/Users/mlg/.gem/ruby/2.0.0/bin/ruby_executable_hooks:15:in `eval' | |
/Users/mlg/.gem/ruby/2.0.0/bin/ruby_executable_hooks:15:in `<main>' | |
Tasks: TOP => db:migrate | |
(See full trace by running task with --trace) | |
➜ ghost_tours git:(master) ✗ rake db:drop | |
➜ ghost_tours git:(master) ✗ rake db:create | |
➜ ghost_tours git:(master) ✗ rake db:migrate | |
== 20150910202035 CreateActors: migrating ===================================== | |
-- create_table(:actors) | |
-> 0.0078s | |
== 20150910202035 CreateActors: migrated (0.0080s) ============================ | |
➜ ghost_tours git:(master) ✗ rake db:create_migration NAME=create_tours | |
db/migrate/20150910202535_create_tours.rb | |
➜ ghost_tours git:(master) ✗ rake db:migrate | |
== 20150910202535 CreateTours: migrating ====================================== | |
-- create_table(:tours) | |
-> 0.0074s | |
== 20150910202535 CreateTours: migrated (0.0076s) ============================= | |
➜ ghost_tours git:(master) ✗ rake db:rollback | |
== 20150910202535 CreateTours: reverting ====================================== | |
-- drop_table(:tours) | |
-> 0.0071s | |
== 20150910202535 CreateTours: reverted (0.0302s) ============================= | |
➜ ghost_tours git:(master) ✗ rake db:migrate | |
== 20150910202535 CreateTours: migrating ====================================== | |
-- create_table(:tours) | |
-> 0.0078s | |
== 20150910202535 CreateTours: migrated (0.0079s) ============================= | |
➜ ghost_tours git:(master) ✗ rake db:create_migration NAME=create_castmembers | |
db/migrate/20150910203456_create_castmembers.rb | |
➜ ghost_tours git:(master) ✗ rake db:migrate | |
== 20150910203456 CreateCastmembers: migrating ================================ | |
-- create_table(:castmembers) | |
-> 0.0093s | |
== 20150910203456 CreateCastmembers: migrated (0.0095s) ======================= | |
➜ ghost_tours git:(master) ✗ rake db:rollback | |
== 20150910203456 CreateCastmembers: reverting ================================ | |
-- drop_table(:castmembers) | |
-> 0.0036s | |
== 20150910203456 CreateCastmembers: reverted (0.0258s) ======================= | |
➜ ghost_tours git:(master) ✗ rake db:migrate | |
== 20150910203456 CreateCastmembers: migrating ================================ | |
-- create_table(:castmembers) | |
-> 0.0060s | |
== 20150910203456 CreateCastmembers: migrated (0.0062s) ======================= | |
➜ ghost_tours git:(master) ✗ pry -r './app' | |
[1] pry(main)> Actor.create(email: '[email protected]', phone_number: '555-555-GHOST', first_name: 'Casper', last_name: 'Friendly-Ghosts') | |
D, [2015-09-10T16:46:23.502102 #90914] DEBUG -- : (0.3ms) BEGIN | |
D, [2015-09-10T16:46:23.509730 #90914] DEBUG -- : SQL (2.1ms) INSERT INTO "actors" ("email", "phone_number", "first_name", "last_name") VALUES ($1, $2, $3, $4) RETURNING "id" [["email", "[email protected]"], ["phone_number", "555-555-GHOST"], ["first_name", "Casper"], ["last_name", "Friendly-Ghosts"]] | |
D, [2015-09-10T16:46:23.510919 #90914] DEBUG -- : (0.5ms) COMMIT | |
=> #<Actor:0x007fa795085bf8 | |
id: 1, | |
email: "[email protected]", | |
phone_number: "555-555-GHOST", | |
first_name: "Casper", | |
last_name: "Friendly-Ghosts"> | |
[2] pry(main)> casper = _ | |
=> #<Actor:0x007fa795085bf8 | |
id: 1, | |
email: "[email protected]", | |
phone_number: "555-555-GHOST", | |
first_name: "Casper", | |
last_name: "Friendly-Ghosts"> | |
[3] pry(main)> casper | |
=> #<Actor:0x007fa795085bf8 | |
id: 1, | |
email: "[email protected]", | |
phone_number: "555-555-GHOST", | |
first_name: "Casper", | |
last_name: "Friendly-Ghosts"> | |
[4] pry(main)> casper.email = nil | |
=> nil | |
[5] pry(main)> casper.save | |
D, [2015-09-10T16:47:36.865399 #90914] DEBUG -- : (0.4ms) BEGIN | |
D, [2015-09-10T16:47:36.883065 #90914] DEBUG -- : (0.4ms) ROLLBACK | |
=> false | |
[6] pry(main)> Actor.create(first_name: 'Bloop' last_name: 'Blah') | |
SyntaxError: unexpected tIDENTIFIER, expecting ')' | |
Actor.create(first_name: 'Bloop' last_name: 'Blah') | |
^ | |
[6] pry(main)> Actor.create(first_name: 'Bloop', last_name: 'Blah') | |
D, [2015-09-10T16:48:29.909817 #90914] DEBUG -- : (0.3ms) BEGIN | |
D, [2015-09-10T16:48:29.911671 #90914] DEBUG -- : (0.4ms) ROLLBACK | |
=> #<Actor:0x007fa79474c780 | |
id: nil, | |
email: nil, | |
phone_number: nil, | |
first_name: "Bloop", | |
last_name: "Blah"> | |
[7] pry(main)> a = _ | |
=> #<Actor:0x007fa79474c780 | |
id: nil, | |
email: nil, | |
phone_number: nil, | |
first_name: "Bloop", | |
last_name: "Blah"> | |
[8] pry(main)> a | |
=> #<Actor:0x007fa79474c780 | |
id: nil, | |
email: nil, | |
phone_number: nil, | |
first_name: "Bloop", | |
last_name: "Blah"> | |
[9] pry(main)> Actor.all | |
D, [2015-09-10T16:48:44.716343 #90914] DEBUG -- : Actor Load (0.7ms) SELECT "actors".* FROM "actors" | |
=> [#<Actor:0x007fa7954c81e8 | |
id: 1, | |
email: "[email protected]", | |
phone_number: "555-555-GHOST", | |
first_name: "Casper", | |
last_name: "Friendly-Ghosts">] | |
[10] pry(main)> Actor.create!(first_name: 'Bloop', last_name: 'Blah') | |
D, [2015-09-10T16:49:27.739788 #90914] DEBUG -- : (0.3ms) BEGIN | |
D, [2015-09-10T16:49:27.742231 #90914] DEBUG -- : (0.3ms) ROLLBACK | |
ActiveRecord::RecordInvalid: Validation failed: Email can't be blank, Phone number can't be blank | |
from /Users/mlg/.gem/ruby/2.0.0/gems/activerecord-4.2.4/lib/active_record/validations.rb:79:in `raise_record_invalid' | |
[11] pry(main)> c = _ | |
=> [#<Actor:0x007fa7954c81e8 | |
id: 1, | |
email: "[email protected]", | |
phone_number: "555-555-GHOST", | |
first_name: "Casper", | |
last_name: "Friendly-Ghosts">] | |
[12] pry(main)> c.errors | |
NoMethodError: undefined method `errors' for #<Actor::ActiveRecord_Relation:0x007fa7954cba78> | |
from /Users/mlg/.gem/ruby/2.0.0/gems/activerecord-4.2.4/lib/active_record/relation/delegation.rb:136:in `method_missing' | |
[13] pry(main)> a = Actor.create!(first_name: 'Bloop', last_name: 'Blah') | |
D, [2015-09-10T16:50:45.136147 #90914] DEBUG -- : (0.3ms) BEGIN | |
D, [2015-09-10T16:50:45.139099 #90914] DEBUG -- : (0.3ms) ROLLBACK | |
ActiveRecord::RecordInvalid: Validation failed: Email can't be blank, Phone number can't be blank | |
from /Users/mlg/.gem/ruby/2.0.0/gems/activerecord-4.2.4/lib/active_record/validations.rb:79:in `raise_record_invalid' | |
[14] pry(main)> a.errors | |
=> #<ActiveModel::Errors:0x007fa79546b3d0 | |
@base= | |
#<Actor:0x007fa79474c780 | |
id: nil, | |
email: nil, | |
phone_number: nil, | |
first_name: "Bloop", | |
last_name: "Blah">, | |
@messages= | |
{:email=>["can't be blank"], | |
:phone_number=>["can't be blank"]}> | |
[15] pry(main)> a.errors.messages | |
=> {:email=>["can't be blank"], | |
:phone_number=>["can't be blank"]} | |
[16] pry(main)> a.errors.full_messages | |
=> ["Email can't be blank", | |
"Phone number can't be blank"] | |
[17] pry(main)> a.errors.full_messages.join(", ") | |
=> "Email can't be blank, Phone number can't be blank" | |
[18] pry(main)> Tour.create(name: 'Ghostbusters', description: 'Ectoplasm everywhere!!!!!!! DANGER!') | |
D, [2015-09-10T16:52:34.052862 #90914] DEBUG -- : (0.3ms) BEGIN | |
D, [2015-09-10T16:52:34.055260 #90914] DEBUG -- : SQL (0.7ms) INSERT INTO "tours" ("name", "description") VALUES ($1, $2) RETURNING "id" [["name", "Ghostbusters"], ["description", "Ectoplasm everywhere!!!!!!! DANGER!"]] | |
D, [2015-09-10T16:52:34.058138 #90914] DEBUG -- : (2.3ms) COMMIT | |
=> #<Tour:0x007fa79561a848 | |
id: 1, | |
name: "Ghostbusters", | |
description: "Ectoplasm everywhere!!!!!!! DANGER!"> | |
[19] pry(main)> ghostbusters = _ | |
=> #<Tour:0x007fa79561a848 | |
id: 1, | |
name: "Ghostbusters", | |
description: "Ectoplasm everywhere!!!!!!! DANGER!"> | |
[20] pry(main)> ghostbusters.description = "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" | |
=> "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" | |
[21] pry(main)> ghostbusters.save | |
D, [2015-09-10T16:53:19.183550 #90914] DEBUG -- : (0.4ms) BEGIN | |
D, [2015-09-10T16:53:19.185509 #90914] DEBUG -- : (0.3ms) ROLLBACK | |
=> false | |
[22] pry(main)> Tour.create!(name: "a name", description: "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!") | |
D, [2015-09-10T16:53:43.991176 #90914] DEBUG -- : (0.3ms) BEGIN | |
D, [2015-09-10T16:53:43.993009 #90914] DEBUG -- : (0.4ms) ROLLBACK | |
ActiveRecord::RecordInvalid: Validation failed: Description is too long (maximum is 100 characters) | |
from /Users/mlg/.gem/ruby/2.0.0/gems/activerecord-4.2.4/lib/active_record/validations.rb:79:in `raise_record_invalid' | |
[23] pry(main)> a = Actor.first | |
D, [2015-09-10T16:54:39.373457 #90914] DEBUG -- : Actor Load (3.1ms) SELECT "actors".* FROM "actors" ORDER BY "actors"."id" ASC LIMIT 1 | |
=> #<Actor:0x007fa798083c60 | |
id: 1, | |
email: "[email protected]", | |
phone_number: "555-555-GHOST", | |
first_name: "Casper", | |
last_name: "Friendly-Ghosts"> | |
[24] pry(main)> t = Tour.first | |
D, [2015-09-10T16:54:51.871675 #90914] DEBUG -- : Tour Load (0.9ms) SELECT "tours".* FROM "tours" ORDER BY "tours"."id" ASC LIMIT 1 | |
=> #<Tour:0x007fa794074a48 | |
id: 1, | |
name: "Ghostbusters", | |
description: "Ectoplasm everywhere!!!!!!! DANGER!"> | |
[25] pry(main)> a | |
=> #<Actor:0x007fa798083c60 | |
id: 1, | |
email: "[email protected]", | |
phone_number: "555-555-GHOST", | |
first_name: "Casper", | |
last_name: "Friendly-Ghosts"> | |
[26] pry(main)> t | |
=> #<Tour:0x007fa794074a48 | |
id: 1, | |
name: "Ghostbusters", | |
[27] pry(main)> Castmember.create!(actor: a, tour: t) | |
[27] pry(main)> Castmember.create!(actor: a, tour: t) | |
D, [2015-09-10T16:55:39.224882 #90914] DEBUG -- : (0.4ms) BEGIN | |
D, [2015-09-10T16:55:39.227756 #90914] DEBUG -- : SQL (0.9ms) INSERT INTO "castmembers" ("actor_id", "tour_id") VALUES ($1, $2) RETURNING "id" [["actor_id", 1], ["tour_id", 1]] | |
D, [2015-09-10T16:55:39.228695 #90914] DEBUG -- : (0.5ms) COMMIT | |
=> #<Castmember:0x007fa7952e7e78 | |
id: 1, | |
actor_id: 1, | |
tour_id: 1> | |
[28] pry(main)> Castmember.first | |
D, [2015-09-10T16:55:43.842753 #90914] DEBUG -- : Castmember Load (1.0ms) SELECT "castmembers".* FROM "castmembers" ORDER BY "castmembers"."id" ASC LIMIT 1 | |
=> #<Castmember:0x007fa7945913c8 | |
id: 1, | |
actor_id: 1, | |
tour_id: 1> | |
[29] pry(main)> a = Actor.first | |
D, [2015-09-10T16:55:59.247466 #90914] DEBUG -- : Actor Load (0.7ms) SELECT "actors".* FROM "actors" ORDER BY "actors"."id" ASC LIMIT 1 | |
=> #<Actor:0x007fa7946028c0 | |
id: 1, | |
email: "[email protected]", | |
phone_number: "555-555-GHOST", | |
first_name: "Casper", | |
last_name: "Friendly-Ghosts"> | |
[30] pry(main)> a.tours | |
D, [2015-09-10T16:56:06.830959 #90914] DEBUG -- : Tour Load (0.6ms) SELECT "tours".* FROM "tours" INNER JOIN "castmembers" ON "tours"."id" = "castmembers"."tour_id" WHERE "castmembers"."actor_id" = $1 [["actor_id", 1]] | |
=> [#<Tour:0x007fa795490608 | |
id: 1, | |
name: "Ghostbusters", | |
description: | |
"Ectoplasm everywhere!!!!!!! DANGER!">] | |
[31] pry(main)> t = Tour.first | |
D, [2015-09-10T16:56:42.481391 #90914] DEBUG -- : Tour Load (0.7ms) SELECT "tours".* FROM "tours" ORDER BY "tours"."id" ASC LIMIT 1 | |
=> #<Tour:0x007fa7947e72a8 | |
id: 1, | |
name: "Ghostbusters", | |
description: "Ectoplasm everywhere!!!!!!! DANGER!"> | |
[32] pry(main)> t.actors | |
D, [2015-09-10T16:56:57.439761 #90914] DEBUG -- : Actor Load (0.8ms) SELECT "actors".* FROM "actors" INNER JOIN "castmembers" ON "actors"."id" = "castmembers"."actor_id" WHERE "castmembers"."tour_id" = $1 [["tour_id", 1]] | |
=> [#<Actor:0x007fa7954e2318 | |
id: 1, | |
email: "[email protected]", | |
phone_number: "555-555-GHOST", | |
first_name: "Casper", | |
last_name: "Friendly-Ghosts">] | |
[33] pry(main)> params = {actor_id: 1, tour_id:4} Castmember.create(actor: Actor.find(1), tour: Tour.find(4)) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment