2011-11-18 61 views
0

我是第一次使用heroku,第一次使用postgres新手,並且在部署到heroku時遇到一些困難。Heroku Cedar Rails 3.1 db:migrate失敗

我的應用在我的機器上工作正常,但當我嘗試訪問myapp.heroku.com時,狀態= 500。

我的步驟迄今:

$ lunchy start postgres 
$ createdb -Ouser -Eutf8 myapp_development 
$ createdb -Ouser -Eutf8 myapp_test 
$ rails new myapp --development=postgresql 
$ cd myapp 
$ git init 
$ git add . 
$ git commit -m "init" 
$ git push -u origin master 
$ heroku create --stack cedar 
$ git push heroku master 

>>>>Some simple app scaffolding<<<<< 

$ git add . 
$ git commit -m "simple scaffolding" 
$ git push 
$ git push heroku 
$ heroku run rake db:migrate 

的命令似乎運行但沒有看到正在創建的任何表。

Procfile內容:

web: bundle exec thin start -p $PORT -e $RACK_ENV 

Heroku的日誌顯示:

2011-11-18T08:01:28+00:00 app[run.6]: Awaiting client 
2011-11-18T08:01:28+00:00 app[run.6]: Starting process with command `bundle exec rake db:migrate` 
2011-11-18T08:01:29+00:00 heroku[run.6]: State changed from starting to up 
2011-11-18T08:01:33+00:00 heroku[run.6]: Process exited 
2011-11-18T08:01:35+00:00 heroku[run.6]: State changed from up to complete 
2011-11-18T08:03:21+00:00 heroku[router]: GET myapp.herokuapp.com/ dyno=web.1 queue=0 wait=0ms service=9ms status=500 bytes=728 
2011-11-18T08:03:23+00:00 heroku[router]: GET myapp.herokuapp.com/favicon.ico dyno=web.1 queue=0 wait=0ms service=17ms status=304 bytes=0 
2011-11-18T08:04:18+00:00 app[web.1]: 
2011-11-18T08:04:18+00:00 app[web.1]: 
2011-11-18T08:04:18+00:00 app[web.1]: Started GET "/" for 101.171.144.139 at 2011-11-18 08:04:18 +0000 
2011-11-18T08:04:18+00:00 app[web.1]: Processing by PagesController#home as HTML 
2011-11-18T08:04:18+00:00 app[web.1]: Rendered pages/home.html.erb within layouts/application (0.2ms) 
2011-11-18T08:04:18+00:00 app[web.1]: Rendered layouts/_head.html.erb (0.9ms) 
2011-11-18T08:04:18+00:00 app[web.1]: Completed 500 Internal Server Error in 2ms 
2011-11-18T08:04:18+00:00 app[web.1]: 
2011-11-18T08:04:18+00:00 app[web.1]: ActionView::Template::Error (custom.css isn't precompiled): 
2011-11-18T08:04:18+00:00 app[web.1]:  7: <meta name="viewport" content="width=device-width" /> 
2011-11-18T08:04:18+00:00 app[web.1]:  8: <title><%= title %></title> 
2011-11-18T08:04:18+00:00 app[web.1]:  9: <%= stylesheet_link_tag "application" %> 
2011-11-18T08:04:18+00:00 app[web.1]:  10: <%= stylesheet_link_tag 'custom', :media => 'screen' %> 
2011-11-18T08:04:18+00:00 app[web.1]:  11: <%= javascript_include_tag "application" %> 
2011-11-18T08:04:18+00:00 app[web.1]:  12: <%= csrf_meta_tags %> 
2011-11-18T08:04:18+00:00 app[web.1]:  13: </head> 
2011-11-18T08:04:18+00:00 app[web.1]: app/views/layouts/_head.html.erb:10:in `_app_views_layouts__head_html_erb___3427718828002391478_29348560' 
2011-11-18T08:04:18+00:00 app[web.1]: app/views/layouts/application.html.erb:4:in `_app_views_layouts_application_html_erb___1135382871397557001_29029960' 
2011-11-18T08:04:18+00:00 app[web.1]: 
2011-11-18T08:04:18+00:00 heroku[router]: GET myapp.herokuapp.com/ dyno=web.1 queue=0 wait=0ms service=13ms status=500 bytes=728 
2011-11-18T08:04:18+00:00 app[web.1]: 
2011-11-18T08:04:18+00:00 app[web.1]: cache: [GET /] miss 
2011-11-18T08:04:19+00:00 app[web.1]: cache: [GET /favicon.ico] stale, invalid, store 

我得到了一個custom.css不預編譯,所以我做

$ RAILS_ENV=production bundle exec rake assets:precompile 

此預編譯進入公共/資產。然後重新做

$ git add. 
$ git push 
$ git heroku push 
$ heroku rake db:migrate 
$ heroku open 

重新運行,仍然在日誌中得到相同的錯誤。

我在做什麼錯?

的Gemfile:

gem 'rails', '3.1.1' 

gem 'pg' 
gem 'thin' 
gem 'foreman' 
gem 'heroku' 

group :development do 
    gem 'rspec-rails' 
end 

group :test do 
    gem 'rspec-rails' 
    gem 'webrat' 
end 

group :assets do 
    gem 'sass-rails', '~> 3.1.4' 
    gem 'coffee-rails', '~> 3.1.1' 
    gem 'uglifier', '>= 1.0.3' 
    gem 'zurb-foundation' 
end 

gem 'jquery-rails' 

的database.yml:

development: 
    adapter: postgresql 
    encoding: unicode 
    database: myapp_development 
    pool: 5 
    username: user 
    password: password 

test: 
    adapter: postgresql 
    encoding: unicode 
    database: myapp_test 
    pool: 5 
    username: user 
    password: password 

production: 
    adapter: postgresql 
    encoding: unicode 
    database: myapp_production 
    pool: 5 
    username: user 
    password: password 

Production.rb:

MyApp::Application.configure do 
    config.cache_classes = true 
    config.consider_all_requests_local  = false 
    config.action_controller.perform_caching = true 
    config.serve_static_assets = false 
    config.assets.compress = true 
    config.assets.compile = false 
    config.assets.digest = true 
end 
+0

的問題是: '<%= stylesheet_link_tag「自定義」,:媒體=>「屏幕」%>' 我討厭這個新軌 –

回答

0

您需要預編譯的資源推送到飯桶。

運行後bundle exec rake assets:precompile,做一個git add .,最後git push heroku master

+0

我沒有說清楚,我這樣做,道歉 - 已經更新了這個問題。 –

0

實際上,你可以不預編譯的資產獲得由雪松,請參閱以下內容:

「在運行時編譯資產」在 http://devcenter.heroku.com/articles/rails31_heroku_cedar

你要設置你的production.rb如下: config.assets.compile = false

爲了在編譯slug的時候編譯它。

+0

即使heroku在運行時編譯,我仍然得到「custom.css未預編譯」的錯誤,這就是爲什麼我手動嘗試。我添加了我的production.rb文件,其中config.assets.compile = false添加。 –

+0

您是否刪除了「public/assets/manifest.yml」?我會刪除或者只是將所有文件從'public/assets /'文件夾中移出來進行備份。然後運行你的'git commit -m「刪除清單。yml「&& git push heroku master'再次將你的改變推送到heroku,如果你想臨時堆棧跟蹤,你也可以將'config.consider_all_requests_local'改爲true。另外,你可以將'config.serve_static_assets'改爲true以及如果這有幫助(取決於heroku上的瘦服務器,但我認爲它已經在沒有這個設置的情況下提供服務)。 – ylluminate

+0

'public/assets/manifest.yml'被刪除。試過你對production.rb的建議,但仍然沒有骰子。 –