个人网站跟企业开发很不一样,没有测试,没有产品经理,想到哪写到哪,哪天心血来潮想改动一个地方打开 ftp 就在线修改了,那是在个人站长风风火火的时代,用的是 php
rails 的便捷不言而喻,但 rails 的部署却有些麻烦,有时候我有了新的想法,修改了几行 rails 代码甚至仅仅修改了几个字符,也要跑一遍 capistrano,一次要好几分钟,感觉好笨重啊
@ddyy, 有灵感可以记下来,不紧急的话分门别类实施。另外你如果实在喜欢生产数据,也可以写一个 rake 命令把服务器数据拉到本地,隔一段时间拉一次就行了。
#8 楼 @blacktulip 本来打算用 git push 到生产环境的 (这样甚至比 ftp 还要快),但是 rails 还有其他的一堆事情,比如 The Asset Pipeline,就是 sass 编译成 css 还要给 css 文件一个随机数的名字,比如 global-908e25f4bf641868d8683022a5b62f54.css。 migration 倒不是问题,大不了登陆服务器运行 migration 命令,再说日常的小改动基本不涉及数据库
#10 楼 @blacktulip 恩,看了下,貌似 RAILS_ENV=production bundle exec rake assets:precompile 也能解决 Assets Pipeline 的问题。
每次运行 capistrano 的时候,都觉得好傻,明明只修改了几个字符,还要运行 assets:precompile、检查服务器端的 gem、运行 migration、删除服务器旧的目录版本、建立新的目录版本、给附件文件夹设置软连接。。。等等等等等
我感觉慢归慢,但是还是靠谱的。 反正 heroku 部署的时候有你说的一切问题, 比如慢,比如任何时候都要 assets:precompile 等等。 但是我感觉你应该在本地都测好了,上传的时候干点别的事情就完了。
每次运行 capistrano 的时候,都觉得好傻,明明只修改了几个字符,还要运行 assets:precompile、检>查服务器端的 gem、运行 migration、删除服务器旧的目录版本、建立新的目录版本、给附件文件夹>设置软连接。。。等等等等等
用 Capistrano 本来通过执行一系列内置或自定义的脚本来解决这些问题的,让部署工作从重复繁琐中解放出来。你觉得你不需要这些,说明你不需要使用 Capistrano。另外,运行 assets:precompile, bundle install, migration 这些步骤并不是必须执行的,完全可以通过配置关掉。
我是个人站长,假设个最简单的场景:
帖子出现了“言论自由”这个敏感词,需要修改程序替换成“畅所欲言”,如果在本地测试,需要先注册个用户,然后用这个用户登录,发表带有“言论自由”这个词的帖子,然后才能测试程序。在线开发的话场景都是现成的,不用自己再填充内容了。
我举得这个例子是最简单的例子,还有的场景比这个复杂的多,涉及的到很多情况,作为个人站长,在本地模拟服务器上的场景要做的工作太多了,严重分散精力。
估计论坛里正规军太多,不能理解 PHP 时代的野战军站长,这些站长一般都是全站 (栈)“工程师”,用 Rails 的确要受很多“窝囊气”,
PHP 简单,直接,一个 PHP 文件能搞定 MySql 连接,数据处理,外加所谓模板。改起来相当方便,边改边 F5。
这就像镰刀和收割机,你开动收割机就为了割一把稻子,当然觉得费劲啦
楼主显然合适使用 PHP 阿……
非要用 Rails 的话,在服务器上装个 TMUX + VIM 做开发吧,一改完就 kill -12 重启下 puma ……
个人站长不需要用 Capistrano,没改 asset 就直接 git pull && thin restart
,改了就加一句 RAILS_ENV=production rake assets:precompile
使用 git 的 hooks 当代码改动完(push)的时候自动部署 github 好像支持 web hooks 具体怎么调用没研究过,用过在 git 服务器上设置 hooks 来自动部署
公司项目用 capistrano,个人网站用 mina
mina 的优势就是快,劣势就是不能针对集群发布。 我曾经试图给 mina 加上集群发布功能,但发现做到最后就是 capistrano,必然会放弃速度来保证集群整体的正确和一致,于是放弃。