2

Uploading my ruby on rails app to heroku causes the following error:

We're sorry, but something went wrong.

This does not occur on my local machine.

After some debugging, I think I may have spotted the error, but do not know how to fix it.

In my file application.html.erb, removing the following line solves the problem, but then my app loses its jquery mobile theme. Any ideas what I could do to fix the problem?

Line causing the problem:

<%= javascript_include_tag "application" %>

application.html.erb file:

<!DOCTYPE html>
<html>
<head>
  <title>Washapp</title>
  <meta name="viewport" content="width=device-width">
  <link rel="stylesheet" href="http://code.jquery.com/mobile/1.0.1/jquery.mobile-1.0.1.min.css" />
  <%= javascript_include_tag "application" %>

  <script src="http://code.jquery.com/mobile/1.0.1/jquery.mobile-1.0.1.min.js"></script>
  <%= csrf_meta_tags %>

  <script>
    if (window.location.hash == "#_=_")
        window.location.hash = "";
  </script>

</head>
<body>
  <div data-role="page">
    <%= yield %>
  </div>
</body>
</html>

Heroku logs:

2012-04-08T23:28:41+00:00 heroku[nginx]: 78.105.51.57 - - [08/Apr/2012:23:28:41 +0000] "GET / HTTP/1.1" 500 643 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_3) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.151 Safari/535.19" washappdelete2.heroku.com
2012-04-08T23:28:43+00:00 app[web.1]: 
2012-04-08T23:28:43+00:00 app[web.1]: Started GET "/" for 78.105.51.57 at 2012-04-08 16:28:43 -0700
2012-04-08T23:28:43+00:00 app[web.1]: 
2012-04-08T23:28:43+00:00 app[web.1]: Processing by HomeController#index as HTML
2012-04-08T23:28:43+00:00 app[web.1]:   Rendered home/routa_list.html.erb within layouts/application (0.1ms)
2012-04-08T23:28:43+00:00 app[web.1]: Completed 500 Internal Server Error in 34ms
2012-04-08T23:28:43+00:00 app[web.1]: 
2012-04-08T23:28:43+00:00 app[web.1]:     4:   <title>Washapp</title>
2012-04-08T23:28:43+00:00 app[web.1]: ActionView::Template::Error (application.js isn't precompiled):
2012-04-08T23:28:43+00:00 app[web.1]:     5:   <meta name="viewport" content="width=device-width">
2012-04-08T23:28:43+00:00 app[web.1]:     6:   <link rel="stylesheet" href="http://code.jquery.com/mobile/1.0.1/jquery.mobile-1.0.1.min.css" />
2012-04-08T23:28:43+00:00 app[web.1]:     7:   <%= javascript_include_tag "application" %>
2012-04-08T23:28:43+00:00 app[web.1]:     9:   <script src="http://code.jquery.com/mobile/1.0.1/jquery.mobile-1.0.1.min.js"></script>
2012-04-08T23:28:43+00:00 app[web.1]:     8:   
2012-04-08T23:28:43+00:00 app[web.1]:     10:   <%= csrf_meta_tags %>
2012-04-08T23:28:43+00:00 app[web.1]:   app/views/layouts/application.html.erb:7:in `_app_views_layouts_application_html_erb__2373145142857118006_42724320'
2012-04-08T23:28:43+00:00 app[web.1]:   app/controllers/home_controller.rb:4:in `index'
2012-04-08T23:28:43+00:00 app[web.1]: cache: [GET /] miss
2012-04-08T23:28:43+00:00 app[web.1]: 
2012-04-08T23:28:43+00:00 app[web.1]:

app/assets/javascripts/application.js

// This is a manifest file that'll be compiled into application.js, which will include all the files
// listed below.
//
// Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts,
// or vendor/assets/javascripts of plugins, if any, can be referenced here using a relative path.
//
// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
// the compiled file.
//
// WARNING: THE FIRST BLANK LINE MARKS THE END OF WHAT'S TO BE PROCESSED, ANY BLANK LINE SHOULD
// GO AFTER THE REQUIRES BELOW.
//
//= require jquery
//= require jquery_ujs
//= require_tree .

Repository: https://github.com/karangb/herokuProblem

Karan
  • 14,824
  • 24
  • 91
  • 157

7 Answers7

7

Problem solved!

It was simple - taken from 500 internal server error when I try to push my app onto Heroku

So based upon the heroku info that you provided I see that you are on the bamboo stack and that stack does not support Rails 3.1+. Only the cedar stack supports Rails 3.1+. You'll need to use the following command to create a new app on the cedar stack:

heroku create --stack cedar

Community
  • 1
  • 1
Karan
  • 14,824
  • 24
  • 91
  • 157
  • So in the end the only person who could solve this was either you, or Heroku. *Sigh* At least this post will serve a good all-round purpose. I would suggest that if you found most of our replies useful, you give appropriate credit. – Jonathan Apr 09 '12 at 01:30
  • yeah, unfortunately. Spent hours on it - wish heroku logs were better. Thanks a lot tho. Support available here encourages me to keep on going! :) – Karan Apr 09 '12 at 01:33
  • 3
    Yay, saved the day, Karan! Just had to change the **url** in the `.git/config` into the [remote "heroku"] section before rerunning `git push heroku master` and `heroku run rake db:migrate`... – Adriano P Nov 25 '12 at 03:55
