2016-12-27 2 views
0

Я пытаюсь сделать свой очень первым Развертывание Ruby/Sinatra (yay!), Сайт "to do list" app в Heroku. Код прекрасно работает в ОС Windows и Ubuntu средахКак я могу разместить это приложение Ruby/Sinatra в Heroku?

My humble app

, но у меня возникают проблемы на самом деле успешного развертывания.

Я пробовал следовать this tutorial используя собственный код. Когда я выполняю sudo git push heroku master, мне сообщают, что приложение развернуто в Heroku, но когда я перехожу к URL-адресу, который он дает, он не работает. Мне может понадобиться помощь с my (one-line) Procfile. Кроме того, «предупреждение» (означает ли это, что развертывание не произошло?) Говорит, что я не объявлял свою версию Ruby. Я попытался использовать rvm 2.2.5 и положил gem 'ruby', '2.2.5' в мой Gemfile, но поставщик не установит, если я объявлю версию Ruby (она говорит, что у меня нет установленной версии Ruby, что, безусловно, мне кажется).

sudo git push heroku master 
Counting objects: 5, done. 
Compressing objects: 100% (4/4), done. 
Writing objects: 100% (5/5), 419 bytes | 0 bytes/s, done. 
Total 5 (delta 3), reused 1 (delta 0) 
remote: Compressing source files... done. 
remote: Building source: 
remote: 
remote: -----> Ruby app detected 
remote: -----> Compiling Ruby/Rack 
remote: -----> Using Ruby version: ruby-2.2.6 
remote: -----> Installing dependencies using bundler 1.13.6 
remote:  Running: bundle install --without development:test --path vendor/bundle --binstubs vendor/bundle/bin -j4 --deployment 
remote:  Warning: the running version of Bundler (1.13.6) is older than the version that created the lockfile (1.13.7). We suggest you upgrade to the latest version of Bundler by running `gem install bundler`. 
remote:  Fetching gem metadata from https://rubygems.org/......... 
remote:  Fetching version metadata from https://rubygems.org/. 
remote:  Using diff-lcs 1.2.5 
remote:  Using rack 1.6.5 
remote:  Using rspec-support 3.5.0 
remote:  Using ruby 0.1.0 
remote:  Using tilt 2.0.5 
remote:  Using bundler 1.13.6 
remote:  Using rspec-core 3.5.4 
remote:  Using rspec-expectations 3.5.0 
remote:  Using rspec-mocks 3.5.0 
remote:  Using rack-protection 1.5.3 
remote:  Using sinatra 1.4.7 
remote:  Bundle complete! 7 Gemfile dependencies, 11 gems now installed. 
remote:  Gems in the groups development and test were not installed. 
remote:  Bundled gems are installed into ./vendor/bundle. 
remote:  Bundle completed (1.79s) 
remote:  Cleaning up the bundler cache. 
remote:  Warning: the running version of Bundler (1.13.6) is older than the version that created the lockfile (1.13.7). We suggest you upgrade to the latest version of Bundler by running `gem install bundler`. 
remote:  Removing dbm (0.5) 
remote: -----> Detecting rake tasks 
remote: 
remote: ###### WARNING: 
remote:  You have not declared a Ruby version in your Gemfile. 
remote:  To set your Ruby version add this line to your Gemfile: 
remote:  ruby '2.2.6' 
remote:  # See https://devcenter.heroku.com/articles/ruby-versions for more information. 
remote: 
remote: -----> Discovering process types 
remote:  Procfile declares types  -> web 
remote:  Default types for buildpack -> console, rake 
remote: 
remote: -----> Compressing... 
remote:  Done: 17.3M 
remote: -----> Launching... 
remote:  Released v5 
remote:  https://gentle-sea-73583.herokuapp.com/ deployed to Heroku 
remote: 
remote: Verifying deploy... done. 
To https://git.heroku.com/gentle-sea-73583.git 
    995b763..014acd8 master -> master 

Я также попытался выполнения sudo heroku run ruby todo.rb (todo.rb мой сервер приложений), и я получаю это:

sudo heroku run ruby todo.rb 
Running ruby todo.rb on ⬢ gentle-sea-73583... up, run.3103 (Free) 
/app/vendor/ruby-2.2.6/lib/ruby/2.2.0/yaml/dbm.rb:2:in `require': cannot load such file -- dbm (LoadError) 
    from /app/vendor/ruby-2.2.6/lib/ruby/2.2.0/yaml/dbm.rb:2:in `<top (required)>' 
    from /app/lib/task_store.rb:2:in `require' 
    from /app/lib/task_store.rb:2:in `<top (required)>' 
    from todo.rb:7:in `require' 
    from todo.rb:7:in `<main>' 

Может быть, мне нужно создать YAML на Heroku каким-то образом? Я не вижу, как ...

ответ

1

Удалить gem 'dbm' из вашего Gemfile.

Этот драгоценный камень dbm работает только с jruby, и вам это не нужно, поскольку вы используете yaml/dbm.

+0

Ну, я уже взял драгоценный камень «dbm» из моего Gemfile. Но ты дал мне идею. Фактически, я просто копировал зависимость yaml/dbm от того, что я нашел в Интернете, и не знал, почему мне это может понадобиться. Поэтому я удалил его из task_store.rb и перераспределил, и теперь он работает! См. Http://simple-to-do.herokuapp.com/ – globewalldesk

Смежные вопросы