ruby-on-rails-4 - 出现错误 - #在为 google-api-ruby-client-0.10.0 gem 配置代理时
问题描述
我正在使用google-drive-ruby gem 将 Google-Drive 集成到我的 rails 项目中。google-drive-ruby gem 运行时依赖于google-api-ruby-client gem。
我正在尝试在http_client_adapter.rb的configure_client方法中配置代理
def configure_client(client, request)
client.transparent_gzip_decompression = true
if true #request.options.proxy
#proxy = request.options.proxy
proxy = URI('http://proxy.xyz.com:8080')
proxy_user = '*******'
proxy_pass = '*******'
client.proxy = sprintf('%s:%d', proxy.host, proxy.port)
if proxy_user && proxy_pass
client.set_proxy_auth proxy_user, proxy_pass
end
end
end
错误跟踪如下:
Google::Apis::ServerError: 不支持的代理#来自 D:/g_drive_local/BMajor/gems/google-api-ruby-client-0100/google-api-ruby-client-0.10.0/lib/google/apis/core /upload.rb:231:in rescue in send_start_command'
from D:/g_drive_local/BMajor/gems/google-api-ruby-client-0100/google-api-ruby-client-0.10.0/lib/google/apis/core/upload.rb:214:in
send_start_command' 来自 D:/g_drive_local/BMajor/gems/google-api-ruby-client-0100/google-api-ruby-client-0.10.0/lib/google/apis/core/ upload.rb:279:in execute_once'
from D:/g_drive_local/BMajor/gems/google-api-ruby-client-0100/google-api-ruby-client-0.10.0/lib/google/apis/core/http_command.rb:107:in
block (2 levels) in execute' from D:/Ruby/ruby gems/ruby/lib/ruby/gems/2.0.0/gems/retriable-3.1.2/lib/retriable.rb: 61:in block in retriable'
from D:/Ruby/ruby gems/ruby/lib/ruby/gems/2.0.0/gems/retriable-3.1.2/lib/retriable.rb:56:in
times' 来自 D:/Ruby/ruby gems/ruby/lib/ruby/gems/2.0.0/gems/retriable-3.1.2/lib/retriable.rb:56:in retriable'
from D:/g_drive_local/BMajor/gems/google-api-ruby-client-0100/google-api-ruby-client-0.10.0/lib/google/apis/core/http_command.rb:104:in
block in execute' 来自 D: /Ruby/ruby gems/ruby/lib/ruby/gems/2.0.0/gems/retriable-3.1.2/lib/retriable.rb:61:inblock in retriable'
from D:/Ruby/ruby gems/ruby/lib/ruby/gems/2.0.0/gems/retriable-3.1.2/lib/retriable.rb:56:in
次'来自 D:/Ruby/ruby gems/ruby/lib/ruby/gems/2.0.0/gems/retriable-3.1.2/lib/retriable.rb:56:in retriable'
from D:/g_drive_local/BMajor/gems/google-api-ruby-client-0100/google-api-ruby-client-0.10.0/lib/google/apis/core/http_command.rb:96:in
execute' 来自 D:/g_drive_local/BMajor/ gems/google-api-ruby-client-0100/google-api-ruby-client-0.10.0/lib/google/apis/core/base_service.rb:353:in execute_or_queue_command'
from D:/g_drive_local/BMajor/gems/google-api-ruby-client-0100/google-api-ruby-client-0.10.0/generated/google/apis/drive_v3/service.rb:579:in
create_file' 来自 D:/g_drive_local/BMajor/gems /google-drive-ruby-200/google-drive-ruby-2.0.0/lib/google_drive/session.rb:409:in upload_from_source'
from D:/g_drive_local/BMajor/gems/google-drive-ruby-200/google-drive-ruby-2.0.0/lib/google_drive/session.rb:308:in
upload_from_file' from (irb):2 from D:/Ruby/ruby gems/ruby/lib /ruby/gems/2.0.0/gems/railties-4.0.4/lib/rails/commands/console.rb:90:in start'
from D:/Ruby/ruby gems/ruby/lib/ruby/gems/2.0.0/gems/railties-4.0.4/lib/rails/commands/console.rb:9:in
start' 从 D:/Ruby/ruby gems/ruby/lib/ruby/gems/2.0 .0/gems/railties-4.0.4/lib/rails/commands.rb:62:in<top (required)>'
from bin/rails:4:in
需要'来自 bin/rails:4:in `'
解决方案
通过一些尝试和尝试,我自己解决了这个问题。这就是我在http_client_adapter.rb中配置代理的方式:
def configure_client(client, request)
client.transparent_gzip_decompression = true
if true #request.options.proxy
#proxy = request.options.proxy
proxy = URI('http://proxy.xyz.com:8080')
proxy_user = '*******'
proxy_pass = '*******'
client.proxy = 'http://username:password@hostname:port'
if proxy_user && proxy_pass
client.set_proxy_auth proxy_user, proxy_pass
end
end
end
推荐阅读
- unit-testing - 使用 jenkins 生成 dotcover 覆盖率报告
- java - 如何在android中为自定义视图创建setter和getter
- java - 查找所有级别的 Children 并添加到 ArrayList
- python-3.x - 错误:格式:“svg”无法识别。使用以下之一:
- python - 来自 tkinter gui 的 .exe 不运行(pyinstaller)
- ios - 在iOS中将字符串转换为特定的日期格式为零
- .net - MultipartReader 糟糕的性能还是我做错了什么?
- vb.net - 在多显示器设置中,如何识别 Winform 显示在哪个显示器上?
- python - 找不到页面 404 - Django
- python - 在布尔熊猫系列中查找真后假指数