1

更新 - 解決済み: ローカル サーバーと heroku の両方が機能しません。2 つの主要なコンポーネントがこの問題を解決しました。

皆様のご支援とご支援をよろしくお願いいたします。喜んで助けてくれる人がいることを知ることは、この学習プロセスにおいて非常に貴重です。したがって、将来のコーダーが頭を悩ませるために、このエラー/解決策を文書化する私の努力.

:( 私のアプリはローカルで動作していたので、指示に従って Heroku にプッシュしました。

Heroku の非常に説明的で安心できるエラー メッセージが表示されました。「申し訳ありませんが、問題が発生しました。」

言い換えれば、今私のアプリはローカルでもherokuでも動作しません...あなたの助けを借りてこれを解決したいと思います. ありがとうございました。

だから私はいくつかのことを試しました(この順序で):

  • 外しgem 'sqlite3'て付け替えましたgem 'pg'
  • 私のgemfileに含まれていますruby '2.0.0'
  • heroku rake db:migrate

最初にローカルの問題を解決してみました。

Railsサーバーを(ローカルでテストするために)試したところ、次のエラーが発生しました。

どういうわけか、Heroku にデプロイするときに、私の Ruby バージョンと矛盾があり、2.0.0 を使用し、gemfile は 1.8 を想定していました。

   ms.rb:777:in `report_activate_error': Could not find RubyGem rails (>= 0) (Gem::LoadError)
        from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rubygems.rb:211:in `activate'
        from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rubygems.rb:1056:in `gem'
        from /usr/bin/rails:18
    Davids-MacBook-Air-6:portfolio davidngo$ rails server
    /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rubygems.rb:777:in `report_activate_error': Could not find RubyGem rails (>= 0) (Gem::LoadError)
        from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rubygems.rb:211:in `activate'
        from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rubygems.rb:1056:in `gem'
        from /usr/bin/rails:18

私にとってそれを解決したもの:

  • 実行してRuby 2.0.0を再インストールしましたrvm reinstall ruby 2.0.0
  • #=> を実行bundle install すると、「Ruby のバージョンは 2.0.0 ですが、Gemfile には 1.8 が指定されています」というメッセージが表示されました。

Heroku の主な問題:

State changed from starting to complete
2013-08-20T03:29:43.118968+00:00 heroku[run.2135]: Error R99 (Platform error) -> Failed to launch the dyno within 10 seconds
2013-08-20T03:29:43.119187+00:00 heroku[run.2135]: Stopping process with SIGKILL
2013-08-20T03:31:00.784270+00:00 heroku[router]: at=info method=GET path=/ host=shrouded-citadel-6554.herokuapp.com fwd="107.193.213.240" dyno=web.1 connect=2ms service=24ms status=500 bytes=643
2013-08-20T03:31:00.800238+00:00 app[web.1]: 
2013-08-20T03:31:00.800238+00:00 app[web.1]: Started GET "/" for 107.193.213.240 at 2013-08-20 03:31:00 +0000
2013-08-20T03:31:00.800238+00:00 app[web.1]: 
2013-08-20T03:31:00.802209+00:00 app[web.1]: Processing by CollectionsController#index as HTML
2013-08-20T03:31:00.808688+00:00 app[web.1]: Completed 500 Internal Server Error in 6ms
2013-08-20T03:31:00.810234+00:00 app[web.1]: 
2013-08-20T03:31:00.810234+00:00 app[web.1]:              WHERE a.attrelid = '"collections"'::regclass
2013-08-20T03:31:00.810234+00:00 app[web.1]:                                         ^
2013-08-20T03:31:00.810234+00:00 app[web.1]: LINE 4:              WHERE a.attrelid = '"collections"'::regclass
2013-08-20T03:31:00.810234+00:00 app[web.1]: :             SELECT a.attname, format_type(a.atttypid, a.atttypmod), d.adsrc, a.attnotnull
2013-08-20T03:31:00.810234+00:00 app[web.1]:               FROM pg_attribute a LEFT JOIN pg_attrdef d
2013-08-20T03:31:00.810234+00:00 app[web.1]: ActiveRecord::StatementInvalid (PG::Error: ERROR:  relation "collections" does not exist
2013-08-20T03:31:00.810234+00:00 app[web.1]:              ORDER BY a.attnum
2013-08-20T03:31:00.810234+00:00 app[web.1]:                 ON a.attrelid = d.adrelid AND a.attnum = d.adnum
2013-08-20T03:31:00.810234+00:00 app[web.1]:                AND a.attnum > 0 AND NOT a.attisdropped
2013-08-20T03:31:00.810392+00:00 app[web.1]: ):
2013-08-20T03:31:00.810392+00:00 app[web.1]:   app/controllers/collections_controller.rb:4:in `index'
2013-08-20T03:31:00.810392+00:00 app[web.1]: 
2013-08-20T03:31:00.810392+00:00 app[web.1]: 
2013-08-20T03:31:01.224316+00:00 heroku[router]: at=info method=GET path=/favicon.ico host=shrouded-citadel-6554.herokuapp.com fwd="107.193.213.240" dyno=web.1 connect=3ms service=8ms status=200 bytes=0

私にとってそれを解決したもの:

heroku pg:reset DATABASE --confirm YOUR_APP_NAME
heroku run rake db:setup
heroku restart
heroku open

関連ファイルと重要ファイル:

database.yml: 開発: アダプター: sqlite3 データベース: db/development.sqlite3 プール: 5 タイムアウト: 5000

test:
  adapter: sqlite3
  database: db/test.sqlite3
  pool: 5
  timeout: 5000

production:
  adapter: postgresql
  encoding: utf8
  database: portfolio_production
  pool: 5
  username:
  password:

Gemfile で:

source 'https://rubygems.org'

ruby '2.0.0'

gem 'rails', '3.2.3'

group :development, :test do
    gem 'sqlite3'
end

group :production do
    gem 'pg'
end
4

4 に答える 4

1

Heroku がデプロイ時に db:migrate を実行しなかったようです。

実行してみてください

 #heroku run rake db:migrate

再度デプロイした後、コンソールで。

移行を実行した後、アプリを再起動する必要があります

#heroku restart 

スキーマをリロードし、スキーマの変更をピックアップします。

于 2013-08-20T03:56:34.383 に答える
1

開発には引き続き sqlite を使用できます。次のGemfileようになります。

group :development, :test do
  gem 'sqlite3'
end

group :production do
  gem 'pg'
end

これによりpostgresql、Heroku (本番モード) とsqliteローカルで使用できるようになります。heroku にデプロイしたらすぐにデータベースの移行を実行することを忘れないでください。コマンドで移行を実行できますheroku run rake db:migrate

于 2013-08-20T05:28:32.747 に答える
0

database.ymlnew を反映するようにファイルを変更する必要がありますadapter。また、postgres をローカルにセットアップする必要があります。

新しいdatabase.ymlファイルは次のようになります -

発達:
  アダプター: postgresql
  エンコーディング: utf8
  データベース: app_name_development
  プール: 5
  ユーザー名:
  パスワード:

テスト:
  アダプター: postgresql
  エンコーディング: utf8
  データベース: app_name_test
  プール: 5
  ユーザー名:
  パスワード:

製造:
  アダプター: postgresql
  エンコーディング: utf8
  データベース: app_name_production
  プール: 5
  ユーザー名:
  パスワード:

database.yml実行を変更した後

rake db:drop db:create db:migrate

Postgres で新しいデータベースを作成します。

于 2013-08-20T05:34:37.807 に答える
0

実稼働環境とは異なるアダプターをローカルで使用できますが、問題はありません。Heroku にデプロイする場合、手動で移行を実行する必要があります。これはデプロイ プロセスの一部ではありません。

したがって、最初に定期的に展開してから実行しますheroku run rake --trace db:migrate。表示されているエラーは、コレクション モデルのテーブルが存在しないことを示しています。

于 2013-08-20T06:02:38.030 に答える