Skip to content

Instantly share code, notes, and snippets.

@mlg-
Created September 10, 2015 21:49
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mlg-/e9d8b9a93306d60d2983 to your computer and use it in GitHub Desktop.
Save mlg-/e9d8b9a93306d60d2983 to your computer and use it in GitHub Desktop.
➜ 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: 'scaryspectorsofsystemscheck@hotmail.com', 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", "scaryspectorsofsystemscheck@hotmail.com"], ["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: "scaryspectorsofsystemscheck@hotmail.com",
phone_number: "555-555-GHOST",
first_name: "Casper",
last_name: "Friendly-Ghosts">
[2] pry(main)> casper = _
=> #<Actor:0x007fa795085bf8
id: 1,
email: "scaryspectorsofsystemscheck@hotmail.com",
phone_number: "555-555-GHOST",
first_name: "Casper",
last_name: "Friendly-Ghosts">
[3] pry(main)> casper
=> #<Actor:0x007fa795085bf8
id: 1,
email: "scaryspectorsofsystemscheck@hotmail.com",
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: "scaryspectorsofsystemscheck@hotmail.com",
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: "scaryspectorsofsystemscheck@hotmail.com",
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: "scaryspectorsofsystemscheck@hotmail.com",
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: "scaryspectorsofsystemscheck@hotmail.com",
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: "scaryspectorsofsystemscheck@hotmail.com",
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: "scaryspectorsofsystemscheck@hotmail.com",
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