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 2
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 1
在 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 1
年轻人,不要这么喜欢呵呵。
既然是线上的产品系统,就应该不使用会频繁升级的容器。 Ubuntu 的问题就是更新太频繁,作为 Desktop 当然没问题,自己爱咋搞就咋搞,但是作为 Server ,我想没人会有事没事就折腾更新升级的。 之前我选择 OS 之前,也是对 Ubuntu 远比 CentOS 熟悉,但是考虑到需要一个更稳定的 OS ,还是选了自己不熟悉的 CentOS 。 |
15
karloku 2016-07-02 13:20:45 +08:00 1
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 1
rails 算新技术啦?你让一堆 js 框架情何以堪...
我司有 3 年以上的 rails 项目,运行得好好的, lz 请从自己身上找找原因吧。 |
19
lululau 2016-07-02 13:41:53 +08:00 via iPhone 2
典型的拉不出屎怪地球引力不够
|
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 2
如果不会用 rails ,千万别用 rails
如果不会用 xxx ,千万别用 xxx |
27
wsy2220 2016-07-02 14:37:56 +08:00
自己能力问题不要赖别人
|
28
chareice 2016-07-02 14:46:51 +08:00
楼主处处传授人生的经验啊,你咋不上天呢。
|
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 1
这个时候就还考虑夸一夸我大 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++
|