0

I'm a first-time heroku, first-time postgres newbie and am having some difficulties deploying to heroku.

My app is working fine on my machine but I get a status=500 when I try to access myapp.heroku.com.

My steps thus far:

$ lunchy start postgres
$ createdb -Ouser -Eutf8 myapp_development
$ createdb -Ouser -Eutf8 myapp_test
$ rails new myapp --development=postgresql 
$ cd myapp
$ git init 
$ git add .
$ git commit -m "init"
$ git push -u origin master
$ heroku create --stack cedar
$ git push heroku master

>>>>Some simple app scaffolding<<<<<

$ git add .
$ git commit -m "simple scaffolding"
$ git push 
$ git push heroku 
$ heroku run rake db:migrate

The command seems to run but a don't see any tables being created.

Procfile contents:

web: bundle exec thin start -p $PORT -e $RACK_ENV

The heroku log shows:

2011-11-18T08:01:28+00:00 app[run.6]: Awaiting client
2011-11-18T08:01:28+00:00 app[run.6]: Starting process with command `bundle exec rake db:migrate`
2011-11-18T08:01:29+00:00 heroku[run.6]: State changed from starting to up
2011-11-18T08:01:33+00:00 heroku[run.6]: Process exited
2011-11-18T08:01:35+00:00 heroku[run.6]: State changed from up to complete
2011-11-18T08:03:21+00:00 heroku[router]: GET myapp.herokuapp.com/ dyno=web.1 queue=0 wait=0ms service=9ms status=500 bytes=728
2011-11-18T08:03:23+00:00 heroku[router]: GET myapp.herokuapp.com/favicon.ico dyno=web.1 queue=0 wait=0ms service=17ms status=304 bytes=0
2011-11-18T08:04:18+00:00 app[web.1]: 
2011-11-18T08:04:18+00:00 app[web.1]: 
2011-11-18T08:04:18+00:00 app[web.1]: Started GET "/" for 101.171.144.139 at 2011-11-18 08:04:18 +0000
2011-11-18T08:04:18+00:00 app[web.1]:   Processing by PagesController#home as HTML
2011-11-18T08:04:18+00:00 app[web.1]: Rendered pages/home.html.erb within layouts/application (0.2ms)
2011-11-18T08:04:18+00:00 app[web.1]: Rendered layouts/_head.html.erb (0.9ms)
2011-11-18T08:04:18+00:00 app[web.1]: Completed 500 Internal Server Error in 2ms
2011-11-18T08:04:18+00:00 app[web.1]: 
2011-11-18T08:04:18+00:00 app[web.1]: ActionView::Template::Error (custom.css isn't precompiled):
2011-11-18T08:04:18+00:00 app[web.1]:     7:   <meta name="viewport" content="width=device-width" />
2011-11-18T08:04:18+00:00 app[web.1]:     8:   <title><%= title %></title>
2011-11-18T08:04:18+00:00 app[web.1]:     9:   <%= stylesheet_link_tag    "application" %>
2011-11-18T08:04:18+00:00 app[web.1]:     10:   <%= stylesheet_link_tag 'custom', :media => 'screen' %>
2011-11-18T08:04:18+00:00 app[web.1]:     11:   <%= javascript_include_tag "application" %>
2011-11-18T08:04:18+00:00 app[web.1]:     12:   <%= csrf_meta_tags %>
2011-11-18T08:04:18+00:00 app[web.1]:     13: </head>
2011-11-18T08:04:18+00:00 app[web.1]:   app/views/layouts/_head.html.erb:10:in `_app_views_layouts__head_html_erb___3427718828002391478_29348560'
2011-11-18T08:04:18+00:00 app[web.1]:   app/views/layouts/application.html.erb:4:in `_app_views_layouts_application_html_erb___1135382871397557001_29029960'
2011-11-18T08:04:18+00:00 app[web.1]: 
2011-11-18T08:04:18+00:00 heroku[router]: GET myapp.herokuapp.com/ dyno=web.1 queue=0 wait=0ms service=13ms status=500 bytes=728
2011-11-18T08:04:18+00:00 app[web.1]: 
2011-11-18T08:04:18+00:00 app[web.1]: cache: [GET /] miss
2011-11-18T08:04:19+00:00 app[web.1]: cache: [GET /favicon.ico] stale, invalid, store

I got an custom.css isn't precompiled so I did

$ RAILS_ENV=production bundle exec rake assets:precompile

This pre-compiled into public/assets. Then re-did

$ git add. 
$ git push
$ git heroku push
$ heroku rake db:migrate
$ heroku open

Rerun and still get the same error in the logs.

What am I doing wrong?

Gemfile:

gem 'rails', '3.1.1'

gem 'pg'
gem 'thin'
gem 'foreman'
gem 'heroku'

group :development do
  gem 'rspec-rails'
end

group :test do
  gem 'rspec-rails'
  gem 'webrat'
end

group :assets do
  gem 'sass-rails',   '~> 3.1.4'
  gem 'coffee-rails', '~> 3.1.1'
  gem 'uglifier', '>= 1.0.3'
  gem 'zurb-foundation'
end

gem 'jquery-rails'

database.yml:

development:
  adapter: postgresql
  encoding: unicode
  database: myapp_development
  pool: 5
  username: user
  password: password

test:
  adapter: postgresql
  encoding: unicode
  database: myapp_test
  pool: 5
  username: user
  password: password

production:
  adapter: postgresql
  encoding: unicode
  database: myapp_production
  pool: 5
  username: user
  password: password

Production.rb:

MyApp::Application.configure do
  config.cache_classes = true
  config.consider_all_requests_local       = false
  config.action_controller.perform_caching = true
  config.serve_static_assets = false
  config.assets.compress = true
  config.assets.compile = false
  config.assets.digest = true
end

2 Answers2

0

You need to push the precompiled assets to git.

After running bundle exec rake assets:precompile, do a git add . and finally git push heroku master.

Julio Santos
  • 3,837
  • 2
  • 26
  • 47
0

You can actually get by without precompiled assets on Cedar, see the following:

"Compiling assets during runtime" at http://devcenter.heroku.com/articles/rails31_heroku_cedar

You'll want to set the following in your production.rb: config.assets.compile = false

in order to get it to compile while it's compiling the slug.

ylluminate
  • 12,102
  • 17
  • 78
  • 152
  • Even though heroku was compiling at run time I was still getting "custom.css isn't precompiled" error which is why I tried manually. I've added my production.rb file wich has config.assets.compile = false added. – Vlad Ivanovic Nov 18 '11 at 09:03
  • Did you delete your `public/assets/manifest.yml`? I would delete or simply move all files out of your `public/assets/` folder to a backup just to be sure. Then run your `git commit -m "removed manifest.yml" && git push heroku master` again to push your changes to heroku. You may also change `config.consider_all_requests_local` to true if you want stack traces temporarily. Additionally, you might change `config.serve_static_assets` to true as well to see if that helps (depends on the thin server on heroku, but I think it already serves these without this setting). – ylluminate Nov 18 '11 at 09:12
  • `public/assets/manifest.yml` was deleted. Tried your suggestions on production.rb and still no dice. – Vlad Ivanovic Nov 18 '11 at 09:51