rubyのrailsのgemとbundle構成システムエージェント

1907 ワード

rubyのgemはデフォルトではシステムのエージェントは使用されず、エージェントを使用するたびにパラメータ--http-proxyを追加する必要があり、面倒な感じがして、検索しても良い方法が見つかりませんでした.後でgemのコードを見つけて、rubyを使って書いたので、簡単に修正するとgemのエージェントを永久に設定することができて、毎回エージェントのパラメータを加える必要はありません.
gemのエージェント
  • まずgemファイルの場所を見つけて、普通はrubyのインストールディレクトリの下で、例えばC:RailsInstallerRuby 2.3.0bin、もし見つからないならばコマンドラインで命令を使って探すことができて、winの下でwhere gemで、linuxの下でwhich gemです.
  • その後gemのファイルを開き、winはgem.cmd、linuxはgemです.次に、ファイルの一番後ろに次のコード
  • が見つかります.
    begin
      Gem::GemRunner.new.run args
    rescue Gem::SystemExitException => e
      exit e.exit_code
    end
    

    begin文の下に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を使用してインストールすると、エージェントのパラメータを毎回入力する必要はありません.
    bundleのエージェント
    railsを使用して新規プロジェクトを作成するとbundle installが自動的に実行され、エージェントの問題でhttps://rubygems.orgにアクセスできなくなったために失敗する可能性があります.Retrying fetcher due to error (4/4): Bundler::HTTPError Could not fetch specs from https://rubygems.org/にプロンプトが表示されます.https://rubygems.orgにアクセスできない可能性があります(ブラウザで開いてみてください)、システムエージェントの問題である可能性があります(エージェントを通じてインターネットを利用する必要がある場合は、このためです).
    1つ目の解決策は、タオバオのsourceを構成し、工事のあるディレクトリの下のGemfileGemfile.lockの2つのファイルを見つけ、その中のsourceをhttp://ruby.taobao.org/に変更することです.
    第2の解決策は、システム環境変数にhttp_proxy、値http://x.x.x.x:portを追加することである.winの環境変数は、コントロールパネル->システムとセキュリティ->システム->高度なシステム設定->環境変数で、下のシステム環境変数で新規作成できます.linuxは直接/etc/environmentを修正し、1行http_proxy="http://x.x.x.x:port"を追加し、保存してsource /etc/environmentを実行すればよい.