技能 Get: Rails 5 added new aliases
class User < ApplicationRecord
after_create_commit :send_welcome_mail
after_update_commit :send_profile_update_notification
after_destroy_commit :remove_profile_data
def send_welcome_mail
EmailSender.send_welcome_mail(email: email)
end
end
https://github.com/collectiveidea/audited
这个事情已经有很成熟的 Gem 了
#28 楼 @xiaoronglv 60 万是 .gem 文件每个 Gem 有好多个版本
截至今天,已经完整镜像了 60 万个 Gem 文件到 UpYun 的存储里面,这回问题解决了。
等我有空了,对记事本做一个大的改动,其实平时我用得很多的
此问题已解决
已改
有空可以完善一下
阿里云 CDN 配置:
然后域名 assets.meirizhi.com 需要配置 CNAME 到阿里云给出的 CNAME 地址 assets.meirizhi.com.w.kunlunca.com
,你的 Web 服务器 Nginx 上面不需要配置任何 assets.meirizhi.com
有关的东西。因为 CDN 的回源使用 meirizhi.com
也就是你网站的主域名访问的,你只需要确保网站的 Nginx 配置在没有用 CDN 的时候 Assets 之类的也是可以访问的(我看目前你配置是正确的)。
[User]
|
<assets.meirizhi.com/assets/application-digest.js>
|
---------------------------------------
| |
<cache> <no cache>
| |
[200] <meirizhi.com/assets/application-digest.js>
|
[Nginx location /assets]
|
[200] --> [CDN Cache]
不用同步,阿里云上面设置 CDN 回源,不用 OSS
有人扫描而已,很正常,天天都有人扫描,然后用 PHP 网站的规则。
Rails 做了基本的保护,这种没问题,如果量大,可以配合 rack-attack 来做频率限制。
我们的项目里面的代码是这样的:
class ActionDispatch::IntegrationTest
def login_with_session(user)
open_session do |app|
app.post user_session_path,
params: {
'user[email]' => user.email,
'user[password]' => user.password
}
assert app.controller.user_signed_in?, "login_with_session #{user.email} login failed, #{app.flash[:alert]}"
end
end
def sign_in(user)
post user_session_path \
"user[email]" => user.email,
"user[password]" => user.password
end
end
目前 Devise 的 helpers 好像还没有修复好 Rails 5 的,这个问题被标记到了 Devise 4.2.0 的 Milestone
相关的 Issue:
各种外包小团队这回爽了
rails s -b 0.0.0.0
#15 楼 @linyunjiang 因为现在配置正确了,文件访问成功以后,会自动转存到 UpYun 的文件存储里面持久化,未来的请求都直接从存储里面拿,无需在回源,这个需要一点时间让那些文件都被命中到。
现在我已经通过 FTP 连上镜像存储里面看到已经有 8000 多个文件存进去了,都是今天的(也就是说确实如上面的猜测,之前没存进去)。
16:17 更新:现在已经 17000 多个文件了
我先找个东西,都通把他们跑热,让 CDN 都有缓存
$ curl -I https://gems-ruby-china.b0.upaiyun.com/quick/Marshal.4.8/cocoapods-0.2.0.gemspec.rz
HTTP/1.1 200 OK
Server: marco/0.12.0
Date: Wed, 11 May 2016 05:07:53 GMT
Content-Type: binary/octet-stream
Content-Length: 509
Connection: keep-alive
X-Source: C/304
X-Proxy-Route: abroad, abroad
X-Amz-Replication-Status: COMPLETED
X-Served-By: cache-hkg6821-HKG
ETag: "732c80427c275cfafaa8c4e8ba397df2"
X-Amz-Request-Id: 65F2B3274AF6C632
X-Cache-Hits: 2
X-Amz-Version-Id: kHyODCRDIT14OO_.zJcJ9mjeB1HJR2rQ
Last-Modified: Tue, 02 Feb 2016 08:14:21 GMT
X-Amz-Id-2: vVzPIqXSomAXNGrLQe+mX37iB1kTxWaTxZ4CBdW44xTLW+ZtOTrehTrDWxhxPRSiYXVKC+ruLao=
Fastly-Debug-Digest: abae697b5247ae8c645198aa257a33fbf5806ef3ddfde073d5a2c6287bda5f4a
Age: 1887
Accept-Ranges: bytes
Expires: Thu, 11 May 2017 05:07:35 GMT
Cache-Control: max-age=31536000
X-Cache: MISS|MISS(S) from mix-hz-fdi-163; MISS(S)|HIT from ctn-zj-lna-088
X-Request-Id: 8931372901c8d844bb869b05ee80dfb7; ca6a1c0496b87d5f9222668519950ec1
Via: T.249100.N.2, T.101163.S.1, T.101163.S.2, S.mix-hz-fdi-165, V.mix-hz-fdi-165, T.249100.H.1, M.ctn-zj-lna-088
你这样试试呢
对,502 可能会持续一小段时间,然后会被 CDN 缓存掉,并长久存储,遇到 502 的时候重试
问题已经找到,解决了!
原因:UpYun 对文件在 CDN 里面存储的时间有一个缓存设置界面,按其他云主机的习惯,我设定了:
我的期望是对这两个目录的文件长久缓存 1 年,再配合 UpYun 的镜像存储功能,让用户端的请求尽可能的命中 CDN 和 UpYun 的存储。
但经过刚才的检查发现,这个规则不对,UpYun 的缓存设置界面对目录的设置,需要用 * 通配符才可以,于是我修改成了这样:
再次测试,返回的 Cache-Control 和我设定的值一致了:
应该问题是这样的:
https://github.com/hexorx/countries
All sorts of useful information about every country packaged as convenient little country objects. It includes data from ISO 3166 (countries and states/subdivisions ), ISO 4217 (currency), and E.164 (phone numbers).
RailsConf 上面 @tenderlove 就演示过,开玩笑说我们将会迎来 PHP 模板
这个事情的公告:https://ruby-china.org/topics/29978
问题已经解决了。