作为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包含以下宝石:
require 'rubygems'
require 'nokogiri'
require 'open-uri'
require 'date'
require 'json'
我的直觉告诉我,我应该在Gemfile中包含所有宝石,但是当我执行我的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/
我做错了什么?
答案 0 :(得分:2)
你的崩溃提到
cannot load such file -- nokogiri
您的Gemfile
应列出您所需的所有宝石,否则Heroku无法加载它们。尝试将Nokogiri添加到您的Gemfile中。如上所述,您不需要添加date,open-uri或JSON,因为它们是标准库。