Heroku“我们很抱歉,但出了点问题。”由于javascript_include_tag

时间:2012-04-08 23:19:13

标签: javascript ruby-on-rails jquery-mobile heroku

将我的ruby on rails app上传到heroku会导致以下错误:

  

我们很抱歉,但出了点问题。

在本地计算机上不会发生这种情况。

经过一些调试后,我想我可能已经发现错误,但不知道如何修复它。

在我的文件application.html.erb中,删除以下行解决了问题,但随后我的应用程序丢失了其jquery移动主题。我有什么想法可以解决问题吗?

导致问题的行:

<%= javascript_include_tag "application" %>

application.html.erb文件:

<!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日志:

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]:

应用/资产/ Javascript角/ 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 .

存储库https://github.com/karangb/herokuProblem

7 个答案:

答案 0 :(得分:7)

问题解决了!

很简单 - 取自500 internal server error when I try to push my app onto Heroku

  

因此,根据您提供的heroku信息,我发现您已开启   竹栈和那个堆栈不支持Rails 3.1+。只有   雪松堆栈支持Rails 3.1+。您需要使用以下内容   命令在雪松堆栈上创建一个新应用程序:

     

heroku create --stack cedar

答案 1 :(得分:3)

在config / application.rb中,添加

config.assets.initialize_on_precompile = false

然后推送到git,然后推送heroku。

答案 2 :(得分:1)

尝试添加

//= require jquery.mobile

中的

app/assets/stylesheets/application.js

amd set

config.assets.compile = tue

中的

config/enviroments/production.rb

答案 3 :(得分:0)

尝试在config / enviroments / production.rb中将以下行设置为false:

config.assets.compile = false

答案 4 :(得分:0)

如果您在app/assets中有类似 java 的内容,则会抛出sprockets。将其命名为 applets ,将允许编译javascripts目录的内容。 Source

答案 5 :(得分:0)

您还在设置

吗?
config.assets.initialize_on_precompile = false

这是Rails 3.2的新变化(参见Docs

尽管如此,你应该能够在slug编译期间看到一个错误(如下例所示,如果你没有设置上面的标志)

-----> 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?

您还可以尝试在本地运行rake预编译任务,并查看错误(再次,如文档所示)。

答案 6 :(得分:0)

确保没有未跟踪的文件,执行git status

也许试试,heroku run rake db:migrate