1

I've been working on deploying my first rails app to heroku for the past few nights and am struggling to figure out how to solve this problem.

I used Michael Hartl's tutorial (http://ruby.railstutorial.org/chapters/beginning#sec-deploying) to make sure I set up my app on the Cedar Stack.

Per the Heroku tutorial, I'm using "thin" as the server.

I've read a bunch of posts and have precompiled my assets using:

heroku run bundle exec rake assets:precompile bundle exec rake assets:precompile

I have also migrated my databases.

My app works on my localhost.

Here is my gemfile:

source 'https://rubygems.org'

gem 'rails', '3.2.8'
gem 'bootstrap-sass', '2.0.0'
gem 'bcrypt-ruby'
gem 'thin'

group :development, :test do
  gem 'rspec-rails'
end

group :development do
  gem 'sqlite3'
end

# Bundle edge Rails instead:
# gem 'rails', :git => 'git://github.com/rails/rails.git'

group :production do
  gem 'pg'
end

# Gems used only for assets and not required
# in production environments by default.
group :assets do
  gem 'sass-rails',   '~> 3.2.3'
  gem 'coffee-rails', '~> 3.2.1'

  # See https://github.com/sstephenson/execjs#readme for more supported runtimes
  # gem 'therubyracer', :platforms => :ruby

  gem 'uglifier', '>= 1.0.3'
end

gem 'jquery-rails'

group :test do
  gem 'capybara'
  gem 'factory_girl_rails'
end

Here are my heroku logs

