Ruby, Rails 不值一学

2020-11-11 12:12:49 +08:00
 coool

这是前两天开的帖:https://www.v2ex.com/t/723318

我的工作是 Go 开发,因为总听说 Ruby 、Rails 很吊,所以业余打算学学,选了《 Agile web development with Rails 6 》一书看的,折腾了 3 天准备放弃了,真的不值一学。

如果一项编程语言的入门,大量时间要花到折腾环境、各种乱七八糟的报错上而无法聚焦到语言、框架本身,那还谈什么提高?

当初学 Go 也就小半天搭了环境就开始写了,Rails 整了 3 天,每天十个小时,到现在rails new demo都没跑起来,确切的说是没完全跑起来。

安装 Ruby 、Rails就不说了,rails new demo各种报错,最后localhost:3000访问到了,但是自从执行 了bin/rails generate controller Say hello goodbye,历数我遇到的各种奇怪的报错,完全没有任何解决方案:

node:internal/modules/cjs/loader:903
  throw err;
  ^

Error: Cannot find module 'webpack-cli/bin/config-yargs'
Require stack:

官方 github issure 各种说版本问题,还让在packge.json加了scripts:代码,换成webpack serve啥的,没点用,我就奇怪了前端圈各种软件库啥的升级从来不考虑向后兼容吗?约定的命令说改就改,改了还没啥用,解决不了旧问题还制造一堆新问题。github 、stack overflow 、csdn 之流都没有任何解决方案:https://github.com/webpack/webpack-dev-server/issues/2759, https://blog.csdn.net/Piconjo/article/details/105744808


…………
……………………
………………………………

$ bin/rails about

About your application's environment
Rails version             6.0.3.4
Ruby version              ruby 2.7.2p137 (2020-10-01 revision 5445e04352) [x86_64-darwin19]
RubyGems version          3.1.4
Rack version              2.2.3
Middleware                Webpacker::DevServerProxy, ActionDispatch::HostAuthorization, Rack::Sendfile, ActionDispatch::Static, ActionDispatch::Executor, ActiveSupport::Cache::Strategy::LocalCache::Middleware, Rack::Runtime, Rack::MethodOverride, ActionDispatch::RequestId, ActionDispatch::RemoteIp, Sprockets::Rails::QuietAssets, Rails::Rack::Logger, ActionDispatch::ShowExceptions, WebConsole::Middleware, ActionDispatch::DebugExceptions, ActionDispatch::ActionableExceptions, ActionDispatch::Reloader, ActionDispatch::Callbacks, ActiveRecord::Migration::CheckPending, ActionDispatch::Cookies, ActionDispatch::Session::CookieStore, ActionDispatch::Flash, ActionDispatch::ContentSecurityPolicy::Middleware, Rack::Head, Rack::ConditionalGet, Rack::ETag, Rack::TempfileReaper
Application root          /Users/coool/ruby/work/demo
Environment               development
Database adapter          sqlite3
Database schema version   0

package.json文件是这样的

{
  "name": "demo",
  "private": true,
  "dependencies": {
    "@rails/actioncable": "^6.0.0",
    "@rails/activestorage": "^6.0.0",
    "@rails/ujs": "^6.0.0",
    "turbolinks": "^5.2.0",
    "webpack": "^5.4.0"
  },
  "scripts": {
    "serve": "webpack serve"
  },
  "version": "0.1.0",
  "devDependencies": {
    "webpack-cli": "^4.2.0",
    "webpack-dev-server": "^3.11.0"
  },
  "babel": {
    "presets": [
      "./node_modules/@rails/webpacker/package/babel/preset.js"
    ]
  },
  "browserslist": [
    "defaults"
  ]
}

可能 Rails 确实是殿堂级的框架,但是这个框架的门槛在云上,我在地上上不去……各种环境、升级、代理设置、global 翻墙都没用、版本不兼容、乱七八糟的报错,是我在写 Go 的时候从来没有遇到过的。

另外吐槽一下 Ruby-China 真的……不知道有多少人的耐心是 7 天,反正我这三天,每天十几个小时的折腾这些报错已经耗尽了耐心,放弃了。

