我在heroku上有一个奇怪的错误.为了重现它,我必须在请求体中使用任何UTF-8字符进行大的(超过几KB)HTTPS POST.这是一个例子:
require "net/https"
require "uri"
#Accutally I've ecountered this bug while posting to another server
url = URI.parse("https://api.heroku.com/myapps")
#It's Ukrainian 'oiced velar plosive G' letter
payload = "?"*10000
request = Net::HTTP::Post.new(url.path)
request.body = payload
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.read_timeout = 500
http.start {|http| http.request request }
Run Code Online (Sandbox Code Playgroud)
在本地机器的irb上运行这样的脚本给了我:
#<Net::HTTPUnauthorized 401 Unauthorized readbody=true>
Run Code Online (Sandbox Code Playgroud)
......这是预期的,但是在heroku雪松上,在"heroku控制台"上运行...在大约60秒内,我得到:
EOFError: end of file reached
from /usr/local/lib/ruby/1.9.1/openssl/buffering.rb:145:in `sysread_nonblock'
from /usr/local/lib/ruby/1.9.1/openssl/buffering.rb:145:in `read_nonblock'
from /usr/local/lib/ruby/1.9.1/net/protocol.rb:135:in `rbuf_fill'
from /usr/local/lib/ruby/1.9.1/net/protocol.rb:116:in `readuntil'
from /usr/local/lib/ruby/1.9.1/net/protocol.rb:126:in `readline'
from /usr/local/lib/ruby/1.9.1/net/http.rb:2219:in `read_status_line'
from …Run Code Online (Sandbox Code Playgroud) 我有一个关于配置elasticsearch以连接AWS elasticsearch服务以在生产中运行项目的问题.我的Gemfile:
gem 'searchkick'
gem 'faraday_middleware-aws-signers-v4'
gem 'aws-sdk', '~> 2'
gem "elasticsearch", ">= 1.0.15"
Run Code Online (Sandbox Code Playgroud)
参考:https://github.com/ankane/searchkick
我的config/initializers/elasticsearch.rb文件:
require "faraday_middleware/aws_signers_v4"
ENV["ELASTICSEARCH_URL"] = "https://search-eaterybot-u3yjm6cdn3ogkmv3bcdl5j7poy.ap-southeast-1.es.amazonaws.com/"
Searchkick.client = Elasticsearch::Client.new(
url: ENV["ELASTICSEARCH_URL"],
transport_options: {request: {timeout: 10}}
) do |f|
f.request :aws_signers_v4, {credentials: Aws::Credentials.new(Rails.application.secrets.aws_access_key_id, Rails.application.secrets.aws_secret_access_key),
service_name: "es",
region: "ap-southeast-1"
}
end
Run Code Online (Sandbox Code Playgroud)
当我运行"rake searchkick:reindex:all"时,它显示错误:
Elasticsearch :: Transport :: Transport :: Errors :: Forbidden:[403] {"message":"我们计算的请求签名与您提供的签名不匹配.请检查您的AWS Secret Access Key和签名方法.请参阅服务文档有关详细信息.\n \n此请求的规范字符串应该是\n'GET \n/_aliases \n \naccept-encoding:gzip; q = 1.0,deflate; q = 0.6,identity; q = 0.3 \nhost: search-eaterybot-u3yjm6cdn3ogkmv3bcdl5j7poy.ap-southeast-1.es.amazonaws.com\NX-AMZ-内容-SHA256:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\NX-AMZ-日期:20160914T095023Z \n \naccept编码;主机; X-AMZ-内容 …
ruby ruby-on-rails amazon-web-services elasticsearch searchkick
我正在尝试在OSX上安装Visual Ruby.按照VisualRuby.net上的指南,我做了以下操作.
brew install gtk+
Run Code Online (Sandbox Code Playgroud)
然后:
brew install gtksourceview
Run Code Online (Sandbox Code Playgroud)
最后:
sudo gem install visualruby
Run Code Online (Sandbox Code Playgroud)
这会产生以下错误消息.我不知道出了什么问题,有什么想法吗?
Building native extensions. This could take a while...
ERROR: Error installing visualruby:
ERROR: Failed to build gem native extension.
/Users/ma/.rvm/rubies/ruby-1.9.3-p194/bin/ruby extconf.rb
checking for -Wall option to compiler... yes
checking for -Waggregate-return option to compiler... yes
checking for -Wcast-align option to compiler... yes
checking for -Wextra option to compiler... yes
checking for -Wformat=2 option to compiler... yes
checking for -Winit-self option to compiler... yes
checking for …Run Code Online (Sandbox Code Playgroud)