Невозможно активировать sinatra-1.4.7, поскольку стойка-2.0.1 конфликтует с стойкой (~> 1,5)

Я только что обновил свою ОС от Ubuntu 14.04 LTS до 16.04, и я работал над проектом Ruby Sinatra. Дело в том, что после обновления я попытался запустить сервер, а затем localhost в браузере, я получил эту ошибку   Ошибка загрузки

Something went wrong while loading app.rb
Gem::ConflictError: Unable to activate sinatra-1.4.7, because rack-2.0.1 conflicts with rack (~> 1.5)

/usr/lib/ruby/2.3.0/rubygems/specification.rb:2286:in `raise_if_conflicts'
/usr/lib/ruby/2.3.0/rubygems/specification.rb:1407:in `activate'
/usr/lib/ruby/2.3.0/rubygems.rb:196:in `rescue in try_activate'
/usr/lib/ruby/2.3.0/rubygems.rb:193:in `try_activate'
/usr/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:125:in `rescue in require'
/usr/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:40:in `require'
/home/leandro/Downloads/git-master/ruby sinatra/app.rb:1:in `<top (required)>'
/usr/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require'
/usr/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require'
/var/lib/gems/2.3.0/gems/shotgun-0.9.1/lib/shotgun/loader.rb:115:in `inner_app'
/var/lib/gems/2.3.0/gems/shotgun-0.9.1/lib/shotgun/loader.rb:103:in `assemble_app'
/var/lib/gems/2.3.0/gems/shotgun-0.9.1/lib/shotgun/loader.rb:86:in `proceed_as_child'
/var/lib/gems/2.3.0/gems/shotgun-0.9.1/lib/shotgun/loader.rb:31:in `call!'
/var/lib/gems/2.3.0/gems/shotgun-0.9.1/lib/shotgun/loader.rb:18:in `call'
/var/lib/gems/2.3.0/gems/shotgun-0.9.1/lib/shotgun/favicon.rb:12:in `call'
/var/lib/gems/2.3.0/gems/shotgun-0.9.1/lib/shotgun/static.rb:14:in `call'
/var/lib/gems/2.3.0/gems/rack-2.0.1/lib/rack/urlmap.rb:68:in `block in call'
/var/lib/gems/2.3.0/gems/rack-2.0.1/lib/rack/urlmap.rb:53:in `each'
/var/lib/gems/2.3.0/gems/rack-2.0.1/lib/rack/urlmap.rb:53:in `call'
/var/lib/gems/2.3.0/gems/rack-2.0.1/lib/rack/builder.rb:153:in `call'
/var/lib/gems/2.3.0/gems/rack-2.0.1/lib/rack/handler/webrick.rb:86:in `service'
/usr/lib/ruby/2.3.0/webrick/httpserver.rb:140:in `service'
/usr/lib/ruby/2.3.0/webrick/httpserver.rb:96:in `run'
/usr/lib/ruby/2.3.0/webrick/server.rb:296:in `block in start_thread'

Я уже пробовал установить комплект и комплект поставки gem внутри папки, содержащей app.rb. Я также поместил gem "rack", "~ > 1.5" в файл gem, но у меня все еще такая же ошибка. Не могли бы вы мне помочь? спасибо заблаговременно

Ответ 1

У меня была аналогичная проблема (точно такое же сообщение об ошибке) сегодня при попытке запустить набор автоматических тестов, которые я поддерживаю, так или иначе зависящие от Sinatra.

Gem::ConflictError: Unable to activate sinatra-1.4.7, because rack-2.0.1 conflicts with rack (~> 1.5)

Я нашел решение на этом японском (?) блоге

Удаление rack-2.0.1 сделало трюк для меня

> gem uninstall rack

Select gem to uninstall:
 1. rack-2.0.1
 2. rack-1.6.4
 3. All versions

> 1

Successfully uninstalled rack-2.0.1

Ответ 2

У меня такая же проблема, и rack версия 2.0.1 является зависимой от Rails 5, поэтому я не могу ее удалить. Поэтому я нашел другой способ (лучше?).

Убедитесь, что это находится в вашем Gemfile:

gem 'rack', '<2.0'
gem 'sinatra'

... тогда bundle exec <server-start-command> должен работать как ожидалось.

Ответ 3

По какой-то причине это произошло, когда я добавил gem в Gemfile (rspec-sidekiq) и забыл сделать:

 bundle install