这个 gem 是又拍云这个开发者大赛的作品,在这里投票啊小伙伴们 >_>: http://upyun.gitcafe.com/projects?category=plugin
故事是这样的:
以前,我一直用 lftp 来自动上传我们的静态资源到又拍云上去
直到有一天我看到这个家伙做了一个很骚的东西
看着这玩意儿我瞬间感到一股共鸣感,于是豪气一发,从我们公司的 ci 里随便拉出了一段日志,直接在 GitHub 的界面上帖给了这货
贴完之后我站起来伸了个懒腰,淫荡的一天又过去了 XD ……突然我虎躯一震,赶紧会过头去看我贴的那段日志:
我们的 UpYun 操作员密码俨然以明文留在里面!
而且我们发布用的操作员密码和主账户的密码是一样的,于是我赶紧把这俩密码都给改了,然后就是各种小伙伴被惊醒:
经过这件事,我学到了一个道理:不要随便把自己的日志贡献给别人……
哈哈哈哈哈好吧,不过用明文的 ftp 来做事情也确实不安全(也不快,还要经常求防火墙放行我们可怜楚楚的数据连接),既然 UpYun 有提供一个带摘要授权又是基于 HTTP REST 的 API,咱就从了呗,大家来看看俺的作品吧:
把预编译好的静态资源发布到又拍云上(用rake
)
Gemfile
里引用我: gem 'rails-assets-for-upyun', '>= 0.0.3'
# .. config/environments/production.rb
..
# Enable serving of images, stylesheets, and JavaScripts from an asset server.
config.action_controller.asset_host = "awesome-bucket.b0.upaiyun.com"
..
Rakefile
里添加一个任务(起一个最酷的名字!)namespace :assets do
task :publish_my_holy_shinning_precompiled_miraculous_assets_to_the_almighty_upyun do
RailsAssetsForUpyun.publish 'awesome-bucket', 'notjustausername', 'thencomesthepassword'
end
end
rake assets:precompile
之后)运行一遍这个 rake 任务把他们同步到又拍云上去了。RailsAssetsForUpyun.publish(bucket, username, password, bucket_path="/", localpath='public', upyun_ap="http://v0.api.upyun.com")
#16 楼 @layerssss 原来如此...
btw, 这个比赛好像参加人不多呢,在想要不要去试试手气,混个奖什么的,可是看了一下他的选题,没什么好玩的 idea
#18 楼 @quakewang 参赛选题包括但不限于我们提供的选择,欢迎参加!
其实目前已经有几百人报名了,比赛开始才第四天,已经提交了 35 个作品了,人气也不算太差,也欢迎大家指出不足的地方,便于我们及时改正。
谢谢大家的关注!
我使用的时候会报错 uninitialized constant RailsAssetsForUpyun
require "rails-assets-for-upyun"
则会报 cannot load such file -- rails-assets-for-upyun
#25 楼 @layerssss 还有两个问题
sorry,是我犯的一个错误,现在已经在 0.0.3 里修正了 https://github.com/layerssss/rails-assets-for-upyun/commit/318b43858c28806b01a8c1db2335664d64aa293c @ruohanc @perrywky 感谢试用, bundle update rails-assets-for-upyun
把它升级一下再试试吧
#35 楼 @layerssss -,-...其实没试用,,就是看了下你的代码....你的有个花括号写的我快觉得我在看 js 代码了。
另外是否考虑下用 ETAG 啊,upyun 应该支持 etag 方式的吧,用 size 比较非主流。简单说就是 header 里面加上 "If-None-Match: ", 返回 304 就不用更新了。参考
#37 楼 @layerssss 我现在遍历一遍 oss 上的 gems 列表 (44W 个) 要十分钟.....
我的意思是作出 rsync 效率一样的通用同步工具是个笑话........ rsync 岂是一般工具能胜任的咩哈哈..