2015-02-05 4 views
0

새 레일 애플리케이션에 대한 사용자 가입 생성이 끝났습니다. 로컬 컴퓨터에서 모든 것이 잘 작동했습니다. 그러나 heroku에서 배포 된 앱은 "new.html.erb"을 렌더링하는 signup_path를로드하지 않습니다. 이 경로를 클릭하면 로그를 확인하라는 오류 메시지가 나타납니다.Heroku Rails 마이그레이션 오류

로그를 확인하고 몇 가지 시도를했지만 현재 어떻게 해야할지 모릅니다. http://pastebin.com/v1fVqLbL

오류는 다음과 같습니다 : 롤백을하지만 실제로 마이그레이션 중 하나가 있기 때문에 롤백 할 수없는 것 : 나는 다시에게 Heroku를 사용하여 내 마이그레이션 롤링 시도했습니다

ActionView::Template::Error (undefined method `phone' for #<User:0x007f05a265c030>): 

갈퀴 DB를 실행 여기 로그입니다 heroku rake db : status는 나에게 마지막 (전화 번호에 대한 인덱스)을 현재로 제공합니다.

때때로이 오류를 얻기 롤백하려고 :

[email protected]:~/workspace/AccessOBD (master) $ heroku run rake db:rollback 
Running `rake db:rollback` attached to terminal... up, run.2007 
    ActiveRecord::SchemaMigration Load (1.7ms) SELECT "schema_migrations".* FROM "schema_migrations" 
    ActiveRecord::SchemaMigration Load (1.4ms) SELECT "schema_migrations".* FROM "schema_migrations" 
Migrating to AddIndexToUsersPhoneNumber (20150204094519) 
    (1.2ms) BEGIN 
== 20150204094519 AddIndexToUsersPhoneNumber: reverting ======================= 
-- remove_index(:users, {:column=>:phone}) 
    (1.4ms) ROLLBACK 
rake aborted! 
StandardError: An error has occurred, this and all later migrations canceled: 
Index name 'index_users_on_phone' on table 'users' does not exist/app/vendor/bundle/ruby/2.0.0/gems/activerecord-4.2.0/lib/active_record/connection_adapters/abstract/schema_statements.rb:947:in `index_name_for_remove' 

new.html.erb

<% provide(:title, 'Sign up') %> 
<h1>Sign up</h1> 

<div class="row"> 
    <div class="col-md-6 col-md-offset-3"> 
    <%= form_for(@user) do |f| %> 
     <%= render 'shared/error_messages' %> 

     <%= f.label :name %> 
     <%= f.text_field :name, class: 'form-control' %> 

     <%= f.label :email %> 
     <%= f.email_field :email, class: 'form-control' %> 

     <%= f.label :phone, "Phone Number" %> 
     <%= f.phone_field :phone, class: 'form-control' %> 

     <%= f.label :password %> 
     <%= f.password_field :password, class: 'form-control' %> 

     <%= f.label :password_confirmation, "Confirm Your Password" %> 
     <%= f.password_field :password_confirmation, class: 'form-control' %> 

     <%= f.submit "Create my account", class: "btn btn-primary" %> 
    <% end %> 
    </div> 
</div> 

User.rb

class User < ActiveRecord::Base 
    before_save { self.email = email.downcase } 
    validates :name, presence: true, length: { maximum: 50 } 
    VALID_EMAIL_REGEX = /\A[\w+\-.][email protected][a-z\d\-.]+\.[a-z]+\z/i 
    validates :email, presence: true, length: { maximum: 255 }, 
        format: { with: VALID_EMAIL_REGEX }, 
        uniqueness: { case_sensitive: false } 
    VALID_PHONE_REGEX = /\A(\+\d{1,2}\s)?\(?\d{3}\)?[\s.-]?\d{3}[\s.-]?\d{4}\z/ 
    validates :phone, presence: true, length: {maximum: 15}, 
        format: { with: VALID_PHONE_REGEX }, 
        uniqueness: true 
    has_secure_password 
    validates :password, length: { minimum: 6 } 
end 

내 생산 스키마 , 나 벨 ieve 전화가 정의됩니다

ActiveRecord::Schema.define(version: 20150204094519) do 

    create_table "users", force: :cascade do |t| 
    t.string "name" 
    t.string "email" 
    t.datetime "created_at",  null: false 
    t.datetime "updated_at",  null: false 
    t.string "password_digest" 
    t.string "phone" 
    end 

    add_index "users", ["email"], name: "index_users_on_email", unique: true 
    add_index "users", ["phone"], name: "index_users_on_phone", unique: true 

end 

Heroku가 마이그레이션을 :

20150204074511_create_users.rb     20150204093042_add_phone_number_to_users.rb 
20150204081616_add_index_to_users_email.rb  20150204094519_add_index_to_users_phone_number.rb 
20150204081750_add_password_digest_to_users.rb 

필요한 경우 다른 파일을 추가 할 수 해피. Hartl의 최신 튜토리얼에서 최종 gemfile을 실행 중입니다. 무엇을 해야할지 모르겠다.

+0

"롤백을 시도 할 때이 오류가 발생하는 경우 :"이 오류는 무엇입니까? –

+0

@MarekLipka 그냥 깨진 오류 중 일부를 깨달았습니다. 위에 업데이트되었습니다. –

답변

0

내 문제는 내가 추가 한 세션 파일을 추적하지 못해 내 로컬 컴퓨터에 있었지만 github-> heroku에는 없었다는 것이었다. session_helper 만 변경 한 다음 git 명령을 사용하여 파일을 변경하지 않고 세션 파일을 모두 추적 할 수 있다는 메시지가 표시됩니다.

git add -A 첫 번째 bc가 아닌 git -am "commit message"을 사용했기 때문에 이런 일이 발생했습니다. -a 플래그가 모든 것을 추가했다고 생각했습니다. sessions_helper.rb가 있는지 확인하려면 git을 검사해야합니다. 모든 응답에서이 사실을 확인하라고 지시했으나 로컬 컴퓨터 만 검사했습니다.