2012-06-17 9 views
21

In primo luogo, sono abbastanza un principiante in rotaie/heroku, quindi perdona la newbiness in anticipo!Heroku "Siamo spiacenti, ma qualcosa è andato storto"

Ho fatto il tutorial Rails (http://guides.rubyonrails.org/getting_started.html) e generato un'app "post" simile a un blog, l'ho inserito in github e poi inserito in heroku.

La mia app funziona a livello locale, ma quando provo a eseguirlo online, ha il "Siamo spiacenti, ma qualcosa è andato storto" in errore carattere rosso.

Ecco i registri Heroku:

2012-06-17T18:20:21+00:00 app[web.1]: Started GET "/posts/new" for 24.246.75.91 at 2012-06-17 18:20:21 +0000 
2012-06-17T18:20:21+00:00 app[web.1]: Processing by PostsController#new as HTML 
2012-06-17T18:20:21+00:00 app[web.1]: Rendered posts/_form.html.erb (19.4ms) 
2012-06-17T18:20:21+00:00 app[web.1]: Rendered posts/new.html.erb within layouts/application (32.8ms) 
2012-06-17T18:20:21+00:00 app[web.1]: Completed 500 Internal Server Error in 39ms 
2012-06-17T18:20:21+00:00 app[web.1]: 
2012-06-17T18:20:21+00:00 app[web.1]:  13: 
2012-06-17T18:20:21+00:00 app[web.1]: ActionView::Template::Error (undefined method `name' for #<Post:0x000000043b8e00>): 
2012-06-17T18:20:21+00:00 app[web.1]:  14: <div class="field"> 
2012-06-17T18:20:21+00:00 app[web.1]:  15:  <%= f.label :name %><br /> 
2012-06-17T18:20:21+00:00 app[web.1]:  18: <div class="field"> 
2012-06-17T18:20:21+00:00 app[web.1]:  17: </div> 
2012-06-17T18:20:21+00:00 app[web.1]:  16:  <%= f.text_field :name %> 
2012-06-17T18:20:21+00:00 app[web.1]:  19:  <%= f.label :title %><br /> 
2012-06-17T18:20:21+00:00 app[web.1]: app/views/posts/_form.html.erb:16:in `block in _app_views_posts__form_html_erb___4393344465537738631_33651200' 
2012-06-17T18:20:21+00:00 app[web.1]: app/views/posts/_form.html.erb:1:in `_app_views_posts__form_html_erb___4393344465537738631_33651200' 
2012-06-17T18:20:21+00:00 app[web.1]: app/views/posts/new.html.erb:3:in `_app_views_posts_new_html_erb___263954971377171473_37473500' 
2012-06-17T18:20:21+00:00 app[web.1]: app/controllers/posts_controller.rb:35:in `new' 
2012-06-17T18:20:21+00:00 app[web.1]: 

In poche parole, f.name è un oggetto che rappresenta una voce nel database (così è la maggior parte delle informazioni per f)

Il "indefinito l'errore "nome" del metodo mi sembra strano, poiché funziona perfettamente localmente.

La mia ipotesi è che il database non sia collegato correttamente tra heroku e la mia app. Tuttavia, non so come posso risolvere/controllare questo problema.

La mia app utilizza il "database condiviso" per impostazione predefinita al momento.

Eventuali suggerimenti su quale controllo? Qualcosa che ho perso?

EDIT 1: database di migrazione. La tabella 'post' sembra essere già 'rilevata'. Ecco una traccia:

Running rake db:migrate --trace attached to terminal... up, run.1 
DEPRECATION WARNING: You have Rails 2.3-style plugins in vendor/plugins! Support for these plugins will be removed in Rails 4.0. Move them out and bundle them in your Gemfile, or fold them in to your app as lib/myplugin/* and config/initializers/myplugin.rb. See the release notes for more on this: http://weblog.rubyonrails.org/2012/01/04/rails-3-2-0-rc2-has-been-released. (called from <top (required)> at /app/Rakefile:7) 
DEPRECATION WARNING: You have Rails 2.3-style plugins in vendor/plugins! Support for these plugins will be removed in Rails 4.0. Move them out and bundle them in your Gemfile, or fold them in to your app as lib/myplugin/* and config/initializers/myplugin.rb. See the release notes for more on this: http://weblog.rubyonrails.org/2012/01/04/rails-3-2-0-rc2-has-been-released. (called from <top (required)> at /app/Rakefile:7) 
** Invoke db:migrate (first_time) 
** Invoke environment (first_time) 
** Execute environment 
** Invoke db:load_config (first_time) 
** Invoke rails_env (first_time) 
** Execute rails_env 
** Execute db:load_config 
** Execute db:migrate 
Migrating to CreatePosts (20120418005214) 
== CreatePosts: migrating ==================================================== 
-- create_table(:posts) 
rake aborted! 
An error has occurred, this and all later migrations canceled: 

PG::Error: ERROR: relation "posts" already exists 
: CREATE TABLE "posts" ("id" serial primary key, "name" character varying(255), "title" character varying(255), "content" text, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) 
/app/vendor/bundle/ruby/1.9.1/gems/activerecord-3.2.1/lib/active_record/connection_adapters/postgresql_adapter.rb:640:in `async_exec' 
/app/vendor/bundle/ruby/1.9.1/gems/activerecord-3.2.1/lib/active_record/connection_adapters/postgresql_adapter.rb:640:in `block in execute' 
/app/vendor/bundle/ruby/1.9.1/gems/activerecord-3.2.1/lib/active_record/connection_adapters/abstract_adapter.rb:280:in `block in log' 
/app/vendor/bundle/ruby/1.9.1/gems/activesupport-3.2.1/lib/active_support/notifications/instrumenter.rb:20:in `instrument' 
/app/vendor/bundle/ruby/1.9.1/gems/activerecord-3.2.1/lib/active_record/connection_adapters/abstract_adapter.rb:275:in `log' 
/app/vendor/bundle/ruby/1.9.1/gems/activerecord-3.2.1/lib/active_record/connection_adapters/postgresql_adapter.rb:639:in `execute' 
/app/vendor/bundle/ruby/1.9.1/gems/activerecord-3.2.1/lib/active_record/connection_adapters/abstract/schema_statements.rb:170:in `create_table' 
/app/vendor/bundle/ruby/1.9.1/gems/activerecord-3.2.1/lib/active_record/migration.rb:450:in `block in method_missing' 
/app/vendor/bundle/ruby/1.9.1/gems/activerecord-3.2.1/lib/active_record/migration.rb:424:in `block in say_with_time' 
/app/vendor/ruby-1.9.3-p0/lib/ruby/1.9.1/benchmark.rb:280:in `measure' 
/app/vendor/bundle/ruby/1.9.1/gems/activerecord-3.2.1/lib/active_record/migration.rb:424:in `say_with_time' 
/app/vendor/bundle/ruby/1.9.1/gems/activerecord-3.2.1/lib/active_record/migration.rb:444:in `method_missing' 
/app/db/migrate/20120418005214_create_posts.rb:3:in `change' 
/app/vendor/bundle/ruby/1.9.1/gems/activerecord-3.2.1/lib/active_record/migration.rb:393:in `block (2 levels) in migrate' 
/app/vendor/ruby-1.9.3-p0/lib/ruby/1.9.1/benchmark.rb:280:in `measure' 
/app/vendor/bundle/ruby/1.9.1/gems/activerecord-3.2.1/lib/active_record/migration.rb:393:in `block in migrate' 
/app/vendor/bundle/ruby/1.9.1/gems/activerecord-3.2.1/lib/active_record/connection_adapters/abstract/connection_pool.rb:118:in `with_connection' 
/app/vendor/bundle/ruby/1.9.1/gems/activerecord-3.2.1/lib/active_record/migration.rb:377:in `migrate' 
/app/vendor/bundle/ruby/1.9.1/gems/activerecord-3.2.1/lib/active_record/migration.rb:512:in `migrate' 
/app/vendor/bundle/ruby/1.9.1/gems/activerecord-3.2.1/lib/active_record/migration.rb:704:in `block (2 levels) in migrate' 
/app/vendor/bundle/ruby/1.9.1/gems/activerecord-3.2.1/lib/active_record/migration.rb:759:in `call' 
/app/vendor/bundle/ruby/1.9.1/gems/activerecord-3.2.1/lib/active_record/migration.rb:759:in `block in ddl_transaction' 
/app/vendor/bundle/ruby/1.9.1/gems/activerecord-3.2.1/lib/active_record/connection_adapters/abstract/database_statements.rb:190:in `transaction' 
/app/vendor/bundle/ruby/1.9.1/gems/activerecord-3.2.1/lib/active_record/transactions.rb:208:in `transaction' 
/app/vendor/bundle/ruby/1.9.1/gems/activerecord-3.2.1/lib/active_record/migration.rb:759:in `ddl_transaction' 
/app/vendor/bundle/ruby/1.9.1/gems/activerecord-3.2.1/lib/active_record/migration.rb:703:in `block in migrate' 
/app/vendor/bundle/ruby/1.9.1/gems/activerecord-3.2.1/lib/active_record/migration.rb:684:in `each' 
/app/vendor/bundle/ruby/1.9.1/gems/activerecord-3.2.1/lib/active_record/migration.rb:684:in `migrate' 
/app/vendor/bundle/ruby/1.9.1/gems/activerecord-3.2.1/lib/active_record/migration.rb:554:in `up' 
/app/vendor/bundle/ruby/1.9.1/gems/activerecord-3.2.1/lib/active_record/migration.rb:535:in `migrate' 
/app/vendor/bundle/ruby/1.9.1/gems/activerecord-3.2.1/lib/active_record/railties/databases.rake:153:in `block (2 levels) in <top (required)>' 
/app/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/task.rb:205:in `call' 
/app/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/task.rb:205:in `block in execute' 
/app/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/task.rb:200:in `each' 
/app/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/task.rb:200:in `execute' 
/app/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/task.rb:158:in `block in invoke_with_call_chain' 
/app/vendor/ruby-1.9.3-p0/lib/ruby/1.9.1/monitor.rb:211:in `mon_synchronize' 
/app/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/task.rb:151:in `invoke_with_call_chain' 
/app/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/task.rb:144:in `invoke' 
/app/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/application.rb:116:in `invoke_task' 
/app/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/application.rb:94:in `block (2 levels) in top_level' 
/app/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/application.rb:94:in `each' 
/app/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/application.rb:94:in `block in top_level' 
/app/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/application.rb:133:in `standard_exception_handling' 
/app/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/application.rb:88:in `top_level' 
/app/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/application.rb:66:in `block in run' 
/app/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/application.rb:133:in `standard_exception_handling' 
/app/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/application.rb:63:in `run' 
/app/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/bin/rake:33:in `<top (required)>' 
/app/vendor/bundle/ruby/1.9.1/bin/rake:19:in `load' 
/app/vendor/bundle/ruby/1.9.1/bin/rake:19:in `<main>' 
Tasks: TOP => db:migrate 

EDIT 2: Provato cadere database di te. Strano errore:

19:06:34[~/ED3/ed3/]>heroku run rake db:drop 
Running rake db:drop attached to terminal... up, run.1 
DEPRECATION WARNING: You have Rails 2.3-style plugins in vendor/plugins! Support for these plugins will be removed in Rails 4.0. Move them out and bundle them in your Gemfile, or fold them in to your app as lib/myplugin/* and config/initializers/myplugin.rb. See the release notes for more on this: http://weblog.rubyonrails.org/2012/01/04/rails-3-2-0-rc2-has-been-released. (called from <top (required)> at /app/Rakefile:7) 
DEPRECATION WARNING: You have Rails 2.3-style plugins in vendor/plugins! Support for these plugins will be removed in Rails 4.0. Move them out and bundle them in your Gemfile, or fold them in to your app as lib/myplugin/* and config/initializers/myplugin.rb. See the release notes for more on this: http://weblog.rubyonrails.org/2012/01/04/rails-3-2-0-rc2-has-been-released. (called from <top (required)> at /app/Rakefile:7) 
Couldn't drop mtstktqkyx : #<ActiveRecord::StatementInvalid: PG::Error: ERROR: must be owner of database mtstktqkyx 
: DROP DATABASE IF EXISTS "mtstktqkyx"> 

EDIT 3: migrazione CreatePosts (da db/migrate /##..##_ create_posts.rb)

class CreatePosts < ActiveRecord::Migration 
    def change 
    create_table :posts do |t| 
     t.string :name 
     t.string :title 
     t.text :content 

     t.timestamps 
    end 
    end 
end 
+1

Molto probabilmente, non è stata eseguita la migrazione del database. Non sono sicuro che heroku toolchain si prenderà cura di te per te. –

+1

se non ti interessa il db in produzione puoi provare qualcosa come "heroku run rake db: drop' e quindi eseguire nuovamente le tue migrazioni su Heroku. –

+0

Sicuramente sembra un problema nella migrazione di CreatePosts. Post che? – MBHNYC

risposta

16

Risulta che il mio database in heroku è stato referenziato erroneamente. Questo è quello che ho fatto:

  1. rake db: drop - questo ucciso entrambe le tabelle di test e sviluppo
  2. ricreate le due basi di dati in PosgreSQL l'ho locale così
  3. rastrello db: migrate - quindi a questo punto localhost funziona di nuovo dopo 1.
  4. Il mondo Heroku - condiviso-database deve essere indicato
  5. Heroku pg: ripristinare SHARED_DATABASE - non può fare db: ripristinare in Heroku a causa di permessi emette
  6. Heroku run rake db: migrate - ri-migrazione db produzione

Sebbene passi solo 5 e 6 erano gli unici che affrontano direttamente il problema principale.

Grazie a tutti !!!

+1

Non ho idea di cosa ho appena fatto ma ha funzionato. Grazie! – IIllIIll

46

Hai migrare il database?

prova ad eseguire:

heroku run rake db:migrate 

dalla directory del progetto.

+0

Sì, ma ottengo qualcosa di simile: PG :: Errore: ERRORE: relazione "post" esiste già (aggiungerà traccia in orig post a breve) – mhz

0

Sembra che tu abbia più di una migrazione per creare il modello post. Guarderei prima le migrazioni.

+0

hmmmm, C'è solo un file in db/migrate/... if questo è ciò che intendi. Il file è su EDIT 3 – mhz

Problemi correlati