小编Pet*_*ack的帖子

为什么我得到间歇性的Excon :: Error :: Socket:getaddrinfo:没有与hostname相关的地址(SocketError)?

Rails 4 - Ruby 2.2.2 - 亚马逊AWS S3 - 蜻蜓1.0.12 - dragonfly-s3_data_store 1.2 - fog-aws 0.10.0

大约99%的时间我们都没有问题.这个问题通常只发生在使用率很高的时候,但我发现只有几乎没有用户才会发生.抛出错误的行:

 # excon/lib/excon/socket.rb
 # line 100 inside the connection method.
 addrinfo = ::Socket.getaddrinfo(*args)
Run Code Online (Sandbox Code Playgroud)

错误发生在应用程序的任何地方.有时在没有远程连接时会看到错误. - 我无法再验证这一点.

我使用Rails记录器来捕获传入的参数,并且传递和失败之间似乎没有区别.这里有些例子:

 # PASS
 ["s3.amazonaws.com", 443, 0, 1, nil, nil, false]
 ["mybucket.s3.amazonaws.com", 443, 0, 1, nil, nil, false]

 # FAIL
 ["mybucket.s3-us-west-1.amazonaws.com", 443, 0, 1, nil, nil, false]
Run Code Online (Sandbox Code Playgroud)

我遇到了几个让我相信excon gem需要更新的论坛.我将Excon gem从0.45.4升级到0.51.0.除此之外,我还将Fog gem从1.36.0更新为1.38.0.

升级后,错误从"getaddrinfo:名称或服务未知(SocketError)"变为"Excon :: Error :: Socket:getaddrinfo:没有与主机名关联的地址(SocketError)"

为失败的响应捕获的URL与通过的其中一个URL不同.我会进一步研究这个问题.

更新:

dragonfly初始化程序指定与失败的路径相同的路径,因为url_host会覆盖我决定删除它的默认功能.

 # myapp/config/initializers/dragonfly.rb
 ...
 url_host: 'mybucket.s3-us-west-1.amazonaws.com'
Run Code Online (Sandbox Code Playgroud)

这导致没有变化.仍然使用相同的URL,并且是唯一失败的URL.

ruby sockets ruby-on-rails excon

16
推荐指数
1
解决办法
1357
查看次数

通过本地网络将Ruby/Rails连接到ipad

主机IP:192.168.1.2

ipad ip:192.168.1.3

在我的主机上工作时,网址是:localhost.dev:3000/sign_in/当我尝试通过192.168.1.2.dev:3000/sign_in连接到我的ipad时连接超时.

克服我的问题的一种方法是将ipad上的wifi设置更改为手动代理:

服务器:192.168.1.2

港口:3000

现在192.168.1.2.dev工作!有点...

我现在可以登录到我的网站,但是js似乎被破坏了,ipad将网址更改为:(http://2.dev/page)通常它会是(http://localhost.dev:3000/page)我认为这是主机局域网的最后一位数.我们使用一些外部托管的js文件.这可能是它破裂的原因.启用代理时,我无法浏览互联网(在ipad上).我错过了什么?

(192.168.1.2:3000不适用于任何设备..)

进一步调试后,我认为这是因为通过代理的互联网连接.

我的日志吐出的确切错误是:

 CONNECT configuration.apple.com:443 HTTP/1.1
 Host: configuration.apple.com
 User-Agent: ubd/289.3 CFNetwork/672.1.14 Darwin/14.0.0
 Connection: keep-alive
 Proxy-Connection: keep-alive

 2015-04-20 11:52:54] ERROR TypeError: can't dup NilClass
 /home/pete/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/webrick/httprequest.rb:279:in `dup'
Run Code Online (Sandbox Code Playgroud)

所以我想我必须启用linux来转发我的互联网?

ruby ruby-on-rails ipad

10
推荐指数
4
解决办法
2243
查看次数

如何将°转换为可读日期?

我正在转换一个80年代制作的数据库,似乎某些表的日期存储为字符.有2列数据.第一列的数据格式如下:

°& C2 024
Run Code Online (Sandbox Code Playgroud)

第二列是纯文本描述:

Description of some stuff
Run Code Online (Sandbox Code Playgroud)

数据将导入到"表"视图中.C2定义表头,024定义行和°并定义表数据被拉入的日期.例:

 Date: 2/21/2007
       C1                   C2                       C3                   C4
 000
 003
 006
 009
 012
 015
 018
 021
 024                        Description of some stu...
 027
Run Code Online (Sandbox Code Playgroud)

我尝试将日期转换为十六进制,并将十六进制与字符映射进行比较而没有运气.

我已按照以下说明尝试使用unix日期:http://smallbusiness.chron.com/convert-date-hexadecimal-56217.html但没有成功.

样本值和已知日期:

°&  -  2/21/2007
¬&  -  2/7/2007
+(  -  2/6/2007
ª&  -  2/5/2007
Run Code Online (Sandbox Code Playgroud)

sql date pervasive pervasive-sql

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

Ruby中的$ /表示什么?

我正在阅读有关Ruby序列化的信息(http://www.skorks.com/2010/04/serializing-and-deserializing-objects-with-ruby/),并且遇到了以下代码.$ /是什么意思?我假设$指的是一个对象?

 array = []
 $/="\n\n"
 File.open("/home/alan/tmp/blah.yaml", "r").each do |object|
   array << YAML::load(object)
 end
Run Code Online (Sandbox Code Playgroud)

ruby syntax operator-keyword

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

在为Postgres SQL选择情况下,如何使用like运算符?

我想编写一个带有CASE WHEN子句的SQL语句,该子句使用LIKE运算符,但是我不确定如何正确设置该语句的格式。

 SELECT
   services.id,
   (CASE services.description
     WHEN LIKE '%-'
       THEN services.amount * -1
     ELSE services.amount
   END) AS service_amount
 FROM services
Run Code Online (Sandbox Code Playgroud)

postgresql case

4
推荐指数
1
解决办法
3889
查看次数

如何在 postgres 的 where 子句中调用声明的数组变量?

我正在尝试从共享相同 family_id 的所有狗构建一个声明的数组,并使用该数组查询 dog_characteristics 表。

CREATE OR REPLACE FUNCTION update_dog_characteristics_guarantor_id()
  RETURNS trigger AS $$
  DECLARE dog_ids INT[];

  BEGIN
    SELECT id into dog_ids FROM dogs WHERE dogs.family_id = OLD.id;
    IF ((OLD.family_id IS NOT NULL) && ((SELECT COUNT(*) FROM dog_ids) > 0)) THEN
      UPDATE
        dog_characteristics
      SET
        guarantor_id = NEW.guarantor_id
      WHERE
        dog_characteristics.account_id = OLD.account_id
        AND dog_characteristics.dog_id IN ANY(dog_ids);
      RETURN NULL;
    END IF;
    RETURN NULL;
  END;
$$ LANGUAGE plpgsql;
Run Code Online (Sandbox Code Playgroud)

我试过的

 AND dog_characteristics.dog_id = ANY(dog_ids);
 AND dog_characteristics.dog_id = ANY(dog_ids::int[]);
 AND dog_characteristics.dog_id IN (dog_ids::int[]);
 AND dog_characteristics.dog_id …
Run Code Online (Sandbox Code Playgroud)

arrays postgresql plpgsql

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