10918 次点击
所在节点    Ruby on Rails
166 条回复
abcbuzhiming
2020-11-11 12:20:19 +08:00
说 ruby on rail 经典,是因为它是业界 sql 访问层第一个系统的采用 ActiveRecord 模型和采用链式调用注入 sql 查询条件的工具,这个比当时的 ORM 思想要先进,简单,灵活的多。当时很多人说 ruby on rail 开发效率高,其实就是指的这个它这个 SQL 访问层相比当时以 Hibernate 为代表的 ORM 傻大笨粗要好用的多。

但是就像历史上最先搞模式匹配(正则表达式)的语言 perl 一样,在火了一段时间后,被其它语言广泛学习,这个 ActiveRecord 和链式调用的 sql 查询工具设计方式被其它的语言和框架学过去了,于是这个框架就泯然众人矣了。因为 ruby 实在不是什么大众型的语言
ai277014717
2020-11-11 12:23:13 +08:00
复杂的是 webpack 和 ruby,rails 关系不大。
robertlyc
2020-11-11 12:23:36 +08:00
人菜不要怪框架
renyijiu
2020-11-11 12:26:29 +08:00
看着大部分都是前端相关的报错,你可以试试 api 模式,你说 go 没遇到过也不是 go 服务端,没有前端的信息
coool
2020-11-11 12:28:00 +08:00
@abcbuzhiming 我只会写 Go,虽然在做后端开发的工作,但是感觉很多东西不懂,学 ruby 确实是希望可以开阔眼界、学习到更有沉淀性的思想、高屋建瓴。

其实看 Ruby 的语法很不适应,参数怎么传都可以,还可以有默认值,关键字,但是硬着头皮看了一星期,开始看 rails,一个 demo 处处碰壁,之前也从来没碰到这种挫折,很灰心。
coool
2020-11-11 12:29:02 +08:00
打算换 python 了。
ppphp
2020-11-11 12:30:43 +08:00
我一般只用 rails new --api
guokeke
2020-11-11 12:34:41 +08:00
本来以为你是黑 Ruby,但是看完后。。你不对劲(
cmdOptionKana
2020-11-11 12:39:51 +08:00
@coool python 与 ruby 一样都是动态语言,你说 “看 Ruby 的语法很不适应,参数怎么传都可以”,python 也是一样的。

其实你继续用 go 就好,转 python 干嘛… 在 web 方面 python 不见得比 go 好。如果搞 web,你转 php 或 java 都比转 python 好。
polythene
2020-11-11 12:43:36 +08:00
老哥,看报错,这锅应该是前端背,rails 表示很冤,你是真看不出来?
Numbcoder
2020-11-11 12:51:13 +08:00
明明是你搞不明白 webpack,为什么让 Rails 来背锅?
no1xsyzy
2020-11-11 12:56:50 +08:00
Python 传参还能 *args 或者 **kwargs 呢
迭代下来 Python 传参比 Ruby 更自由
zjsxwc
2020-11-11 12:59:15 +08:00
js:怎么看起来像是我 webpack 的锅
est
2020-11-11 13:00:36 +08:00
我就说一条,很多小白吹捧的 ruby 语言牛逼特性其实是 activesupport 提供的。
wei745359223
2020-11-11 13:00:55 +08:00
需要 nodejs 和 yarn
然后在目录下 yarn install 一下
arischow
2020-11-11 13:01:28 +08:00
啥也不是
calpes
2020-11-11 13:04:10 +08:00
第一,你可以试试 api mode,这些错看起来基本都是 js 的错误,绕过之后可能会简单很多,毕竟看起来你也不会搞前端工程
第二,Ruby 这个语言就是这样,爱他的人为了他的灵活自由而着迷,恨他的人其实最适合用 Python
第三,我觉得对你来说转 Python 是正确的道路
calpes
2020-11-11 13:05:40 +08:00
@est activesupport 难道不是 Ruby 写的吗?没有体现 Ruby 语言的牛逼特性吗?
est
2020-11-11 13:08:52 +08:00
@calpes 道理是你这个道理,但是滥用第三方包弥补语言的不足,很容易导致楼主帖子这种新手无能狂怒。最终的后果就是这门语言增量越来越少,只能吃存量市场。
coool
2020-11-11 13:09:27 +08:00
@cmdOptionKana 只会一门语言就很慌,得学个脚本语言傍身

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/723965

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX