rust 官网中讲的和 helix 没关系,helix 的野心相当大,他的目标是用 rust 代码在 ruby 层面和一般的 ruby 代码的行为完全保持一致,这个可以看下他官网的 roadmap#drop-in-replacement
主要还是因为 Assets Pipeline 没能够打动前端圈子,最终 Rails 决定向前端社区妥协,按照他们的风格办事,其中 yarn 是最符合 DHH 口味的(其实 yarn 可以理解成“更好的”npm,依赖声明 package.json
也是复用 npm 的,并且 yarn 的主力开发 Yehuda Katz 还曾是 Rails core team 成员)。
对于 Rails 项目来说,集成一个前端框架的最好的方式是引入对应的 gem,比如 jquery-rails font-awesome-sass bootstrap-sass 这些 gem 按照 Assets Pipeline 的最佳实践原则组织文件,提供 helper,并且可以对 AP 做一些 tweak(比如 font-awesome 自动把他的 fonts 文件加入到预编译的列表里,调整 CSS 编译器和 JS 压缩器的参数等)
但是,前端的库层出不穷,只有极少数的前端项目接纳了 Assets Pipeline,面对没有接纳 AP 的项目,只能拉下他们的代码,放入到 vendor 目录,这是很土很落后的做法了。
Rails 在正式把 yarn 加入套餐前,社区里就有很多种方案了,npm-rails bower-rails 等,Rails 集成 yarn,算是提出了官方的前端依赖管理的解决方案,把法(AP)外之地的管理现代化。
至于 webpacker,他算是复用了这部分基础设施而已
这个项目已经算是推倒重来一次了,第一次比较正式的介绍应该来自这篇 http://blog.skylight.io/introducing-helix/ 去年新加坡的红点 RubyConf 上 Godfray 还谈论了这个项目。
最开始这个项目是在 https://github.com/rustbridge 组织下的(里面还有一个 rust-nodejs 的 bridge 项目,但目前都已被清空了),然后,这个项目在几个月后,就太监了...
同时在发展的还有一个项目 https://github.com/d-unseductable/ruru 几个月断更之后,刚刚看到作者又在继续开发了。
再然后就是 usehelix.com 上线,Yehuda Katz 的公司全面接管项目,看上去也有了喜人的进展。
衷心看好这个项目,如果能够达成路线图的目标,一定会救赎 Ruby 和 Rails,底层通过高性能语言实现,Ruby 作为上层暴露的接口,就像 Python 在 TensorFlow 的作用一样。
我这不还没入监呢么...
我要开始怼人了。
你是 2013-12-22 注册的论坛,可以说,你是社区的早期成员了,今天是 2017 年 7 月 8 日,在近四年的时间里,你有多少进步?是不是总结出了值得分享的心得?是否变成“过来人”可以解答新手的问题了?你现在居然说 我能做的就是把这个问题提出来
,你是不是在承认自己四年的时间毫无成长?我觉得也已经体现我的价值了
所以四年后的今天你还就这点价值?
我为什么要冒天下之大不韪,发如此敏感的话题,惹得广大老鸟们生气呢?
不活跃
而你的实际行动是什么? 平常潜水
,你就是那个不活跃分子好不好。你一边抱怨着论坛不活跃了,一边高谈阔论,你指出的解决方法有根据么?
平常潜水
我们欢迎意见,但我们(无论是社区也好还是现实中的自然人)希望得到的是“建设性”意见。
你因为没有人支持你的观点而伤心了,你的不负责言语有没有伤害到别人呢?想过没有?
不管你喜不喜欢知乎,我都建议你再好好读读 如何看待女权主义者在 Steam 坎巴拉太空计划社区中心发表的这番反歧视言论? 这篇回答。
Linus 批评的是自以为是的人,他批评的问题和指出的那一行都代码质量没关系。我不攻击你原帖的观点,我直译了 Linus 的文字,指出了他的观点,你一不去求证,二你声称英文不好并在我指出你误读了他的文字的前提下仍坚持错误的理解,这就叫自以为是,并且,你不虚心。
没有,或者你觉得我有,那请你举证。
开源精神就是“你行你上”,你自己没做过什么事而挺爱指指点点,想必 Linus 的经典言论“Talk is cheap,show me the code”你一定听过。此外,不谈我为中国 Rails 社区的贡献,你学的 Rails 里就有我的代码,我写过的 Gem 应用在很多公司的很多系统里,涉及现金流水数千万,你跟我谈开源精神?对,我这句在装逼。不要去教专业厨师应该怎么做饭,“键盘大厨”讽刺的就是这种人。
我还有很多人从各种角度讲明了你的观点不妥,我的观点和你的相悖,所以我就是在反对你的观点。你抛出观点,还不能允许别人反对了?
再重温一遍我引用的来自知乎的那段话
我的观点是:己所不欲,勿施于人;以身作则;尽力而为
你反感知乎,而我引用的是某人的文字。难道你认为这句话是他发表在知乎上的,所以他的话对你而言就是被讨厌的?
再次重申,没有喷代码,不信你自己去翻译。
再次重申,没有喷代码,不信你自己去翻译。
再次重申,没有喷代码,不信你自己去翻译。
另外我不知道你英语不好,你我完全不相识,而是当我看到你完全误读了 Linus 的话,让我知道你可能英文不是很好。
本来我是不想说啥的,但既然你崇拜 Linus,我就把 Linus 的观点分享给你,并且,我告诉你 Linus 恰好批评你的观点,我不知道你会怎么想。
如果你说我欺负你英文不好,那你大可亲自去了解清楚我刚发的截图的讨论过程,然后用实证说出来:我欺负你了,我不友善。
无论怎样,我还是要引用我引用的知乎某个回答的一段话:
她一方面强迫他人去理解和接受她的"世界“,一方面又关闭了交流的门,想想看她应该把“己所不欲,勿施于人”理解为单方面让别人去适应自己,而并没有尊重别人的想法,反而认为别人如果想法跟她不一样,就是别人的不对。
我就是把截图里的 linus 的回复,直接翻译成中文而已,不信你自己敲到 google translate 里看看
你自己把截图里那段话,放到翻译软件里看看他在批评什么。
何况你这样说是伤害到很多一直热心社区人的心的,我们解答问题,分析知识,封装 gem,现在有个人跳出来,我觉得你们对新手不友好。
你说一直在做这件事的人什么感受?我们在做这事的时候,你在做什么?你凭什么这么说?
何况 Linus 另一句经典名言了:Talk is cheap, show me the code.
与其指挥大伙你们应该怎样,不妨身体力行,用自己的行动鼓舞大家加入到你的事业,亲自帮助到一些人,让别人在其他人面前说出:这个人,感谢他。
你帮助到的人有几个捡起你的衣钵,薪火就传下去了,这是一笔投资。你可以看到,慈善的逻辑,就是这样。
你的英语不太过关,linus 说的跟代码没有关系
他吐槽的是 default m 那一句啊,意思是提交者希望默认启动他的驱动。
直接翻译 Linus 的话:
每个开发者都认为他们的代码是特别的、精巧的以致于应该被默认启用。
但抱有这想法的大多数人都是完全的彻底的错了。
我想引申一下:
每个人都觉得自己的想法或者建议是有益的、可行的以致于大家应该听从。
但抱有这想法的大多数人都是完全的彻底的错了。
然而 linus 大神刚怼了楼主的想法...
yarn 可以替代过去把前端的依赖放到 vendor 的作用
支持一下!
一般包含进来,另外包不包含,也要合理的在 Gemfile 里约束好依赖的版本
完全可以理解这种想法。
在我的立场上,这些年我在编程上有了一点心得,也渴望交流,我愿意帮助新人们成长,加入到我们这些所谓的”老炮“行列中,我想大家认为的”高手“也是这个态度。
我不知道你会不会有这个想法:我是新人,很多东西不知道,需要高手手把手教教我,这样我进步才会快。
但是”高手“的想法是:教给你方法,点到为止,你进步才能快。
首先,冲突就产生了,这帖子里的一些讨论就是例子。
其次,新手成长的速度也拉开了,看一下知乎那边 叛逆者 回答的一个问题的答案 如何评价空明流转?
至于语言不友善,这个其实在 提问的智慧 里,有阐述,如果让我总结:
如果希望别人伸出援手,最好的方法是表现出”我尽力了,但我还是失败了“,文字上说”我找了百度,看了文档“并不有力,而是要通过 "我在做什么 -> 我怎么理解这个问题的 -> 我在哪搜索了哪些关键字 -> 我考察了哪些方案(但不奏效)-> 以上是我所尝试过的,请帮忙看看我是不是漏掉了什么?" 这是解决一个问题你的思考路径的整理,这是你真诚想解决问题顺便帮助他人的证据,这是值得得到一个优秀回答的请帖,这个帖子和讨论会成为其他后人的范本(就是 wiki)。
至于成立社区管理委员、明确社区发展导向,其实这个东西现在就有,很多老的会员还在坚持参与讨论的人,都承担了这个角色,他们的言行(无论好的坏的),都引导了发展导向。即使我们真的要成立一个委员会,那么,哪些人可以加入呢?他们加入能否服众?这又是个问题。
不加 Gemfile 的话,可以质疑你这个同事关于依赖管理的基本素养了,不夸张。
为了更好的协同开发,要求同事间的开发环境尽可能的一致这个也是强烈建议项(甚至强烈建议开发环境跟生产环境一致),某些 Gem 会在 Gemfile.lock 里标记一些平台要求的信息,这会在某些情况下,你的同事有混杂使用不同 OS,bundle 失败,所以包不包含 Gemfile.lock 倒是一个没有结论的问题,看需要。
另外,对于某个 Gem 的卡住安装这种,显然的,这位同事应该自己解决自己的环境问题(写 Rails 项目不想装 Rails 这个怎么讲都说不过去的),但是,实际上 bundler 还真可以做到不安装某些 Gem 的。
这个功能在我不知道该去哪读那该死的文档呢?
看一段 Capistrano 的输出:
00:15 bundler:install
01 ~/.rvm/bin/rvm default do bundle install --path /home/jasl/sites/lab/shared/bundle --jobs 3 --without development test --deployment --quiet
注意 --without 后边的两个实参是 development test,对应 Rails 的 Gemfile 里的 development 和 test group,所以,你只需要吧 spring 单独放到一个 group 里
group :spring do
gem 'spring'
end
然后
bundle install --without spring
即可了,这个手法 Redmine 就在用 https://github.com/redmine/redmine/blob/master/Gemfile#L42-L45 用来解决一些对环境有依赖的可选功能,另外他们那边也有讨论(我现搜的) http://www.redmine.org/boards/2/topics/29070。
PS,spring 会 wrap 一些 gem 的 binstub(就是项目目录 bin
下的那些命令),不安装 spring 的话使用某些命令调用会失败。
没权限就给他权限不就行了么。。。
马上,这周有点工作调度,忙得焦头烂额,下周~
这是一个近距离接触大牛的机会,内容其实国内的会议更偏工程,实用性强的。
不知道...开始没认真读正文。
我也不太能理解一个可以很直觉的解决的问题为啥要用这么深奥的算法来解决...
如果你只想判断结尾的扩展名,并且通过字符串操作而不是构造个 File 对象啥的
[1] pry(main)> "yooo.erl".end_with?(".erl")
=> true
[2] pry(main)> "yooo.erl".end_with?(".rb")
=> false
最后调用下一 to_h 试试