将我的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 .
答案 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