0

我在Hartl 的 Rails 教程第 2 章结束时,该应用程序在本地工作,但我无法部署它。

http://quiet-ocean-3277.herokuapp.com/

$ git push heroku master
Counting objects: 3, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (2/2), 253 bytes, done.
Total 2 (delta 1), reused 0 (delta 0)

-----> Ruby/Rails app detected
-----> Using Ruby version: ruby-1.9.3
-----> Installing dependencies using Bundler version 1.3.2
       Running: bundle install --without development:test --path vendor/bundle --binstubs vendor/bundle/bin --deployment
       Using rake (10.1.0)
       Using i18n (0.6.4)
       Using minitest (4.7.5)
       Using multi_json (1.7.7)
       Using atomic (1.1.10)
       Using thread_safe (0.1.0)
       Using tzinfo (0.3.37)
       Using activesupport (4.0.0)
       Using builder (3.1.4)
       Using erubis (2.7.0)
       Using rack (1.5.2)
       Using rack-test (0.6.2)
       Using actionpack (4.0.0)
       Using mime-types (1.23)
       Using polyglot (0.3.3)
       Using treetop (1.4.14)
       Using mail (2.5.4)
       Using actionmailer (4.0.0)
       Using activemodel (4.0.0)
       Using activerecord-deprecated_finders (1.0.3)
       Using arel (4.0.0)
       Using activerecord (4.0.0)
       Using coffee-script-source (1.6.3)
       Using execjs (1.4.0)
       Using coffee-script (2.2.0)
       Using thor (0.18.1)
       Using railties (4.0.0)
       Using coffee-rails (4.0.0)
       Using hike (1.2.3)
       Using jbuilder (1.0.2)
       Using jquery-rails (2.2.1)
       Using json (1.8.0)
       Using pg (0.15.1)
       Using bundler (1.3.2)
       Using tilt (1.4.1)
       Using sprockets (2.10.0)
       Using sprockets-rails (2.0.0)
       Using rails (4.0.0)
       Using rails_serve_static_assets (0.0.1)
       Using rails_stdout_logging (0.0.1)
       Using rails_12factor (0.0.2)
       Using rdoc (3.12.2)
       Using sass (3.2.9)
       Using sass-rails (4.0.0)
       Using sdoc (0.3.20)
       Using turbolinks (1.1.1)
       Using uglifier (2.1.1)
       Your bundle is complete! It was installed into ./vendor/bundle
       Cleaning up the bundler cache.
-----> Writing config/database.yml to read from DATABASE_URL
-----> Preparing app for Rails asset pipeline
       Running: rake assets:precompile
       Asset precompilation completed (7.52s)
       Cleaning assets
-----> WARNINGS:
       You have not declared a Ruby version in your Gemfile.
       To set your Ruby version add this line to your Gemfile:
       ruby '1.9.3'
       # See https://devcenter.heroku.com/articles/ruby-versions for more information."
-----> Discovering process types
       Procfile declares types      -> (none)
       Default types for Ruby/Rails -> console, rake, web, worker

-----> Compiled slug size: 20.0MB
-----> Launching... done, v8
       http://quiet-ocean-3277.herokuapp.com deployed to Heroku

To git@heroku.com:quiet-ocean-3277.git
   2d25f33..322b9e4  master -> master

除了应用程序崩溃之外,一切看起来都不错。在日志中:

2013-07-17T23:56:21.430674+00:00 heroku[web.1]: State changed from starting to crashed
2013-07-18T00:00:36.148404+00:00 heroku[web.1]: State changed from crashed to starting
2013-07-18T00:00:39.933663+00:00 heroku[web.1]: Starting process with command `bin/rails server -p 40617 -e $RAILS_ENV`
2013-07-18T00:00:41.477904+00:00 app[web.1]: /usr/bin/env: ruby1.9.1: No such file or directory
2013-07-18T00:00:42.674144+00:00 heroku[web.1]: Process exited with status 127

为什么它调用 Ruby 1.9.1 并崩溃?这是gemfile:

source 'https://rubygems.org'
#ruby '1.9.3'
#ruby-gemset=railstutorial_rails_4_0

gem 'rails', '4.0.0'

group :development do
  gem 'sqlite3', '1.3.7'
end

gem 'sass-rails', '4.0.0'
gem 'uglifier', '2.1.1'
gem 'coffee-rails', '4.0.0'
gem 'jquery-rails', '2.2.1'
gem 'turbolinks', '1.1.1'
gem 'jbuilder', '1.0.2'

group :doc do
  gem 'sdoc', '0.3.20', require: false
end

group :production do
  gem 'pg', '0.15.1'
  gem 'rails_12factor', '0.0.2'
end
4

3 回答 3

7

我有同样的问题。我通过在 3 个文件中替换 "#!/usr/bin/env ruby​​1.9.1" => "#!/usr/bin/env ruby​​" 解决了这个问题:

  • 箱/包
  • 垃圾箱/导轨
  • 垃圾箱/耙子
于 2013-08-23T17:29:10.160 回答
1

简短的回答,您需要在 Gemfile中指定 ruby​​ 版本。看起来您已将其注释掉。Heroku默认使用ruby​​ v1.9.1

此答案链接到一个要点,其中包含您可以遵循的步骤,以确保您的本地和 heroku 设置正确。

于 2013-07-18T02:11:15.517 回答
0

我建议放置:

ruby '2.0.0'

在您的 Gemfile 中朝向顶部。Ruby 2.0.0 包含许多提高性能的更改,并且它与 Rails 4 配合得更好。

于 2013-08-27T04:21:04.377 回答