2

Ruby on Rails のホスティングで Heroku を紹介されましたが、今のところ気に入っています。何が間違っているのかを理解するのを手伝ってくれる人がいるかどうか疑問に思っています。

そこのサイトでアプリを作成するための指示に従い、git を作成してコミットし、コードをプッシュすると、http://mylifebattlecry.heroku.comに表示されます(ただし、私が行ったことの大部分は /posts/ パスにあります)。 ) 新しい「投稿」を入力しようとすると (これは一種のブログ プラットフォームであるため)、500.html エラーが発生し、基本的にすべてがシャットダウンします。投稿したページに戻ることすらできません。

データベースの設定に問題があるようです。彼らが提案したように、... $ heroku rake db:migrateを含め、何もしませんでした。

私が間違っていることを誰かがすぐに知っているかどうか疑問に思っています。参照用に彼らが与える指示は次のとおりです。

Heroku gem をインストールします:sudo gem install heroku アプリ用の新しい git リポジトリを作成します (まだ作成していない場合)。

cd myapp
git init && git add . && git commit -m "first commit"

新しい Heroku アプリを作成します。

heroku create
Created http://sharp-autumn-42.com/ | git@heroku.com:sharp-autumn-42.git
Git remote heroku added

注: アプリの名前は自動的に生成されます。いつでも名前を変更できます。

コードをデプロイします。

git push heroku master

移行 (またはその他のブートストラップ タスク) を実行します。

heroku rake db:migrate

デプロイしたアプリをブラウザで開きます: heroku open

これが役立つ場合、..$ heroku ログは次のとおりです。

brandon-gadocis-macbook-pro:mylifebattlecry bgadoci$ heroku logs -app mylifebattlecry
==> dyno-629271.log <==

==> production.log <==
# Logfile created on Sun Nov 22 18:26:06 -0800 2009

Processing PostsController#index (for 99.7.50.140 at 2009-11-22 18:26:07) [GET]
Rendering template within layouts/posts
Rendering posts/index

ActionView::TemplateError (PGError: ERROR:  column votes.post_id does not exist
LINE 1: SELECT count(*) AS count_all FROM "votes" WHERE ("votes".pos...
                                                         ^
: SELECT count(*) AS count_all FROM "votes" WHERE ("votes".post_id = 1) ) on line #58 of app/views/posts/index.html.erb:
55:                 </div>
56:             <div id="vote"><br/>
57:                 <div id="votes">
58:                     <%= pluralize post.votes.count, 'Person' %>  like the above BattleCry. <br/>
59:                 </div>
60:                 <%= link_to "Comments (#{post.comments.count})", post %>
61:             </div>

    app/views/posts/index.html.erb:58
    app/views/posts/index.html.erb:51
    app/views/posts/index.html.erb:45:in `each'
    app/views/posts/index.html.erb:45
    app/controllers/posts_controller.rb:11:in `index'
    /home/heroku_rack/lib/static_assets.rb:9:in `call'
    /home/heroku_rack/lib/last_access.rb:25:in `call'
    /home/heroku_rack/lib/date_header.rb:14:in `call'
    thin (1.0.1) lib/thin/connection.rb:80:in `pre_process'
    thin (1.0.1) lib/thin/connection.rb:78:in `catch'
    thin (1.0.1) lib/thin/connection.rb:78:in `pre_process'
    thin (1.0.1) lib/thin/connection.rb:57:in `process'
    thin (1.0.1) lib/thin/connection.rb:42:in `receive_data'
    eventmachine (0.12.6) lib/eventmachine.rb:240:in `run_machine'
    eventmachine (0.12.6) lib/eventmachine.rb:240:in `run'
    thin (1.0.1) lib/thin/backends/base.rb:57:in `start'
    thin (1.0.1) lib/thin/server.rb:150:in `start'
    thin (1.0.1) lib/thin/controllers/controller.rb:80:in `start'
    thin (1.0.1) lib/thin/runner.rb:173:in `send'
    thin (1.0.1) lib/thin/runner.rb:173:in `run_command'
    thin (1.0.1) lib/thin/runner.rb:139:in `run!'
    thin (1.0.1) bin/thin:6
    /usr/local/bin/thin:20:in `load'
    /usr/local/bin/thin:20

Rendering /disk1/home/slugs/88382_601a216_9803/mnt/public/500.html (500 Internal Server Error)
4

4 に答える 4

9

すべてのテーブルの移行がありますか。

heroku rake db:schema:load を実行して、新しいスキーマをロードするだけです

于 2009-11-23T02:45:47.750 に答える
4

ログの重要な行は次のとおりです。

PGError: ERROR: column votes.post_id does not exist

これは、アプリが使用しようとしているスキーマが Heroku のデータベースにないことを意味します。

必要な方法でテーブルを作成する移行があることを確認し、変更をコミットしてから実行heroku rake db:migrateします。これですべて完了です。

テストするには、クリーンなローカル データベース (sqlite を使用している場合は、nuke db/development.sqlite3 のみ) から開始し、ローカルで実行しrake db:migrateます。ローカル マシンで動作する場合は、Heroku でも動作するはずです。

于 2009-11-23T05:48:20.543 に答える
2

heroku restartプロセスに問題はありません。アプリを再起動することもできますがheroku logs、問題のあるページを読み込んだ直後に を実行し、何が表示されるかを確認することをお勧めします。

于 2009-11-23T02:22:11.597 に答える
2

私は同様の問題を抱えていました。heroku restart取れなかった問題を解決しましたheroku rake db:migrateheroku consoleまた、 (./script/consoleリモート アプリで)を介してアプリを検査することもできます。

于 2010-01-02T04:06:05.173 に答える