Search code examples
jsonrubyrubygemsslack

Can't use a gem because json 2.1.0 is activated, but the gem requires 1.8.6


I've been trying to figure out how to get the slack-ruby-client gem to work in my Ruby script, but I'm having issues when it comes to json, apparently.

Here's what I'm getting:

[user:ubuntu:~/Documents]$ irb                                                                                                                  4:43PM/07.08
2.5.1 :001 > require 'slack-ruby-client'
Traceback (most recent call last):
       11: from /home/user/.rvm/rubies/ruby-2.5.1/bin/irb:11:in `<main>'
       10: from (irb):1
        9: from /home/user/.rvm/rubies/ruby-2.5.1/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:39:in `require'
        8: from /home/user/.rvm/rubies/ruby-2.5.1/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:135:in `rescue in require'
        7: from /home/user/.rvm/rubies/ruby-2.5.1/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:135:in `require'
        6: from /home/user/.rvm/gems/ruby-2.5.1/gems/slack-ruby-client-0.11.1/lib/slack-ruby-client.rb:13:in `<top (required)>'
        5: from /home/user/.rvm/rubies/ruby-2.5.1/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:90:in `require'
        4: from /home/user/.rvm/rubies/ruby-2.5.1/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:90:in `each'
        3: from /home/user/.rvm/rubies/ruby-2.5.1/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:91:in `block in require'
        2: from /home/user/.rvm/rubies/ruby-2.5.1/lib/ruby/2.5.0/rubygems/specification.rb:1434:in `activate'
        1: from /home/user/.rvm/rubies/ruby-2.5.1/lib/ruby/2.5.0/rubygems/specification.rb:2315:in `check_version_conflict'
Gem::LoadError (can't activate json-1.8.6, already activated json-2.1.0)
2.5.1 :002 > exit

I cannot uninstall json v2.1.0 for whatever reason. Although it says it uninstalled successfully when running gem uninstall json v2.1.0, it still shows up when I look at the list of gems and search for json.

[user:ubuntu:~/Documents]$ gem uninstall json -v 2.1.0                                                                                          4:45PM/07.08
Successfully uninstalled json-2.1.0
[user:ubuntu:~/Documents]$ gem list | grep -i json                                                                                              4:47PM/07.08
json (default: 2.1.0, 1.8.6)
multi_json (1.13.1, 1.11.2)

and then the error still persists. I've tried to manually install 1.8.6 to see if it would override the default, but nothing.

Any suggestions would be greatly appreciated.

Attempt #1

[user:~/Documents]$ gem uninstall json                                                                                                   2:52PM/07.09

You have requested to uninstall the gem:
        json-1.8.6

activesupport-4.2.4 depends on json (>= 1.7.7, ~> 1.7)
activesupport-4.2.3 depends on json (>= 1.7.7, ~> 1.7)
rdoc-4.2.0 depends on json (~> 1.4)
sdoc-0.4.2 depends on json (>= 1.7.7, ~> 1.7)
sdoc-0.4.1 depends on json (>= 1.7.7, ~> 1.7)
If you remove this gem, these dependencies will not be met.
Continue with Uninstall? [yN]  y
Successfully uninstalled json-1.8.6

[user:ubuntu:~/Documents/rubyscript]$ bundle install                                                                                             2:56PM/07.09
Fetching gem metadata from https://rubygems.org/.
Resolving dependencies...
Using bundler 1.16.2
Fetching json 1.8.6
Installing json 1.8.6 with native extensions
Bundle complete! 1 Gemfile dependency, 2 gems now installed.
Use `bundle info [gemname]` to see where a bundled gem is installed.
[user:ubuntu:~/Documents/rubyscript]$ irb                                                                                                        2:56PM/07.09
2.5.1 :001 > require 'slack-ruby-client'
Traceback (most recent call last):
       11: from /home/user/.rvm/rubies/ruby-2.5.1/bin/irb:11:in `<main>'
       10: from (irb):1
        9: from /home/user/.rvm/rubies/ruby-2.5.1/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:39:in `require'
        8: from /home/user/.rvm/rubies/ruby-2.5.1/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:135:in `rescue in require'
        7: from /home/user/.rvm/rubies/ruby-2.5.1/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:135:in `require'
        6: from /home/user/.rvm/gems/ruby-2.5.1/gems/slack-ruby-client-0.11.1/lib/slack-ruby-client.rb:13:in `<top (required)>'
        5: from /home/user/.rvm/rubies/ruby-2.5.1/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:90:in `require'
        4: from /home/user/.rvm/rubies/ruby-2.5.1/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:90:in `each'
        3: from /home/user/.rvm/rubies/ruby-2.5.1/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:91:in `block in require'
        2: from /home/user/.rvm/rubies/ruby-2.5.1/lib/ruby/2.5.0/rubygems/specification.rb:1434:in `activate'
        1: from /home/user/.rvm/rubies/ruby-2.5.1/lib/ruby/2.5.0/rubygems/specification.rb:2315:in `check_version_conflict'
Gem::LoadError (can't activate json-1.8.6, already activated json-2.1.0)
2.5.1 :002 > exit
[user:ubuntu:~/Documents/rubyscript]$ cat Gemfile                                                                                                2:56PM/07.09
source 'https://rubygems.org'

gem 'json', '=1.8.6'              

Solution

  • First, try uninstalling the gem altogether for all versions:

    gem uninstall json 
    

    Then install the specific version required, also make sure your Gemfile specifies a specific version for the gem:

    gem 'json', '=1.8.6'
    

    This should fix the issue