digitig
digitig

Reputation: 2130

Forcing older version of dependent gem

The app I am developing has suddenly stopped deploying to Heroku, with the error:

remote:        Gem::InstallError: execjs requires Ruby version >= 2.0.0.                        
remote:        An error occurred while installing execjs (2.5.1), and Bundler cannot continue.  
remote:        Make sure that `gem install execjs -v '2.5.1'` succeeds before bundling.         
remote:  !                                                                                      
remote:  !     Failed to install gems via Bundler.                                              
remote:  !                                                                                      
remote:                                                                                         
remote:  !     Push rejected, failed to compile Ruby app                                        

Ruby 2.0 is not a viable option for me (I have no choice but develop on MS Windows, and too much Ruby 2.0 stuff didn't work for Windows last time I looked), but I don't think I need execjs -v2.5.1. I don't call it up explicitly in my gemfile, and if I run gem dependency execjs --reverse-dependencies I get:

Gem execjs-1.4.0                            
  multi_json (~> 1.0)                       
  rake (>= 0, development)                  
  Used by                                   
    coffee-script-2.3.0 (execjs (>= 0))     
    coffee-script-2.2.0 (execjs (>= 0))     
    sprockets-2.12.3 (execjs (~> 1.0, develo
    sprockets-2.11.0 (execjs (~> 1.0, develo
    sprockets-2.1.3 (execjs (~> 1.0, develop
    uglifier-2.5.3 (execjs (>= 0.3.0))      
    uglifier-1.2.6 (execjs (>= 0.3.0))      

Gem execjs-2.2.1                            
  rake (>= 0, development)                  
  Used by                                   
    coffee-script-2.3.0 (execjs (>= 0))     
    coffee-script-2.2.0 (execjs (>= 0))     
    uglifier-2.5.3 (execjs (>= 0.3.0))      
    uglifier-1.2.6 (execjs (>= 0.3.0))      

Gem execjs-2.2.2                            
  rake (>= 0, development)                  
  Used by                                   
    coffee-script-2.3.0 (execjs (>= 0))     
    coffee-script-2.2.0 (execjs (>= 0))     
    uglifier-2.5.3 (execjs (>= 0.3.0))      
    uglifier-1.2.6 (execjs (>= 0.3.0))      

Gem execjs-2.3.0                            
  rake (>= 0, development)                  
  Used by                                   
    coffee-script-2.3.0 (execjs (>= 0))     
    coffee-script-2.2.0 (execjs (>= 0))     
    uglifier-2.5.3 (execjs (>= 0.3.0))      
    uglifier-1.2.6 (execjs (>= 0.3.0))      

Gem execjs-2.4.0                            
  rake (>= 0, development)                  
  Used by                                   
    coffee-script-2.3.0 (execjs (>= 0))     
    coffee-script-2.2.0 (execjs (>= 0))     
    uglifier-2.5.3 (execjs (>= 0.3.0))      
    uglifier-1.2.6 (execjs (>= 0.3.0))

It looks as if I don't need anything later than v2.4.0 (am I reading that correctly?) but how do I tell my gems to use an old version, not the latest?

Upvotes: 3

Views: 526

Answers (2)

Joshua Arvin Lat
Joshua Arvin Lat

Reputation: 1039

You can specify the gem version in your Gemfile like this:

gem "haml-rails", "~> 0.3.4"

or (specific version)

gem "haml-rails", "0.3.4"

For more information, click here:
Meaning of tilde-greater-than (~>) in version requirement?

Upvotes: 2

Thyago B. Rodrigues
Thyago B. Rodrigues

Reputation: 630

Try locking your execjs version in your Gemfile:

gem 'execjs', '2.4.0'

Upvotes: 3

Related Questions