I'm trying to deploy a fresh install of a Publify blog to Heroku. Everything works fine on my local computer.
And git push heroku master
does not saying anything about problems:
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 [email protected]:desolate-harbor-2909.git
cea2c5c..efb4eb2 master -> master
But after that I see this on apps page:
Application Error
An error occurred in the application and your page could not be served. Please try again in a few moments.If you are the application owner, check your logs for details.
and Heroku logs showing this:
heroku[slugc]: Slug compilation started
heroku[api]: Release v7 created by [email protected]
heroku[api]: Deploy efb4eb2 by [email protected]
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=
What I'm doing wrong? I think I need to setup it somehow before deploying to Heroku.
Database.yml file is:
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 output is:
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.
When Rails loads the
database.yml
file it actually filters it through ERB before loading it as a Yaml file. This is so that you can dynamically create your configuration using Ruby, e.g. to keep passwords out of your repository.When you push a Rails app to Heroku, a new
database.yml
file is created, replacing the original. This newdatabase.yml
uses ERB to construct the config from theDATABASE_URL
environment variable, so in reality it is not a “pure” Yaml file – you could consider it to be something likedatabase.yml.erb
.The Gemfile of Typo loads the
database.yml
file and then parses it as Yaml, but doesn’t feed it through ERB first. The errors you are seeing are caused by the Yaml parser reading the file but failing as it is ERB, not valid Yaml.To fix it you need to make sure that the
database.yml
file is put through ERB before being read as Yaml. In yourGemfile
change the lineto
You might want to open bug report for Typo, or even send a pull request.