强制使用依赖 gem 的旧版本

3
我正在开发的应用程序突然无法部署到Heroku,出现以下错误信息:
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不是一个可行的选择(我别无选择,只能在MS Windows上开发,而且上次我查看了太多针对Windows的Ruby 2.0相关信息没有起作用),但我认为我不需要execjs -v2.5.1。我在gemfile中没有显式地调用它,如果我运行gem dependency execjs --reverse-dependencies,我会得到以下结果:

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))

看起来我不需要比v2.4.0更新的版本(我理解的对吗?),但是我该如何告诉我的gems使用旧版本而不是最新版本呢?


通过指定所需的版本,在您的gemfile中添加该宝石。 - RAJ
2个回答

3
尝试在Gemfile中锁定execjs版本:

尝试在Gemfile中锁定execjs版本:

gem 'execjs', '2.4.0'

我以为我已经尝试过了,但回想起来,我不认为我已经提交了它,所以Heroku不会看到它。谢谢。 - digitig
“2.5.0” 应该也可以与 Ruby 版本 “< 2.0.0” 兼容。 - RPinel

2
您可以在Gemfile中指定gem版本,如下所示:
gem "haml-rails", "~> 0.3.4"

或者(特定版本)
gem "haml-rails", "0.3.4"

更多信息请点击这里:
~>在版本要求中的含义是什么?


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接