这是前两天开的帖: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,历数我遇到的各种奇怪的报错,完全没有任何解决方案:
bin/webpack-dev-server报错: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
比如Cannot find module '@rails/webpacker'报错:
比如rails new --webpack fails with "Don't know how to build task 'webpacker:install'"报错:
比如Getting undefined method 'javascript_pack_tag' for报错:
比如Command "webpack" not found报错:
比如ActionView::Template::Error: Webpacker can't find application in /app/public/packs/manifest.json报错:
...
............
........................
....................................
唯一一个解决的问题是执行bin/rails generate controller Say hello goodbye没啥反应,用了spring stop
现在我的 rails 是这样的:
$ 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 天,反正我这三天,每天十几个小时的折腾这些报错已经耗尽了耐心,放弃了。
看了很多评论是批评我不懂前端让rails背锅的,不懂前端我承认,让rails背锅我不认同。这些问题是我按照rails教科书实践产生的,而不是我上来自学js、webpack遇到的问题。既然是rails6集成了这些,就是学rails的过程遇到的绕不开的问题,为什么不能归结到rails呢?难道学rails之前还要先精通js、webpack么?感觉这个大佬说的有道理:
@reus 十年前接触过一下,当时前端也没有这些东西,都是服务器端输出 html 完事 后来就是前后端分离的时代了,其他框架就专注于做 api 服务器了 rails 不是,它既要坚持服务端渲染,又要拥抱现代 js 生态,于是就把 webpack 这类 js 工具链引入了 rails 里面 这是个绝对的败笔,js 生态是相当不成熟的,是相当混乱的,即使是 webpack 这类基础工具,版本之间根本没有兼容性可言 于是就出现楼主这样的遭遇了 现在的大势就是,后端就做后端,前端就做前端,前后端通吃的 web 开发,已经是移动互联网成为主流前的老古董了 确实不值一学