ruby中rails的gem和bundle配置系統(tǒng)代理

ruby的gem默認(rèn)不會(huì)使用系統(tǒng)的代理,使用代理每次都需要添加參數(shù)--http-proxy,感覺(jué)很麻煩,搜索了一下也沒(méi)找到什么好的辦法。后來(lái)找到了gem的代碼,是使用ruby寫(xiě)的,簡(jiǎn)單修改一下就可以永久設(shè)置好gem的代理,不用每次都加上代理的參數(shù)了。

gem的代理

  • 首先找到gem文件的位置,一般都在ruby的安裝目錄下,如C:\RailsInstaller\Ruby2.3.0\bin,如果找不到可以在命令行使用指令找,win下是where gem,linux下是which gem
  • 然后打開(kāi)gem的文件,win是gem.cmd,linux是gem。然后在文件最后面找到如下代碼
begin
  Gem::GemRunner.new.run args
rescue Gem::SystemExitException => e
  exit e.exit_code
end

在begin語(yǔ)句的下面添加一行args += ['--http-proxy','http://x.x.x.x:port'],把里面的ip和端口換成自己的。gem文件修改后如下:

begin
  args += ['--http-proxy','http://x.x.x.x:port']
  Gem::GemRunner.new.run args
rescue Gem::SystemExitException => e
  exit e.exit_code
end

保存后再使用gem安裝時(shí)就不用每次都輸入代理的參數(shù)了。

bundle的代理

使用rails新建工程后會(huì)自動(dòng)執(zhí)行bundle install,可能會(huì)由于代理問(wèn)題無(wú)法訪問(wèn)https://rubygems.org而導(dǎo)致失敗,提示Retrying fetcher due to error (4/4): Bundler::HTTPError Could not fetch specs from https://rubygems.org/,可能是https://rubygems.org無(wú)法訪問(wèn)(可以用瀏覽器打開(kāi)試試),也可能是系統(tǒng)代理的問(wèn)題(如果需要通過(guò)代理上網(wǎng)多半是這個(gè)原因)。

第一種的解決辦法是配置淘寶的source,找到工程所在的目錄下的GemfileGemfile.lock兩個(gè)文件,將其中的source修改為http://ruby.taobao.org/。

第二種的解決辦法是在系統(tǒng)環(huán)境變量中添加http_proxy,值為http://x.x.x.x:port。win的環(huán)境變量在控制面板->系統(tǒng)和安全->系統(tǒng)->高級(jí)系統(tǒng)設(shè)置->環(huán)境變量中,在下方的系統(tǒng)環(huán)境變量處新建即可。linux是直接修改/etc/environment,添加一行http_proxy="http://x.x.x.x:port",保存后執(zhí)行一下source /etc/environment即可。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容