2

将我的 ruby​​ on rails 应用程序上传到 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]:

应用程序/资产/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 .

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

4

7 回答 7

7

问题解决了!

这很简单 -当我尝试将我的应用推送到 Heroku 时出现 500 个内部服务器错误

因此,根据您提供的 heroku 信息,我看到您在竹堆栈上,并且该堆栈不支持 Rails 3.1+。只有 cedar 堆栈支持 Rails 3.1+。您需要使用以下命令在 cedar 堆栈上创建一个新应用程序:

heroku create --stack cedar

于 2012-04-09T00:53:42.233 回答
3

在 config/application.rb 中,添加

config.assets.initialize_on_precompile = false

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

于 2012-12-24T06:42:20.447 回答
1

尝试添加

//= require jquery.mobile

在你的

app/assets/stylesheets/application.js

AMD 集

config.assets.compile = tue

在你的

config/enviroments/production.rb

于 2012-04-08T23:33:49.733 回答
0

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

config.assets.compile = false
于 2012-04-08T23:23:12.260 回答
0

如果你有类似java之类的东西app/assets,这会抛出链轮。将其命名为类似小程序的名称将允许javascripts编译目录的内容。来源

于 2012-04-08T23:38:37.647 回答
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 预编译任务,然后查看错误(再次,正如文档所建议的那样)。

于 2012-04-08T23:58:58.100 回答
0

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

也许试试,heroku run rake db:migrate

于 2013-05-27T23:57:38.140 回答