2

パブリファイブログの新規インストールを Heroku にデプロイしようとしています。ローカル コンピューターではすべて正常に動作します。

問題については何も言っgit push heroku masterていません:

Counting objects: 7, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (4/4), done.
Writing objects: 100% (6/6), 786 bytes, done.
Total 6 (delta 1), reused 0 (delta 0)

-----> Heroku receiving push
-----> Ruby/Rails app detected
-----> Installing dependencies using Bundler version 1.2.2
       Running: bundle install --without development:test --path 
         vendor/bundle --binstubs bin/ --deployment

       Using rake (10.0.2)

       ... (edited out list of gems being used)

       Your bundle is complete! It was installed into ./vendor/bundle
       Cleaning up the bundler cache.
-----> Writing config/database.yml to read from DATABASE_URL
-----> Rails plugin injection
       Injecting rails_log_stdout
       Injecting rails3_serve_static_assets
-----> Discovering process types
       Procfile declares types      -> (none)
       Default types for Ruby/Rails -> console, rake, web, worker
-----> Compiled slug size: 10.7MB
-----> Launching... done, v7
       http://desolate-harbor-2909.herokuapp.com deployed to Heroku

To git@heroku.com:desolate-harbor-2909.git
   cea2c5c..efb4eb2  master -> master

しかし、その後、アプリページにこれが表示されます:

アプリケーション エラー アプリケーションでエラー
が発生したため、ページを表示できませんでした。しばらくしてからもう一度お試しください。

アプリケーションの所有者である場合は、ログで詳細を確認してください。

これを示すHerokuログ:

heroku[slugc]: Slug compilation started
heroku[api]: Release v7 created by runsfor@gmail.com
heroku[api]: Deploy efb4eb2 by runsfor@gmail.com
heroku[web.1]: State changed from crashed to starting
heroku[slugc]: Slug compilation finished
heroku[web.1]: Starting process with command `bundle exec rails server -p 50812`
app[web.1]:        /app/vendor/bundle/ruby/1.9.1/gems/bundler-1.2.2/lib/bundler/dsl.rb:7:in `evaluate'
app[web.1]:        /app/vendor/bundle/ruby/1.9.1/gems/bundler-1.2.2/bin/bundle:14:in `<top (required)>'
app[web.1]:        /app/vendor/bundle/ruby/1.9.1/gems/bundler-1.2.2/lib/bundler/dsl.rb:32:in `instance_eval'
app[web.1]:        /app/vendor/bundle/ruby/1.9.1/gems/bundler-1.2.2/lib/bundler/friendly_errors.rb:4:in `with_friendly_errors'
app[web.1]: There was an error in your Gemfile, and Bundler cannot continue.
app[web.1]:        /app/vendor/bundle/ruby/1.9.1/gems/bundler-1.2.2/lib/bundler/cli.rb:423:in `exec'
app[web.1]:        /app/Gemfile:7:in `eval_gemfile'
app[web.1]:        /app/vendor/bundle/ruby/1.9.1/gems/bundler-1.2.2/lib/bundler/dsl.rb:32:in `eval_gemfile'
app[web.1]:        /app/vendor/bundle/ruby/1.9.1/gems/bundler-1.2.2/lib/bundler/definition.rb:18:in `build'
app[web.1]:        /app/vendor/bundle/ruby/1.9.1/gems/bundler-1.2.2/lib/bundler.rb:144:in `definition'
app[web.1]:        /app/vendor/bundle/ruby/1.9.1/gems/bundler-1.2.2/lib/bundler/vendor/thor/task.rb:27:in `run'
app[web.1]:        /app/vendor/bundle/ruby/1.9.1/gems/bundler-1.2.2/lib/bundler/vendor/thor/invocation.rb:120:in `invoke_task'
app[web.1]:        /app/vendor/bundle/ruby/1.9.1/gems/bundler-1.2.2/lib/bundler/vendor/thor.rb:275:in `dispatch'
app[web.1]:        /usr/local/lib/ruby/1.9.1/syck.rb:135:in `load'
app[web.1]:        /app/vendor/bundle/ruby/1.9.1/bin/bundle:23:in `load'
app[web.1]:        /app/vendor/bundle/ruby/1.9.1/gems/bundler-1.2.2/lib/bundler/vendor/thor/base.rb:408:in `start'
app[web.1]:        /app/vendor/bundle/ruby/1.9.1/gems/bundler-1.2.2/bin/bundle:14:in `block in <top (required)>'
app[web.1]: /usr/local/lib/ruby/1.9.1/syck.rb:135:in `load': syntax error on line 27, col 0: `adapter = uri.scheme' (ArgumentError)
app[web.1]:        /app/vendor/bundle/ruby/1.9.1/bin/bundle:23:in `<main>'
heroku[web.1]: Process exited with status 4
heroku[web.1]: State changed from starting to crashed
heroku[router]: at=error code=H10 desc="App crashed" method=GET path=/ host=desolate-harbor-2909.herokuapp.com fwd=171.5.16.142 dyno= queue= wait= connect= service= status=503 bytes=
heroku[router]: at=error code=H10 desc="App crashed" method=GET path=/favicon.ico host=desolate-harbor-[2909.herokuapp.com][1] fwd=171.5.16.142 dyno= queue= wait= connect= service= status=503 bytes=

私が間違っていることは何ですか?Heroku にデプロイする前に、何らかの方法でセットアップする必要があると思います。

Database.yml ファイルは次のとおりです。

login: &login
  adapter: postgresql
  host: localhost
  username: *****
  password: *****

development:
  database: typo_dev
  <<: *login

test:
  database: typo_tests
  <<: *login

production:
  database: typo
  <<: *login

Heroku run rake db:migrate の出力は次のとおりです。

Running `rake db:migrate` attached to terminal... up, run.7604
/usr/local/lib/ruby/1.9.1/syck.rb:135:in `load': syntax error on line 27, col 0: `adapter = uri.scheme' (ArgumentError)
       /usr/local/lib/ruby/1.9.1/syck.rb:135:in `load'
       /app/Gemfile:7:in `eval_gemfile'
       /app/vendor/bundle/ruby/1.9.1/gems/bundler-1.2.2/lib/bundler/dsl.rb:32:in `instance_eval'
       /app/vendor/bundle/ruby/1.9.1/gems/bundler-1.2.2/lib/bundler/dsl.rb:32:in `eval_gemfile'
       /app/vendor/bundle/ruby/1.9.1/gems/bundler-1.2.2/lib/bundler/dsl.rb:7:in `evaluate'
       /app/vendor/bundle/ruby/1.9.1/gems/bundler-1.2.2/lib/bundler/definition.rb:18:in `build'
       /app/vendor/bundle/ruby/1.9.1/gems/bundler-1.2.2/lib/bundler.rb:144:in `definition'
       /app/vendor/bundle/ruby/1.9.1/gems/bundler-1.2.2/lib/bundler/cli.rb:423:in `exec'
       /app/vendor/bundle/ruby/1.9.1/gems/bundler-1.2.2/lib/bundler/vendor/thor/task.rb:27:in `run'
       /app/vendor/bundle/ruby/1.9.1/gems/bundler-1.2.2/lib/bundler/vendor/thor/invocation.rb:120:in `invoke_task'
       /app/vendor/bundle/ruby/1.9.1/gems/bundler-1.2.2/lib/bundler/vendor/thor.rb:275:in `dispatch'
       /app/vendor/bundle/ruby/1.9.1/gems/bundler-1.2.2/lib/bundler/vendor/thor/base.rb:408:in `start'
       /app/vendor/bundle/ruby/1.9.1/gems/bundler-1.2.2/bin/bundle:14:in `block in <top (required)>'
       /app/vendor/bundle/ruby/1.9.1/gems/bundler-1.2.2/lib/bundler/friendly_errors.rb:4:in `with_friendly_errors'
       /app/vendor/bundle/ruby/1.9.1/gems/bundler-1.2.2/bin/bundle:14:in `<top (required)>'
       /app/vendor/bundle/ruby/1.9.1/bin/bundle:23:in `load'
       /app/vendor/bundle/ruby/1.9.1/bin/bundle:23:in `<main>'
There was an error in your Gemfile, and Bundler cannot continue.
4

1 に答える 1

2

Rails がファイルをロードするとき、Yaml ファイルとしてロードする前に、ERBdatabase.ymlで実際にフィルタリングします。これは、Ruby を使用して構成を動的に作成できるようにするためです。たとえば、リポジトリにパスワードを入れないようにするためです。

Rails アプリを Heroku にプッシュすると、新しいdatabase.ymlファイルが作成され、元の. この新しいdatabase.ymlものは、ERB を使用してDATABASE_URL環境変数から構成を構築するため、実際には「純粋な」Yaml ファイルではなく、database.yml.erb.

Typo の Gemfile はファイルロードし、database.ymlそれを Yaml として解析しますが、最初に ERB を介してフィードしません。表示されているエラーは、Yaml パーサーがファイルを読み取ったが、有効な Yaml ではなく ERB であるため失敗したことが原因です。

database.ymlこれを修正するには、Yaml として読み込まれる前に、ファイルが ERB を通過していることを確認する必要があります。あなたのGemfile変更で行

conf = YAML.load(File.read(dbfile))

require 'erb'
conf = YAML.load(ERB.new(File.read(dbfile)).result)

Typo のバグ レポートを開くか、プル リクエストを送信することもできます。

于 2012-12-06T16:10:38.460 に答える