3

In config/application.rb, add

config.assets.initialize_on_precompile = false

and push to git, then heroku push.

Thaha kp
  • 3,689
  • 1
  • 26
  • 25
1

Try adding

//= require jquery.mobile

in your

app/assets/stylesheets/application.js

amd set

config.assets.compile = tue

in your

config/enviroments/production.rb

benjgorman
  • 702
  • 10
  • 31
  • if this does not work, please also add the name of the files and folders in `app/assets` to your question – Jonathan Apr 08 '12 at 23:36
  • Actually you may have to be using the gem "jquery-mobile-rails" to have this work. – benjgorman Apr 08 '12 at 23:37
  • this did not work ... I will add the gem - (btw, I had some Could not find a Javascript runtime in my heroku log ...) . i will update after i add the gem – Karan Apr 08 '12 at 23:38
  • adding the gem did not work ... should I have to modify the application.html.erb file after adding the gem? – Karan Apr 08 '12 at 23:43
  • Yes you shouldn't be manually including the jquery javascript file anymore. – benjgorman Apr 08 '12 at 23:48
  • according the the following link, the author had a similar problem as I have. Maybe it might help? http://gowithfoss.wordpress.com/2011/03/08/heroku-errorwere-sorry-but-something-went-wrong/ – Karan Apr 08 '12 at 23:50
  • btw, removing the jquery javascript even after installing the gem removes the styling for some reason .. – Karan Apr 08 '12 at 23:52
0

Try to set in config/enviroments/production.rb the following line to false:

config.assets.compile = false
Mark
  • 7,507
  • 12
  • 52
  • 88
  • hmm... that line is already in my production.rb - i may have added it previously ... still causing the error ... – Karan Apr 08 '12 at 23:25
  • What is the contents of your application.js file? – benjgorman Apr 08 '12 at 23:25
  • //= require jquery //= require jquery_ujs //= require_tree . – Karan Apr 08 '12 at 23:30
  • maybe you need to download the jquery.mobile-1.0.1.min.js to your assets/javascripts directory ... then it would be precompiled? Try not to reference it externally (but this is just a guess...) – Mark Apr 08 '12 at 23:37
  • I have added my source code to github. Note that the last few comments are terrible! https://github.com/karangb/herokuProblem – Karan Apr 08 '12 at 23:58
0

If you have anything like like java within app/assets, this will throw sprockets off. Naming it to something like applets instead will allow the contents of javascripts directory to be compiled. Source

Community
  • 1
  • 1
Jonathan
  • 10,936
  • 8
  • 64
  • 79
  • I dont think I have anything like java in my app/assets. I have - images --- rails.png - javascripts --- application.js --- home.js.coffee --- users.js.coffee - stylesheets --- application.css --- home.css.scss --- scaffolds.css.scss --- users.css.scss – Karan Apr 08 '12 at 23:45
0

Are you also setting

config.assets.initialize_on_precompile = false

This is a new change on Rails 3.2 (see the Docs)

Nevertheless, you should be able to see an error during the slug compilation (as example below, if you do not set the above flag)

-----> Preparing app for Rails asset pipeline
       Running: rake assets:precompile
       rake aborted!
       could not connect to server: Connection refused
       Is the server running on host "127.0.0.1" and accepting
       TCP/IP connections on port 5432?

You can also try to run the rake precompile task locally, and see the error (again, as the documentation is suggesting).

0

make sure there are no untracked files, do git status

maybe try, heroku run rake db:migrate

Bruno
  • 6,211
  • 16
  • 69
  • 104