小编Dmi*_*nik的帖子

通过SSL发布UTF-8时,HEROKU上的"EOFError:文件结束"

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

ruby https ruby-on-rails heroku ruby-on-rails-3

8
推荐指数
1
解决办法
4748
查看次数

Elasticsearch问题:无法连接AWS elasticsearch服务

我有一个关于配置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

6
推荐指数
1
解决办法
888
查看次数

在OSX上安装Visual Ruby时出错

我正在尝试在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)

ruby gtk macos homebrew

4
推荐指数
2
解决办法
1707
查看次数