看到右边的显示器,恭喜楼主戒烟成功!
@_kaichen 别急,写得这么好还急啥。
@leomayleomay 不好意思,我没看到这里已经有 Concern 了,那 alias_method_chain 在这是肯定可以使用的。
@loveltyoic 其实不用 Concern 更好,普通手段完全可以实现,因为任务是在 Rails 之外的。没必要为了这个增加对 ActiveSupport 的依赖。
@leomayleomay 那个是 Rails 的,Sidekiq 不必然加载 Rails。
好像基本差不多了,继承是肯定不能接受的。
如果真要改进的话,我的看法是,相比把动作隐含在included
中,我比较偏向于明确地表达。
module JobLogger
extend ActiveSupport::Concern
module ClassMethods
def hook_log
alias_method :perform_without_log, :perform
define_method :perform do |params|
perform_without_log params
log_it
end
end
end
end
class XXXJob
include JobLogger
def perform
xxx
end
hook_log
end
弄个有新意的嘛,翻来覆去一个 bbs 有啥意思。
并发的和 Node 比性能比较好点吧。
用 Excel 写宏那 Ruby 白学了。
Excel 存为 CSV 然后导入不就行了么。
其实编辑最好是用 yml, 比 csv 简单且直观。
加油!
@Rei 这个好。
没试过。应该可行吧。要么你试试这样
#routes.rb
ClientModel.pluck(:model_name).each |model|
resource model.pluralize.to_sym
end
CMS 我就知道有 RefineryCMS, RedCouch
@tommy__ 牛人是真实存在的,咱没法跟牛人比 :) 那个做 InstanGram 的小伙子之前不就是在 Google 做销售,然后心血来潮辞职花了十几天做了一个 App 么。十几天啊,咱做个模型都做不出来,更不要说做成品加学语言了,就更更不要说人家那个 App 有多大的成功了。
理工的 Phd 还是有料的,之前做研究也是要编程的,只是语言不一样,但理解绝对是很深刻。后面用不同的语言,确实可以像玩一样。
@brookzhang Form Object 剥离出特定的 validation rules 应该是有选择的,主要是不适合在 model 里面执行,跨 model 之类的。如果它的工作只是重复 model,那真的没有必要用。
像 email uniqueness 这种,按常识这种肯定是 model 和 db 的职责,就像@cxh116说的。完全不能依赖 Form object。
我觉得“幸好”这个词不对。正是因为 ActiveRecord 有保护,所以你不需要在这些 Service 里面增加复杂性,比如 Mutex 之类。
另外,我不知道你的run_callbacks
是不是用了 transaction,如果没有,应该用。
第二次提交失败是完全合理的,服务器端的工作没有任何问题。这个问题只能从前端解决。
就是这本,好像现在有 2.0 的出来了,不清楚具体是什么地方,但肯定是有的。
这个 gist 的例子写得是相当的差劲。虽然能说明可见性的道理,但代码结构一塌糊涂。B < A 然后 A 里面调用 B,不是说不能跑,但既然是写教程,最起码的 OOP 原则应该遵守,不然教别人什么。
楼主不明白的话就直接看 Ruby programming 的书吧,书里都有写,看 Ruby 文档就更好。
楼主换真人嘛,用个 logo 总感觉像外星人。另外支持@blacktulip
@flowerwrong 说明他那个组织得并不好,凑合着用吧。CSS 就算写成一个文件都可以模块化,只要名字定义合适的话。混在一起 build 起来各种麻烦。
你写个 gem 自己把文件组织好也是创造了很多价值的事情啊。以后别人就可以直接用你的 gem 了。
@winnie 你说的是和 MongoDB 的对比。hstore 是 PostgreSQL 本身内置的插件,比 JSONB 出来更早,只适用单层。如果是单层字段,当然是用单层的算法快了。
@winnie 一层就用 PostgreSQL 的 hstore, 比 json 字段效率更高。
就算是用 MySQL 或者 sqlite3, 也可以用一个文本字段来做 Hash 或者 Array,然后 ActiveRecord.serialize,只是查询比较麻烦,取值速度稍慢,基本功能没什么问题。
相比引用博客所说的这个
has_many :approved_comments, -> { where approved: true }, class_name: 'Comment'
我更喜欢这样
class Post < ActiveRecord::Base
def approved_comments
comments.approved
end
end
第一个做法,Post 了解 Comment 太多了,直接指定到了 Comment 表的字段。
第二个做法,Post 只接触 Comment 给予的 API, 至于是approved: true
还是approved: 'pass'
还是approved: 1
还是任何其他,由 Comment 自己决定。
@flowerwrong 你是说样板 gem?我随便找了一个
https://github.com/argerim/select2-rails
基本写法就是,一个/app/assets/目录,下面按常规放你的 assets, js, css, image
然后/lib/两个文件,select2-rails.rb, /lib/select2-rails/engine.rb, 只有几行。照抄换文件名目录名就行。然后就可以了,放到 github 然后定义gem 'baidujs', git: 'my_gi_repo'
。然后 require,收工。
以后 js 文件升级直接在 gem 里面升。你既可以指定版本也可以直接用 github, 反正每次 bundle install 都要去拿最新的 master,或者也可以指定 commit。
用 gem 装 assets, 然后 application.js 里面 require。如果没有现成 gem 的话就自己写一个,很简单的。第三方的文件最好不要放到 repository 里面,添乱。
@dddd1919 放到/public 里面等于是把应用的逻辑交给部署来维护,这不合适。
@qifengle 那 node 和 Java 之间是怎么通讯的?用 http+json 吗?
只有 Gemfile.lock 有变化那就肯定是直接跑bundle update
了,这个习惯太容易出坑了。
我可以小声说现在连 div 都过时了么 :) 现在流行写 section, 写有意义的 xml tags。
你可以说 Lotus 不适合,也可以说它不成熟,但它和 Rails 是不一样的。
楼主,没有像你这么写的。常用做法是给 div 加 id,比如<div id="user-123">
,然后 js 需要时自己去取出 id。
@jzlikewei 可以自定义任何东西的。def、matcher,什么都可以的。但我觉得不通用的没有必要,参数要求独特的也没有必要。如果只用一次的就直接写在代码里,该测试文件可以通用的就写在文件的下面。
:plus1: :plus1: