【问题标题】:Deploying Sinatra app on Heroku giving errors在 Heroku 上部署 Sinatra 应用程序出现错误
【发布时间】:2014-01-20 22:17:00
【问题描述】:

作为 Heroku 的新手,我在将基于 Sinatra 的简单应用程序部署到 Heroku 时遇到了很多麻烦。我已完成所有步骤,并且该应用程序也已部署。我已按照此处给出的说明进行操作:

https://blog.heroku.com/archives/2009/3/5/32_deploy_merb_sinatra_or_any_rack_app_to_heroku

我的 config.ru 文件如下:

require './sinatratest.rb'
run Sinatra::Application

我的 Gemfile 是

source 'https://rubygems.org'
gem 'sinatra'

Sinatratest.rb 如下:

require 'sinatra'
require './test.rb'

get '/'  do
    result = FooRunner.run!

     File.open('output.json','w') do |f|
        f.write result
     end

    content_type :text
    result
end

并且 test.rb 包含以下 gem:

require 'rubygems'
require 'nokogiri'
require 'open-uri'
require 'date'
require 'json'

我的直觉告诉我应该在 Gemfile 中包含所有 gem,但是当我这样做时,我的 Gemfile 看起来像这样,

source 'https://rubygems.org'
gem 'sinatra'
gem 'open-uri'
gem 'nokogiri'
gem 'json'
gem 'date'

当我运行bundle install 时,它给了我以下错误:

$ bundle install
Fetching gem metadata from https://rubygems.org/.........
Fetching gem metadata from https://rubygems.org/..
Resolving dependencies...
Could not find gem 'date (>= 0) x86-mingw32' in the gems available on this
machine.

其余代码是程序的主要计算,所以我没有在这里包含它们。

当我在 localhost:4567 上运行文件时,程序运行完美。

在 Heroku 中运行应用程序时,我在日志文件中收到以下错误(相当广泛,不确定是否重要):

$ heroku logs -t -a young-dusk-4185
←[36m2014-01-20T13:16:18.123135+00:00 heroku[api]:←[0m Enable Logplex by siddhar
thmantri1@gmail.com
←[36m2014-01-20T13:16:18.186772+00:00 heroku[api]:←[0m Release v2 created by sid
dharthmantri1@gmail.com
←[33m2014-01-20T13:16:34+00:00 heroku[slug-compiler]:←[0m Slug compilation start
ed
←[33m2014-01-20T13:18:50+00:00 heroku[slug-compiler]:←[0m Slug compilation start
ed
←[36m2014-01-20T13:19:05.690086+00:00 heroku[api]:←[0m Scale to web=1 by siddhar
thmantri1@gmail.com
←[36m2014-01-20T13:19:05.758285+00:00 heroku[api]:←[0m Deploy 12b370f by siddhar
thmantri1@gmail.com
←[36m2014-01-20T13:19:05.814824+00:00 heroku[api]:←[0m Release v3 created by sid
dharthmantri1@gmail.com
←[33m2014-01-20T13:19:06+00:00 heroku[slug-compiler]:←[0m Slug compilation finis
hed
←[32m2014-01-20T13:19:08.957680+00:00 heroku[web.1]:←[0m Starting process with c
ommand bundle exec rackup config.ru -p 34125←[32m2014-01-20T13:19:11.064788+00:00 app[web.1]:←[0m from /app/vendor/bundle/
ruby/2.0.0/gems/rack-1.5.2/lib/rack/builder.rb:55:in initialize'
←[32m2014-01-20T13:19:11.064788+00:00 app[web.1]:←[0m from /app/config.ru:innew'
←[32m2014-01-20T13:19:11.064788+00:00 app[web.1]:←[0m from /app/config.ru:in <main>'
←[32m2014-01-20T13:19:11.065003+00:00 app[web.1]:←[0m from /app/vendor/bundle/
ruby/2.0.0/gems/rack-1.5.2/lib/rack/builder.rb:49:ineval'
←[32m2014-01-20T13:19:11.065003+00:00 app[web.1]:←[0m from /app/vendor/bundle/
ruby/2.0.0/gems/rack-1.5.2/lib/rack/builder.rb:49:in new_from_string'
←[32m2014-01-20T13:19:11.065003+00:00 app[web.1]:←[0m from /app/vendor/bundle/
ruby/2.0.0/gems/rack-1.5.2/lib/rack/builder.rb:40:inparse_file'
←[32m2014-01-20T13:19:11.065003+00:00 app[web.1]:←[0m from /app/vendor/bundle/
ruby/2.0.0/gems/rack-1.5.2/lib/rack/server.rb:277:in build_app_and_options_from
_config'
←[32m2014-01-20T13:19:11.065003+00:00 app[web.1]:←[0m from /app/vendor/bundle/
ruby/2.0.0/gems/rack-1.5.2/lib/rack/server.rb:314:inwrapped_app'
←[32m2014-01-20T13:19:11.065003+00:00 app[web.1]:←[0m from /app/vendor/bundle/
ruby/2.0.0/gems/rack-1.5.2/lib/rack/server.rb:250:in start'
←[32m2014-01-20T13:19:11.065003+00:00 app[web.1]:←[0m from /app/vendor/bundle/
ruby/2.0.0/gems/rack-1.5.2/lib/rack/server.rb:141:instart'
←[32m2014-01-20T13:19:11.065003+00:00 app[web.1]:←[0m from /app/vendor/bundle/
ruby/2.0.0/gems/rack-1.5.2/bin/rackup:4:in <top (required)>'
←[32m2014-01-20T13:19:11.065003+00:00 app[web.1]:←[0m from /app/vendor/bundle/
ruby/2.0.0/bin/rackup:23:inload'
←[32m2014-01-20T13:19:11.065193+00:00 app[web.1]:←[0m from /app/vendor/bundle/
ruby/2.0.0/bin/rackup:23:in <main>'
←[32m2014-01-20T13:19:11.064788+00:00 app[web.1]:←[0m /app/test.rb:2:inrequire
': cannot load such file -- nokogiri (LoadError)
←[32m2014-01-20T13:19:11.064788+00:00 app[web.1]:←[0m from /app/sinatratest.rb
:2:in require'
←[32m2014-01-20T13:19:11.064788+00:00 app[web.1]:←[0m from /app/vendor/bundle/
ruby/2.0.0/gems/rack-1.5.2/lib/rack/builder.rb:55:ininstance_eval'
←[32m2014-01-20T13:19:11.064788+00:00 app[web.1]:←[0m from /app/config.ru:1:in
block in <main>'
←[32m2014-01-20T13:19:11.064788+00:00 app[web.1]:←[0m from /app/test.rb:2:in'
←[32m2014-01-20T13:19:11.064788+00:00 app[web.1]:←[0m from /app/config.ru:1:in
require'
←[32m2014-01-20T13:19:11.064788+00:00 app[web.1]:←[0m from /app/sinatratest.rb
:2:in'
←[32m2014-01-20T13:19:11.065003+00:00 app[web.1]:←[0m from /app/vendor/bundle/
ruby/2.0.0/gems/rack-1.5.2/lib/rack/server.rb:199:in app'
←[32m2014-01-20T13:19:12.370360+00:00 heroku[web.1]:←[0m Process exited with sta
tus 1
←[32m2014-01-20T13:19:12.381229+00:00 heroku[web.1]:←[0m State changed from cras
hed to starting
←[32m2014-01-20T13:19:12.380342+00:00 heroku[web.1]:←[0m State changed from star
ting to crashed
←[32m2014-01-20T13:19:14.369032+00:00 heroku[web.1]:←[0m Starting process with c
ommandbundle exec rackup config.ru -p 4039←[32m2014-01-20T13:19:15.709187+00:00 app[web.1]:←[0m from /app/test.rb:2:in'
←[32m2014-01-20T13:19:15.709187+00:00 app[web.1]:←[0m from /app/sinatratest.rb
:2:in require'
←[32m2014-01-20T13:19:15.709187+00:00 app[web.1]:←[0m from /app/sinatratest.rb
:2:in'
←[32m2014-01-20T13:19:15.709187+00:00 app[web.1]:←[0m from /app/config.ru:1:in
block in <main>'
←[32m2014-01-20T13:19:15.709187+00:00 app[web.1]:←[0m /app/test.rb:2:inrequire
': cannot load such file -- nokogiri (LoadError)
←[32m2014-01-20T13:19:15.709187+00:00 app[web.1]:←[0m from /app/config.ru:1:in
require'
←[32m2014-01-20T13:19:15.709187+00:00 app[web.1]:←[0m from /app/vendor/bundle/
ruby/2.0.0/gems/rack-1.5.2/lib/rack/builder.rb:55:ininstance_eval'
←[32m2014-01-20T13:19:15.709387+00:00 app[web.1]:←[0m from /app/vendor/bundle/
ruby/2.0.0/gems/rack-1.5.2/lib/rack/builder.rb:49:in new_from_string'
←[32m2014-01-20T13:19:15.709187+00:00 app[web.1]:←[0m from /app/config.ru:innew'
←[32m2014-01-20T13:19:15.709387+00:00 app[web.1]:←[0m from /app/vendor/bundle/
ruby/2.0.0/gems/rack-1.5.2/lib/rack/builder.rb:40:in parse_file'
←[32m2014-01-20T13:19:15.709387+00:00 app[web.1]:←[0m from /app/vendor/bundle/
ruby/2.0.0/bin/rackup:23:inload'
←[32m2014-01-20T13:19:15.709387+00:00 app[web.1]:←[0m from /app/vendor/bundle/
ruby/2.0.0/gems/rack-1.5.2/lib/rack/server.rb:199:in app'
←[32m2014-01-20T13:19:15.709387+00:00 app[web.1]:←[0m from /app/vendor/bundle/
ruby/2.0.0/gems/rack-1.5.2/bin/rackup:4:in'
←[32m2014-01-20T13:19:15.709187+00:00 app[web.1]:←[0m from /app/vendor/bundle/
ruby/2.0.0/gems/rack-1.5.2/lib/rack/builder.rb:55:in initialize'
←[32m2014-01-20T13:19:15.709387+00:00 app[web.1]:←[0m from /app/vendor/bundle/
ruby/2.0.0/gems/rack-1.5.2/lib/rack/builder.rb:49:ineval'
←[32m2014-01-20T13:19:15.709387+00:00 app[web.1]:←[0m from /app/vendor/bundle/
ruby/2.0.0/gems/rack-1.5.2/lib/rack/server.rb:277:in build_app_and_options_from
_config'
←[32m2014-01-20T13:19:15.709187+00:00 app[web.1]:←[0m from /app/config.ru:in'
←[32m2014-01-20T13:19:15.709387+00:00 app[web.1]:←[0m from /app/vendor/bundle/
ruby/2.0.0/gems/rack-1.5.2/lib/rack/server.rb:250:in start'
←[32m2014-01-20T13:19:15.709387+00:00 app[web.1]:←[0m from /app/vendor/bundle/
ruby/2.0.0/gems/rack-1.5.2/lib/rack/server.rb:141:instart'
←[32m2014-01-20T13:19:15.709387+00:00 app[web.1]:←[0m from /app/vendor/bundle/
ruby/2.0.0/gems/rack-1.5.2/lib/rack/server.rb:314:in wrapped_app'
←[32m2014-01-20T13:19:15.709549+00:00 app[web.1]:←[0m from /app/vendor/bundle/
ruby/2.0.0/bin/rackup:23:in'
←[32m2014-01-20T13:19:16.879149+00:00 heroku[web.1]:←[0m Process exited with sta
tus 1
←[32m2014-01-20T13:19:16.890707+00:00 heroku[web.1]:←[0m State changed from star
ting to crashed
←[35m2014-01-20T13:21:08.466196+00:00 heroku[router]:←[0m at=error code=H10 desc
="App crashed" method=GET path=/ host=young-dusk-4185.herokuapp.com request_id=1
ef27ceb-7ee2-47f4-9fb7-cbdcc8fab61c fwd="122.170.61.59" dyno= connect= service=
status=503 bytes=
←[35m2014-01-20T13:21:10.429453+00:00 heroku[router]:←[0m at=error code=H10 desc
="App crashed" method=GET path=/favicon.ico host=young-dusk-4185.herokuapp.com r
equest_id=5897225e-2ef0-4d79-a779-d025e4631b9e fwd="122.170.61.59" dyno= connect
= service= status=503 bytes=
←[35m2014-01-20T13:21:33.653423+00:00 heroku[router]:←[0m at=error code=H10 desc
="App crashed" method=GET path=/favicon.ico host=young-dusk-4185.herokuapp.com r
equest_id=7d0ebe05-3c61-40a5-b68b-8e65aa16ecee fwd="122.170.61.59" dyno= connect
= service= status=503 bytes=
←[35m2014-01-20T13:21:31.920663+00:00 heroku[router]:←[0m at=error code=H10 desc
="App crashed" method=GET path=/ host=young-dusk-4185.herokuapp.com request_id=9
d1cfd4c-df22-40f1-bf62-666794740d89 fwd="122.170.61.59" dyno= connect= service=
status=503 bytes=
←[35m2014-01-20T13:22:12.512932+00:00 heroku[router]:←[0m at=error code=H10 desc
="App crashed" method=GET path=/ host=young-dusk-4185.herokuapp.com request_id=b
c1c445c-c585-49bd-b1f9-a417a8f92b91 fwd="122.170.61.59" dyno= connect= service=
status=503 bytes=
←[35m2014-01-20T13:22:14.459868+00:00 heroku[router]:←[0m at=error code=H10 desc
="App crashed" method=GET path=/favicon.ico host=young-dusk-4185.herokuapp.com r
equest_id=a88c2ad8-1f4f-4010-b485-32456819e054 fwd="122.170.61.59" dyno= connect
= service= status=503 bytes=
←[35m2014-01-20T13:24:10.209495+00:00 heroku[router]:←[0m at=error code=H10 desc
="App crashed" method=GET path=/ host=young-dusk-4185.herokuapp.com request_id=3
24a985d-12e3-41a4-bd8a-02dc32f59332 fwd="122.170.61.59" dyno= connect= service=
status=503 bytes=
←[35m2014-01-20T13:24:11.917667+00:00 heroku[router]:←[0m at=error code=H10 desc
="App crashed" method=GET path=/favicon.ico host=young-dusk-4185.herokuapp.com r
equest_id=d940ebe5-4194-415b-96d8-6d7deba77b25 fwd="122.170.61.59" dyno= connect
= service= status=503 bytes=
←[33m2014-01-20T13:31:35+00:00 herokulink_ref,[object Object],slug-compiler:←[0m    Slug compilation timed
out: 900.760266585 seconds.

您可以在此处访问该应用程序:http://young-dusk-4185.herokuapp.com/

我做错了什么?

【问题讨论】:

  • 你不需要gem 'date' 这是在标准库中
  • @Sirl33tname 我会删除它,但这不会影响我的程序吗?因为它仍然在本地服务器上正常运行。
  • 不是直接的,但是现在 heroku 可以安装你的 gem,你忘了添加 Procfile
  • @Sirl33tname blog.heroku.com/archives/2009/3/5/… 这并不要求我创建 Procfile。更重要的是,该应用程序顺利地被 Heroku 接受。跑步是个问题。

标签: ruby heroku sinatra


【解决方案1】:

您的崩溃提及

cannot load such file -- nokogiri

你的Gemfile 应该列出所有你需要的gem,否则Heroku 不能加载它们。尝试将 Nokogiri 添加到您的 Gemfile。如上所述,您不需要添加日期、open-uri 或 JSON,因为它们是标准库。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-05-15
    • 2012-04-11
    • 2018-08-16
    • 2021-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多