2017-10-18 4 views
0

Rails에서 수행 한 프로젝트를 다른 폴더로 복사했습니다. Devise gem을 사용하여 새 사용자를 만들거나 등록하려면 내 컴퓨터에서 로컬로 작동합니다.완료 됨 500 Heroku의 Devise 사용자 가입시 내부 서버 오류가 발생했습니다.

2017-10-18T09:13:44.841868+00:00 app[web.1]: D, [2017-10-18T09:13:44.841788 #4] DEBUG -- : [8944a6a0-36d4-4f3a-b4e2-967d5273ae3c] (1.2ms) ROLLBACK 
2017-10-18T09:13:44.844378+00:00 app[web.1]: I, [2017-10-18T09:13:44.844294 #4] INFO -- : [8944a6a0-36d4-4f3a-b4e2-967d5273ae3c] Completed 500 Internal Server Error in 1109ms (ActiveRecord: 122.8ms) 
2017-10-18T09:13:44.845813+00:00 app[web.1]: F, [2017-10-18T09:13:44.845733 #4] FATAL -- : [8944a6a0-36d4-4f3a-b4e2-967d5273ae3c] 
2017-10-18T09:13:44.845955+00:00 app[web.1]: F, [2017-10-18T09:13:44.845867 #4] FATAL -- : [8944a6a0-36d4-4f3a-b4e2-967d5273ae3c] NoMethodError (undefined method `id' for nil:NilClass): 
2017-10-18T09:13:44.846016+00:00 app[web.1]: F, [2017-10-18T09:13:44.845935 #4] FATAL -- : [8944a6a0-36d4-4f3a-b4e2-967d5273ae3c] 
2017-10-18T09:13:44.846141+00:00 app[web.1]: F, [2017-10-18T09:13:44.846063 #4] FATAL -- : [8944a6a0-36d4-4f3a-b4e2-967d5273ae3c] app/models/user.rb:150:in `set_pinned_posts' 
2017-10-18T09:13:44.846302+00:00 app[web.1]: F, [2017-10-18T09:13:44.846146 #4] FATAL -- : [8944a6a0-36d4-4f3a-b4e2-967d5273ae3c] app/controllers/users/registrations_controller.rb:3:in `create' 

: 나는에게 Heroku에이 같은 수행 할 때 그러나 Heroku가 로그 나에게 이러한 오류 (: 사용자에 대한 NilClass) 500 내부 서버 오류 및 무기 호에 대한 NoMethodError (정의되지 않은 메서드 'ID')을 제공 사용자 테이블이 있지만 Heroku에서 사용자를 만들 수는 없습니다.

  • 는 Heroku가 서버 heroku restart -a appname
  • 나는 또한 종이 클립 보석에 대한 아마존 AWS S3를 사용하고 있는데 다시 시작 heroku run rails db:migrate
  • 으로 데이터베이스를 마이그레이션 : 내가 지금까지했던 어떤

    이 프로젝트에서는 두 개의 다른 프로젝트에도 사용하는 동일한 키를 사용합니다. 다른 두 프로젝트는 잘 작동합니다. (예 : AWS Access Key, AWS Region, AWS Secret Access Key, Secret Key Base). 그것이 문제일까요?

  • 내 gemfile에있는 pg gem의 버전 번호를 삭제하고 번들을 다시 설치했습니다.
  • Stackoverflow에 관한 비슷한 질문은 등록 후 이메일 확인에 문제가 있음을 보여줍니다. 그러나 Devise에 대한 전자 메일 확인을 활성화하지 않았습니다.

오류 메시지에서 사용자 모델 방법 :

class User < ApplicationRecord 
    after_create :set_pinned_posts 

    ... 

    def set_pinned_posts 
    Fpost.where(pinned: true).all.each do |post| 
     self.randomized_fposts.where(fpost_id: post.id).each do |post| 
     post.set_faketime_for_pinnedposts 
     end 
    end 

    first = Fpost.where(pinned: true).first 
    last = Fpost.where(pinned: true).last 

    self.randomized_fposts.where(fpost_id: first.id).update_all(fake_time: 1.days.ago) 
    self.randomized_fposts.where(fpost_id: last.id).update_all(fake_time: 30.days.ago) 
    end 
end 
+0

'app/models/user.rb : 150 : in set_pinned_posts' 여기서 오류가 발생합니다. 우리가 도울 수 있도록 모델 코드를 게시할까요? – lacostenycoder

+0

고마워, 나는 (이 방법에서는 고정 된 "가짜 게시물"을 설정하고 게시 시간을 변경하는) 방법을 추가했습니다. – OhDaeSu

답변

2

기회는 이것이 문제입니다. (이 단계에서 사용자에 연결된 모든 Fpost 객체가 있습니까?)

이 '(무기 호에 대한 : NilClass 당신의 오류 정의되지 않은 메서드`ID) : NoMethodError'를 설명 할 '이것에 의해 던져지는 :

.... .where(fpost_id: first.id) ... 

ID가 nil에서 호출되고 있습니다.

+1

오, 세상에, 정말 고마워. 나는 "Fposts"씨를 뿌리는 것을 잊었습니다. 그러므로 FPosts.' heroku는 rake db : seed'를 실행했습니다. – OhDaeSu

1

당신이 갈퀴 DB를 실행하려고 했나 : 이동? 웹 대시 보드를 통해 이전을 실행할 수도 있습니다. rails db : migrate가 heroku에서 작동하지 않는 경우가 있습니다. 또한 콘솔을 통해 새로운 사용자를 만들려고 했습니까? Fpost.where = 첫번째와

first = Fpost.where(pinned: true).first 
last = Fpost.where(pinned: true).last 

(고정 : TRUE) 전무를 반환