2017-01-31 2 views
0

Приложение My Rails 5 работает точно так, как ожидалось, в моей локальной среде с SQLite3, но когда я развернул его в Heroku, и он работает без ошибок, но некоторые вещи не являются отображается так же. Я думаю, что я отслеживал его до следующего запроса ActiveRecord в моем контроллере заданий:Rails-запрос ActiveRecord работает локально, но другой результат на Heroku

@jobs_later = current_user.jobs.joins(:stage).where("stage_id != ? AND next_step_date > ?", 5, Date.today).order(:next_step_date, stage_id: :desc) 

Запрос захватывает список заданий, относящихся к текущему пользователю и отображает некоторую информацию о них в представлении с помощью переменного экземпляра @jobs_later.

Вот SQL из моего локального окр:

User Load (0.4ms) SELECT "users".* FROM "users" WHERE "users"."id" = ? ORDER BY "users"."id" ASC LIMIT ? [["id", 1], ["LIMIT", 1]] 

Job Exists (2.3ms) SELECT 1 AS one FROM "jobs" WHERE "jobs"."user_id" = ? LIMIT ? [["user_id", 1], ["LIMIT", 1]] 
(2.5ms) SELECT COUNT(*) FROM "jobs" INNER JOIN "stages" ON "stages"."id" = "jobs"."stage_id" WHERE "jobs"."user_id" = ? AND (stage_id != 5 AND next_step_date > '2017-01-31') [["user_id", 1]] 

Job Load (0.3ms) SELECT "jobs".* FROM "jobs" INNER JOIN "stages" ON "stages"."id" = "jobs"."stage_id" WHERE "jobs"."user_id" = ? AND (stage_id != 5 AND next_step_date > '2017-01-31') ORDER BY "jobs"."next_step_date" ASC, "jobs"."stage_id" DESC [["user_id", 1]] 

Step Load (2.2ms) SELECT "steps".* FROM "steps" WHERE "steps"."job_id" = ? ORDER BY "steps"."id" DESC LIMIT ? [["job_id", 11], ["LIMIT", 1]] 

CACHE (0.0ms) SELECT "steps".* FROM "steps" WHERE "steps"."job_id" = ? ORDER BY "steps"."id" DESC LIMIT ? [["job_id", 11], ["LIMIT", 1]] 

Stage Load (0.3ms) SELECT "stages".* FROM "stages" WHERE "stages"."id" = ? LIMIT ? [["id", 2], ["LIMIT", 1]] 

А вот SQL с Postgres на Heroku:

2017-01-31T14:24:54.842062+00:00 app[web.1]: D, [2017-01-31T14:24:54.841973 #4] DEBUG -- : [19703b11-bfbb-4c6f-99b6-b617853ee65a] User Load (1.6ms) SELECT "users".* FROM "users" WHERE "users"."id" = $1 ORDER BY "users"."id" ASC LIMIT $2 [["id", 1], ["LIMIT", 1]] 

2017-01-31T14:24:54.858947+00:00 app[web.1]: I, [2017-01-31T14:24:54.858813 #4] INFO -- : [19703b11-bfbb-4c6f-99b6-b617853ee65a] Rendering jobs/index.html.erb within layouts/application 

2017-01-31T14:24:54.867244+00:00 app[web.1]: D, [2017-01-31T14:24:54.867099 #4] DEBUG -- : [19703b11-bfbb-4c6f-99b6-b617853ee65a] Job Exists (6.6ms) SELECT 1 AS one FROM "jobs" WHERE "jobs"."user_id" = $1 LIMIT $2 [["user_id", 1], ["LIMIT", 1]] 

2017-01-31T14:24:54.786697+00:00 heroku[router]: at=info method=POST path="/jobs/1" host=agile-lowlands-76952.herokuapp.com request_id=5d33ac27-2f26-495e-8261-0d0050723aa6 fwd="173.48.208.24" dyno=web.1 connect=0ms service=159ms status=302 bytes=1073 

2017-01-31T14:24:54.904549+00:00 heroku[router]: at=info method=GET path="/jobs" host=agile-lowlands-76952.herokuapp.com request_id=19703b11-bfbb-4c6f-99b6-b617853ee65a fwd="173.48.208.24" dyno=web.1 connect=0ms service=77ms status=200 bytes=3454 

2017-01-31T14:24:54.883387+00:00 app[web.1]: D, [2017-01-31T14:24:54.883287 #4] DEBUG -- : [19703b11-bfbb-4c6f-99b6-b617853ee65a] (3.0ms) SELECT COUNT(*) FROM "jobs" INNER JOIN "stages" ON "stages"."id" = "jobs"."stage_id" WHERE "jobs"."user_id" = $1 AND (stage_id != 5 AND next_step_date > '2017-01-31') [["user_id", 1]] 

Вы заметите, что на местном уровне он проходит через работу пользовательской нагрузки, Job Exists, Job Load, Step Load и Stage Load.

Но в производстве он проходит через User Load, Job Exits, а затем останавливается. Не уверен, что шаги героя [router] находятся между ними или если это имеет к этому какое-то отношение.

Я также проверил postgres db, и данные были введены правильно, так что это не так, как будто это выглядит пустым.

Кто-нибудь знает, почему это может произойти? Это сводит меня с ума.

ответ

0

Неудивительно, что это имело очевидный ответ. Когда я был развернут в Heroku, я не запускал heroku run rails db:seed, поэтому, когда SQL в моем контроллере работал, он пытался ссылаться на таблицы, в которых не было данных. Когда я проверил свои таблицы раньше, я не думал проверять те, которые я посеял.

Смежные вопросы