![]() | 1 dishonest 2016-07-02 12:37:28 +08:00 请用 docker 之类。 rails 部署时麻烦了点,但同理 nodejs , python 也会遇到同样问题。 |
![]() | 2 dorentus 2016-07-02 12:52:54 +08:00 via iPhone ![]() Github 表示不服。 |
![]() | 3 shyling 2016-07-02 12:54:50 +08:00 via iPad 所以什么都不要升级就好了。。。 |
4 blacklee 2016-07-02 12:54:51 +08:00 线上已经运营 2 年+,版本为 Ruby: 2.1.1, Rails: 4.1 。 并没有什么问题。 |
5 blacklee 2016-07-02 12:55:37 +08:00 ![]() 在 Gemfile.lock 里查看依赖关系 |
6 blacklee 2016-07-02 12:56:42 +08:00 呃,其实吧,你的问题可能在线上环境不要用 Ubuntu 。 抱歉一下子添加了 3 个评论,应该合并成一个比较好。 |
![]() | 7 jerray 2016-07-02 12:58:23 +08:00 长期运营的项目,为什么不随着语言和框架的更新进行适当升级? |
8 lianghudou OP @blacklee 为了个 rails 放弃 ubuntu ,呵呵~ |
9 lianghudou OP ![]() @jerray rails 跟 php 和 java 不一样,每次升级 api 都被改的面目全非,项目没法随着框架升级。 |
![]() | 10 matsuijurina 2016-07-02 13:02:07 +08:00 via Android 现在有 docker 了,这些都不是问题了。要说依赖的兼容问题, php 用了 composer 之后也一样。 |
![]() | 11 mdluo 2016-07-02 13:02:38 +08:00 via iPhone 项目的依赖本来就需要不断及时升级,及时修复 要么就所有依赖全部版本固化 你所说的 php/java 稳定是因为它们的依赖管理器( Packagist / Composer / Maven / Gradle )本身比 Gem 优秀呢,还是因为十年前的项目基本没有用依赖管理(直接把依赖的库放进来,不去更新当然不会出问题) |
12 lianghudou OP ![]() @matsuijurina 所以我觉得 php 用 composer 的都是吃饱了撑的, php 现在已经分成 3 个阵营,原生阵营、传统框架阵营、 composer 阵营,没错,我是原生阵营,不光不用包依赖,连框架也不用,除了 php 源码, php 项目的每一个细节自己都如了指掌,每次换服务器,直接 rsync 同步到新服务器,什么都不用管。 |
![]() | 13 greatghoul 2016-07-02 13:16:32 +08:00 via iPhone 铜币拿去 |
14 blacklee 2016-07-02 13:16:59 +08:00 ![]() 年轻人,不要这么喜欢呵呵。 既然是线上的产品系统,就应该不使用会频繁升级的容器。 Ubuntu 的问题就是更新太频繁,作为 Desktop 当然没问题,自己爱咋搞就咋搞,但是作为 Server ,我想没人会有事没事就折腾更新升级的。 之前我选择 OS 之前,也是对 Ubuntu 远比 CentOS 熟悉,但是考虑到需要一个更稳定的 OS ,还是选了自己不熟悉的 CentOS 。 |
![]() | 15 karloku 2016-07-02 13:20:45 +08:00 ![]() 3 年都舍不得升级一下 gem... 如果你真的很保守不愿意随便升级 gem 的话, 那就在 Gemfile 里把版本锁住, 并且把 Gemfile.lock 加入版本管理. |
![]() | 16 publicAdmin 2016-07-02 13:26:48 +08:00 铜币拿去, 求不黑 rails 好吗。 话说我也主 Java 开发的,但是 Java 也需要升级包依赖好吗。例如之前爆出的 strus2 的漏洞,然后升级这个包的同时你能保证不升级其他包?不影响其他包?再者如 1L 所说,现在 Node , Python , PHP 不都是这种强依赖? 并且 1L 也给出解决方案了,你怕 Linux 版本升级,你怕包升级,你想迁移至一模一样的运行环境,上 Docker 啊。 so ,这锅 rails 不背。 |
17 lianghudou OP @karloku 不是舍不得升,有的 gem 新版本跟 rails 3 已经不兼容了,但是老版本又跟 ruby 新版本不兼容,如果用老版本 ruby 呢, passenger 就装不上了。 简言之,就是有的 gem 必须用老版本,有的 gem 必须用新版本,一个 gem 的坑就把整个项目搁浅了。 在这里也跟用 flask 的 pythoner 一个忠告,自己玩玩的话用 flask 可以,如果长期运营的项目还是 django ,用一大堆的第三方库建的项目,过几年就知道危害了。 |
18 ysr1023 2016-07-02 13:38:33 +08:00 ![]() rails 算新技术啦?你让一堆 js 框架情何以堪... 我司有 3 年以上的 rails 项目,运行得好好的, lz 请从自己身上找找原因吧。 |
![]() | 19 lululau 2016-07-02 13:41:53 +08:00 via iPhone ![]() 典型的拉不出屎怪地球引力不够 |
![]() | 20 julor 2016-07-02 14:07:03 +08:00 via Android 用 golang 编译后就是一个可执行文件,不存在依赖,这么好的语言不用? |
![]() | 21 cxh116 2016-07-02 14:13:38 +08:00 via Android java 现在都 1.8 了, 1.7 都结束支持了。但还有很多线上环境用 1.4 1.5 。他们的项目不升级处理在 java 1.8 环境上面部署吗? 既然不愿意升级,就都用老版本的东西。 ruby 1.8.7 肯定兼容 rails 3 。 ruby 1.8 都默认没有 gem , rake ,需要自己手动装,至于怎么安装指定的 gem ,好好看看 rubygems 的 gem 命令参数吧。 |
22 jetbillwin 2016-07-02 14:15:26 +08:00 Github 表示不服,你不更新,锁定版本不就好了。自己技术差,怪不得别人。另外,长期运营,难道你想写了一个代码,十年都不动了??? |
![]() | 23 aveline 2016-07-02 14:17:16 +08:00 Grails 大法好(逃 |
![]() | 24 bclerdx 2016-07-02 14:19:28 +08:00 @cxh116 却是,很多线上环境还是 JAVA JDK 1.4 、 1.5 、 1.6 的古老环境,针对 JAVA JDK 1.8 环境没有部署。 |
![]() | 25 SmiteChow 2016-07-02 14:21:12 +08:00 不可能啊,没有 virualenv 吗?我记得是有的。 |
![]() | 26 PublicFourWord 2016-07-02 14:22:18 +08:00 ![]() 如果不会用 rails ,千万别用 rails 如果不会用 xxx ,千万别用 xxx |
27 wsy2220 2016-07-02 14:37:56 +08:00 自己能力问题不要赖别人 |
28 |
![]() | 29 spark 2016-07-02 15:54:44 +08:00 铜币拿走, 莫黑我大铁路! |
![]() | 30 ichou 2016-07-02 16:44:34 +08:00 via iPhone php 现在已经分成 3 个阵营 请问是楼主自己总结的吗 |
![]() | 31 chloerei 2016-07-02 16:48:43 +08:00 Rails Conf 2012 Keynote: Progress by David Heinemeier Hansson |
![]() | 32 RangerWolf 2016-07-02 17:02:47 +08:00 虽然楼主我基本上赞同你的意见,但是你在 V2 上开喷某个语言不行,不是找骂吗? |
![]() | 33 phpuser 2016-07-02 17:04:31 +08:00 via Android 10 年前的 Rails 项目仍在发挥余热的路过。 10 年没改过代码,只是换了几次服务器。 |
![]() | 34 frankzeng 2016-07-02 18:11:33 +08:00 你的 ubuntu 不要升级嘛,然后直接把所有库文件拷过去。 |
![]() | 35 techmoe 2016-07-02 18:47:42 +08:00 via Android docker 解决最佳范例 |
![]() | 36 xiaket 2016-07-02 19:20:49 +08:00 刚接手一个线上运营了 7 年+的 rails 项目... |
![]() | 37 mml 2016-07-02 19:46:46 +08:00 长期运营的项目,我估计除了重启,没人想 /敢去碰。 |
![]() | 38 vinceguo 2016-07-02 19:53:47 +08:00 via Android 什么时候升级 os 版本都不算大事了? naive |
39 zaishanfeng 2016-07-02 20:04:37 +08:00 via Android 这个问题任何语言都存在。我觉得你应该先找出问题在哪。 |
![]() | 40 julor 2016-07-02 20:09:41 +08:00 via Android @zaishanfeng golang 不存在 |
![]() | 41 sagnitude 2016-07-02 20:12:03 +08:00 一个已经基本结束开发,正在长期稳定运营的工程,你这升级操作系统版本是不是太激进了? |
42 zaishanfeng 2016-07-02 20:13:45 +08:00 via Android @julor 如果操作系统版本不一样应该也存在的 |
![]() | 43 lightening 2016-07-02 20:22:44 +08:00 你要么什么都不升级,要么一直升级到最新版。怎么会突然只升级一个依赖需要 eventmachine 了呢? “为了个 rails 放弃 ubuntu ,呵呵~” 真不知道你的主要产品是你的 rails app 还是运行它的操作系统,呵呵。 |
![]() | 47 Actrace 2016-07-02 20:57:01 +08:00 说白了,楼主更在意编程语言的生态。 越高级的编程语言,面对环境变更时,前后对接的差异更少。当然这个也跟语言设计者有一定的关系,但是 PHP 阵营的好处是,这种语言的发展基本是堆叠特性,而非重新设计。因此我们的代码可以流转很长的一段时间而无须重构(或者是大规模重构)。 在实际生产生活中,我们不可能不升级操作系统或者是编程语言版本,及时你知道升级的改变可能不大,或者没有改变,但是基于安全考虑,基本上公司都是会要求升级的,因此 PHP 的升级成本相对较低,进而受到大量一线程序员(码畜)的欢迎。 欢迎加入 PHP 阵营。 |
![]() | 49 zhs227 2016-07-02 21:07:42 +08:00 经历过 2->3 的升级。表示只要锁住依赖,继续使用 rails2 ,就不会有大问题。 gem 依赖过多容易出现的问题是,部分 gem 失去维护,好多年不更新版本了。因此在 2->3 的过程中,就有少部分的代码重写了,目的是移除那些死掉的 gem. PHP 的 packagist 理论上也是有这样的问题,但由于 php 在版本升级的过程中没有大破大立,因此问题显得不严重。 如果一个 gem 好多年都不更新了,确实在使用的时候要慎重考虑。 |
50 Arnie97 2016-07-02 21:38:33 +08:00 via Android @julor 只是对 Go 的包不依赖,有对底层的依赖,除非二进制是裸机运行,否则换系统(内核)可能不行。 |
51 seamon 2016-07-02 22:57:47 +08:00 你自己说的“满打满算 10 个 gem ”,要么你在 Gemfile 里锁版本,随便换服务器。要么你既然“长期运营”,就时常升级一下,也不会有问题。 你这么大开大阖地玩 rails ,让我们这些依赖 100 多个 gem 跑了两三年正准备升 rails5 的项目,情何以堪啊。 |
![]() | 52 likuku 2016-07-02 23:31:43 +08:00 服务器环境整体打包迁移嘛,软件环境完全一样就是了。 |
![]() | 53 izoabr 2016-07-03 01:26:14 +08:00 唉, python 用户一样 |
![]() | 54 orancho 2016-07-03 01:32:43 +08:00 铜币给你了,别无脑黑秀下限。 |
![]() | 55 Numbcoder 2016-07-03 01:38:25 +08:00 厨子不好嫌灶歪 |
![]() | 57 msg7086 2016-07-03 05:59:33 +08:00 一个不经常维护的系统也敢叫长期运营? 你 PHP4.2 上写的项目能在 PHP7 下面跑吗? 呵呵。 |
![]() | 58 grzhan 2016-07-03 07:12:19 +08:00 关于 LZ 对于 flask 的看法表示一定程度的赞同 |
60 hging 2016-07-03 08:29:09 +08:00 via iPhone 自己不会用就怪框架怪语言,快去用 php 吧。 |
![]() | 61 TangMonk 2016-07-03 09:28:12 +08:00 via Android 把那个依赖 eventmachine 的 gem folk 下来改了就好了嘛 |
![]() | 62 colorfulberry 2016-07-03 11:14:03 +08:00 对于 rails 你不就是换个环境么,要么带上 Gemfile.lock 要么就升级下项目 |
![]() | 63 rootooroot 2016-07-03 11:30:58 +08:00 楼主不想和楼上的说话 并向他们扔了一堆依赖 =。= |
![]() | 64 Ahri 2016-07-03 12:21:45 +08:00 醉了,看标题以为是跟我一样吐槽 Rails 各种落后的理念,结果是来推 Java 和 PHP 的。。。 倒车,请注意。倒车,请注意。 |
65 Balthild 2016-07-03 12:34:15 +08:00 via Android @lianghudou 如果你的 php 项目要几十个、上百个依赖,每个依赖你都手动放置、加载、升级,累不累啊你。 |
![]() | 66 HLT 2016-07-03 12:38:12 +08:00 说得好像 PHP 不用 composer 了一样。。。 |
![]() | 67 jeremaihloo 2016-07-03 13:59:30 +08:00 via Android ![]() 这个时候就还考虑夸一夸我大 golang 了 |
![]() | 68 newghost 2016-07-03 14:05:22 +08:00 我觉 php 升级起来兼容问题也挺多的 |
69 2225377fjs 2016-07-03 14:11:39 +08:00 楼主说的还是有一定客观性的呀,在版本稳定兼容性方面 python , nodejs , rails 之类的确实比不上 java ,不过上 V2EX 来喷一些语言,看样子犯了大忌啊。 如果想要少花一些精力在版本升级方面的工作,而且要长期维护,选 Java 还是有优势的。 |
![]() | 70 akira 2016-07-03 17:31:41 +08:00 只要是升级,兼容性都会有可能出问题的。 锁定版本运行环境就是了,不要什么都依赖网络自动下载 |
![]() | 71 nine 2016-07-03 19:27:45 +08:00 rails 项目,只要每次 release 版本都跟着升级就好了 |
![]() | 72 reus 2016-07-03 19:30:37 +08:00 把原先的文件系统整个复制下来,然后用 systemd-nspawn / docker / rkt 跑。 把原先的文件系统整个复制下来,然后用 systemd-nspawn / docker / rkt 跑。 把原先的文件系统整个复制下来,然后用 systemd-nspawn / docker / rkt 跑。 虽然 rails 这样确实值得批评,但是是有办法解决的,没必要重写。 |
73 16500682 2016-07-03 22:25:11 +08:00 via Android 善用 docker |
74 mingyun 2016-07-03 22:47:07 +08:00 php7 ,你值得拥有 |
![]() | 75 lguan 2016-07-04 02:08:13 +08:00 个人水平问题,正好前两天有个客户一个服务器坏,上面跑的项目是 rails 3 的, 12 年跑到现在,没有一次停机,直到前几天服务器挂掉,重新挪到新的服务器上又跑了。 手上还有几个项目都是跑了五六年的,不过一直保持着版本的升级 |
76 TimLang 2016-07-04 09:38:13 +08:00 via Android 一个项目才 10 个 gem 也来黑。 |
77 firefox12 2016-07-04 16:28:22 +08:00 用得很少的一段时间,但是我想说一个一升级就改接口的库也好 语言也好,只能说明了不成熟。一个 ruby on rails 的教程, 3.0 4.0 的创建项目的命令都不一样了 这感觉就是这个大楼的门每天都变样子.... java 最早的代码在 java 8 里也是能跑的呀, windows95 的程序在 win7 里也是能跑的呀,这才是底蕴。一个 75 个 gem 的程序, 升级就是泪,虽然我 ruby 渣,为什么 java php cpp python 库升级 语言升级 我都没这种感觉呢? |
![]() | 78 xuyifei 2016-07-04 17:52:41 +08:00 。。感觉楼主已经被喷走了 |
79 lithium4010 2016-07-04 20:24:21 +08:00 @karloku 同意哈哈 |
80 dreamfanbin 2016-07-05 09:50:58 +08:00 @firefox12 http://guides.rubyonrails.org/v3.2/getting_started.html#creating-the-blog-application http://guides.rubyonrails.org/v4.0/getting_started.html#creating-the-blog-application 求解哪里不一样了 求解大版本更新的时候不费力升级的秘诀。 现在还有好多库都只有 python2 而没有 python3 的版本。。 |
81 heimirror 2016-08-03 12:00:12 +08:00 我们公司 rails2 运行快 10 年了 |
82 wpzero 2016-12-11 08:31:17 +08:00 via iPad Github airbnb 不都是吗?项目好几年不维护升级,环境不固化,还说毛呀。 |
83 cmingxu 2023-02-23 09:48:32 +08:00 rails 表示不服, 其他框架同样存在类似问题,试想一下 c++ |