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.
主机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来转发我的互联网?
我正在转换一个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) 我正在阅读有关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) 我想编写一个带有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) 我正在尝试从共享相同 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)