2012-09-02T01:56:17+00:00 app[web.1]: DEPRECATION WARNING: You have Rails 2.3-style plugins in vendor/plugins! Support for these plugins will be removed in Rails 4.0. Move them out and bundle them in your Gemfile, or fold them in to your app as lib/myplugin/* and config/initializers/myplugin.rb. See the release notes for more on this: http://weblog.rubyonrails.org/2012/1/4/rails-3-2-0-rc2-has-been-released. (called from <top (required)> at /app/config/environment.rb:5)
2012-09-02T01:56:20+00:00 app[web.1]: => Booting Thin
2012-09-02T01:56:20+00:00 app[web.1]: => Rails 3.2.8 application starting in production on http://0.0.0.0:50510
2012-09-02T01:56:20+00:00 app[web.1]: => Call with -d to detach
2012-09-02T01:56:20+00:00 app[web.1]: => Ctrl-C to shutdown server
2012-09-02T01:56:20+00:00 app[web.1]: Connecting to database specified by DATABASE_URL
2012-09-02T01:56:21+00:00 app[web.1]: >> Thin web server (v1.4.1 codename Chromeo)
2012-09-02T01:56:21+00:00 app[web.1]: >> Maximum connections set to 1024
2012-09-02T01:56:21+00:00 app[web.1]: >> Listening on 0.0.0.0:50510, CTRL+C to stop
2012-09-02T01:56:21+00:00 heroku[web.1]: State changed from starting to up
2012-09-02T01:56:23+00:00 app[web.1]: 
2012-09-02T01:56:23+00:00 app[web.1]: 
2012-09-02T01:56:23+00:00 app[web.1]: Started GET "/" for 108.210.1.241 at 2012-09-02 01:56:23 +0000
2012-09-02T01:56:23+00:00 app[web.1]: Processing by StaticPagesController#home as HTML
2012-09-02T01:56:23+00:00 app[web.1]:   Rendered static_pages/home.html.erb within layouts/application (14.9ms)
2012-09-02T01:56:23+00:00 app[web.1]: Completed 500 Internal Server Error in 103ms
2012-09-02T01:56:23+00:00 app[web.1]: ActionView::Template::Error (screen.css isn't precompiled):
2012-09-02T01:56:23+00:00 app[web.1]: 
2012-09-02T01:56:23+00:00 app[web.1]:     2: <html>
2012-09-02T01:56:23+00:00 app[web.1]:     3: <head>
2012-09-02T01:56:23+00:00 heroku[router]: GET morning-inlet-9513.herokuapp.com/ dyno=web.1 queue=0 wait=0ms service=262ms status=500 bytes=643
2012-09-02T01:56:23+00:00 app[web.1]:     4:   <title>GabisBag</title>
2012-09-02T01:56:23+00:00 app[web.1]: 
2012-09-02T01:56:23+00:00 app[web.1]:     5:   <%= stylesheet_link_tag    "screen", :media => "screen" %>
2012-09-02T01:56:23+00:00 app[web.1]: 
2012-09-02T01:56:23+00:00 app[web.1]:   app/views/layouts/application.html.erb:5:in `_app_views_layouts_application_html_erb__1090905269972481286_30934000'
2012-09-02T01:56:23+00:00 app[web.1]:     6:   <%= stylesheet_link_tag    "landing_pages", :media => "screen" %>
2012-09-02T01:56:23+00:00 app[web.1]:     7:   <%= javascript_include_tag "application" %>
2012-09-02T01:56:23+00:00 app[web.1]:     8:   <%= csrf_meta_tags %>
2012-09-02T02:05:54+00:00 heroku[api]: Starting process with command `bundle exec rake assets:precompile` by jflores1@alumni.nd.edu
2012-09-02T02:05:57+00:00 heroku[run.1]: Awaiting client
2012-09-02T02:05:57+00:00 heroku[run.1]: Starting process with command `bundle exec rake assets:precompile`
2012-09-02T02:05:58+00:00 heroku[run.1]: State changed from starting to up
2012-09-02T02:06:14+00:00 heroku[run.1]: Client connection closed. Sending SIGHUP to all processes
2012-09-02T02:06:15+00:00 heroku[run.1]: Process exited with status 0
2012-09-02T02:06:15+00:00 heroku[run.1]: State changed from up to complete
2012-09-02T02:08:22+00:00 heroku[slugc]: Slug compilation started
2012-09-02T02:08:37+00:00 heroku[api]: D
eploy 6817a8e by jflores1@alumni.nd.edu
2012-09-02T02:08:37+00:00 heroku[api]: Release v8 created by jflores1@alumni.nd.edu
2012-09-02T02:08:38+00:00 heroku[web.1]: State changed from up to starting
2012-09-02T02:08:38+00:00 heroku[slugc]: Slug compilation finished
2012-09-02T02:08:40+00:00 heroku[web.1]: Starting process with command `bundle exec rails server thin -p 42652 -e production`
2012-09-02T02:08:41+00:00 heroku[web.1]: Stopping all processes with SIGTERM
2012-09-02T02:08:41+00:00 app[web.1]: Exiting
2012-09-02T02:08:42+00:00 heroku[web.1]: Process exited with status 0
2012-09-02T02:08:44+00:00 app[web.1]: DEPRECATION WARNING: You have Rails 2.3-style plugins in vendor/plugins! Support for these plugins will be removed in Rails 4.0. Move them out and bundle them in your Gemfile, or fold them in to your app as lib/myplugin/* and config/initializers/myplugin.rb. See the release notes for more on this: http://weblog.rubyonrails.org/2012/1/4/rails-3-2-0-rc2-has-been-released. (called from <top (required)> at /app/config/environment.rb:5)
2012-09-02T02:08:44+00:00 app[web.1]: DEPRECATION WARNING: You have Rails 2.3-style plugins in vendor/plugins! Support for these plugins will be removed in Rails 4.0. Move them out and bundle them in your Gemfile, or fold them in to your app as lib/myplugin/* and config/initializers/myplugin.rb. See the release notes for more on this: http://weblog.rubyonrails.org/2012/1/4/rails-3-2-0-rc2-has-been-released. (called from <top (required)> at /app/config/environment.rb:5)
2012-09-02T02:08:47+00:00 app[web.1]: => Booting Thin
2012-09-02T02:08:47+00:00 app[web.1]: => Rails 3.2.8 application starting in production on http://0.0.0.0:42652
2012-09-02T02:08:47+00:00 app[web.1]: => Call with -d to detach
2012-09-02T02:08:47+00:00 app[web.1]: => Ctrl-C to shutdown server
2012-09-02T02:08:47+00:00 app[web.1]: Connecting to database specified by DATABASE_URL
2012-09-02T02:08:48+00:00 app[web.1]: >> Thin web server (v1.4.1 codename Chromeo)
2012-09-02T02:08:48+00:00 app[web.1]: >> Maximum connections set to 1024
2012-09-02T02:08:48+00:00 app[web.1]: >> Listening on 0.0.0.0:42652, CTRL+C to stop
2012-09-02T02:08:49+00:00 heroku[web.1]: State changed from starting to up
2012-09-02T02:08:50+00:00 app[web.1]: Started GET "/" for 108.210.1.241 at 2012-09-02 02:08:50 +0000
2012-09-02T02:08:50+00:00 app[web.1]: 
2012-09-02T02:08:50+00:00 app[web.1]: 
2012-09-02T02:08:50+00:00 app[web.1]: Processing by StaticPagesController#home as HTML
2012-09-02T02:08:50+00:00 app[web.1]:   Rendered static_pages/home.html.erb within layouts/application (9.3ms)
2012-09-02T02:08:50+00:00 app[web.1]: Completed 500 Internal Server Error in 77ms
2012-09-02T02:08:50+00:00 app[web.1]: 
2012-09-02T02:08:50+00:00 app[web.1]: ActionView::Template::Error (screen.css isn't precompiled):
2012-09-02T02:08:50+00:00 app[web.1]:     2: <html>
2012-09-02T02:08:50+00:00 app[web.1]:     3: <head>
2012-09-02T02:08:50+00:00 app[web.1]:     4:   <title>GabisBag</title>
2012-09-02T02:08:50+00:00 app[web.1]:     5:   <%= stylesheet_link_tag    "screen", :media => "screen" %>
2012-09-02T02:08:50+00:00 app[web.1]:     6:   <%= stylesheet_link_tag    "landing_pages", :media => "screen" %>
2012-09-02T02:08:50+00:00 app[web.1]:     7:   <%= javascript_include_tag "application" %>
2012-09-02T02:08:50+00:00 app[web.1]:     8:   <%= csrf_meta_tags %>
2012-09-02T02:08:50+00:00 app[web.1]:   app/views/layouts/application.html.erb:5:in `_app_views_layouts_application_html_erb__3619394764979485472_40067220'
2012-09-02T02:08:50+00:00 app[web.1]: 
2012-09-02T02:08:50+00:00 app[web.1]: 
2012-09-02T02:08:50+00:00 heroku[router]: GET morning-inlet-9513.herokuapp.com/ dyno=web.1 queue=0 wait=0ms service=221ms status=500 bytes=643
2012-09-02T02:14:08+00:00 heroku[api]: Starting process with command `bundle exec rake db:migrate` by jflores1@alumni.nd.edu
2012-09-02T02:14:10+00:00 heroku[run.1]: Awaiting client
2012-09-02T02:14:10+00:00 heroku[run.1]: Starting process with command `bundle exec rake db:migrate`
2012-09-02T02:14:11+00:00 heroku[run.1]: State changed from starting to up
2012-09-02T02:14:17+00:00 heroku[run.1]: Client connection closed. Sending SIGHUP to all processes
2012-09-02T02:14:18+00:00 heroku[run.1]: Process exited with status 0
2012-09-02T02:14:18+00:00 heroku[run.1]: State changed from up to complete
2012-09-02T02:14:35+00:00 app[web.1]: 
2012-09-02T02:14:35+00:00 app[web.1]: Started GET "/" for 108.210.1.241 at 2012-09-02 02:14:35 +0000
2012-09-02T02:14:35+00:00 app[web.1]: 
2012-09-02T02:14:35+00:00 app[web.1]: Processing by StaticPagesController#home as HTML
2012-09-02T02:14:35+00:00 app[web.1]:   Rendered static_pages/home.html.erb within layouts/application (0.5ms)
2012-09-02T02:14:35+00:00 app[web.1]: Completed 500 Internal Server Error in 2ms
2012-09-02T02:14:35+00:00 app[web.1]: 
2012-09-02T02:14:35+00:00 app[web.1]: ActionView::Template::Error (screen.css isn't precompiled):
2012-09-02T02:14:35+00:00 app[web.1]:     2: <html>
2012-09-02T02:14:35+00:00 app[web.1]:     3: <head>
2012-09-02T02:14:35+00:00 app[web.1]:     4:   <title>GabisBag</title>
2012-09-02T02:14:35+00:00 app[web.1]:     5:   <%= stylesheet_link_tag    "screen", :media => "screen" %>
2012-09-02T02:14:35+00:00 app[web.1]:     6:   <%= stylesheet_link_tag    "landing_pages", :media => "screen" %>
2012-09-02T02:14:35+00:00 app[web.1]:     7:   <%= javascript_include_tag "application" %>
2012-09-02T02:14:35+00:00 app[web.1]:     8:   <%= csrf_meta_tags %>
2012-09-02T02:14:35+00:00 app[web.1]:   app/views/layouts/application.html.erb:5:in `_app_views_layouts_application_html_erb__3619394764979485472_40067220'
2012-09-02T02:14:35+00:00 app[web.1]: 
2012-09-02T02:14:35+00:00 app[web.1]: 
2012-09-02T02:14:35+00:00 heroku[router]: GET morning-inlet-9513.herokuapp.com/ dyno=web.1 queue=0 wait=0ms service=11ms status=500 bytes=643
jflores
  • 483
  • 6
  • 18

3 Answers3

2

This looks like the important part:

ActionView::Template::Error (screen.css isn't precompiled):

Seems as though this thread will fix your problem.

As it says:

On heroku server (readonly filesystem), If you want runtime compilation of css (its not recommended but you can do it), make sure you have done settings like below -

# inside config/application.rb
config.assets.enabled = true
config.assets.prefix = Rails.root.join('tmp/assets').to_s

# If you are using sass then keep gem outside of asset group
 gem 'sass-rails',   '3.1.4'

# inside config/environments/production.rb
config.assets.compile = true
Community
  • 1
  • 1
  • Thanks for your response! I had seen that post last night and tried it. On your advice, I tried again this morning. Still didn't work. I hadn't, though, tried the runtime compilation approach you advocate here because everything I read suggested that there's a pretty big performance hit for doing that. Am I mistaken? – jflores Sep 02 '12 at 23:12
  • Yeah, there is, but I cannot find any other option to fix what you are experiencing. However, you may break something. – Sarah Lasonia Sep 03 '12 at 10:00
1

I found the answer here: blueprint css rails 3.1 help

So far as I can tell, this appears to be a problem with using the Blueprint CSS Framework. That said, two other notes:

  1. I commented out the <%= stylesheet_link_tag "screen", :media=>"screen"%> code from my application.html.erb layout file.
  2. I didn't have 'rubyracer' gem installed. I installed it because it was in the gem profiled of the referenced answer. I have no clue what it does.
  3. The URL slashes ("/") are now showing up again wherever I have links. My hunch is that it's something in one of the CSS files that I'm just going to have to dive into and debug. But, the whole reason I had the stylesheet_link_tag thing in the first place was because I was trying to get rid of those pesky slashes. Ultimately, I decided deployment was more important.

Hope this is helpful to someone else!

Community
  • 1
  • 1
jflores
  • 483
  • 6
  • 18
  • Also, I precompiled everything locally (bundle exec rake assets:precompile) and on heroku (heroku run bundle exec rake assets:precompile) – jflores Sep 03 '12 at 01:10
  • Hey, glad it worked! If this answer solves your problem you should click the big checkbox to mark the answer as 'accepted'. This helps people know your problem has been solved :) See [this FAQ entry here](http://meta.stackexchange.com/a/5235/189918). Welcome to Stack Overflow! – culix Sep 03 '12 at 09:53
  • Thanks for reminding me! This solution actually didn't work out perfectly because I still had those slashes. But, I did eventually figure it out and so I posted an answer that address both issues (the compilation problem and the URL/slash problem). – jflores Oct 04 '12 at 14:20
1

Here's how I ultimately solved the problem(s). Thanks to the folks who referred me elsewhere so that I could put it all together.

First, I moved Blueprint to a vender directory. I don't think that's crucial to the solution, but it felt cleaner.

The compilation problem:

This thread: blueprint css rails 3.1 help was really helpful. I found Martin and Gary's responses (nos 2 and 3) more helpful than the selected response.

Part of why I was having trouble with compilation (personally) is because I made some edits to the Blueprint files, which meant that they needed to be compiled again before deployment.

This thread: rails 3.1.0 ActionView::Template::Error (application.css isn't precompiled) was helpful in that regard. Basically, just run "Bundle exec rake assets:precompile" before uploading to heroku. I also run "heroku run rake assets:precompile" after upload.

How I got rid of the URL slashes in my links: The URLs are the result of this code in Blueprint/print.css:

a:link, a:visited {background:transparent;font-weight:700;text-decoration:underline;}
a:link:after, a:visited:after {content:" (" attr(href) ")";font-size:90%;}

I solved the problem by commenting out that code. Of course, after changing the file, you have to rake assets:precompile again. But, that got it all working!

Community
  • 1
  • 1
jflores
  • 483
  • 6
  • 18