搞好了,是 nginx 里要用 fullchain.cer,之前用错了。。
建了一个 [email protected],能看到吗?
好像别人都看不到我,不知道哪里搞错了。。。
ruby 有个钩子叫 method_added,然后拿到名字以后,用 instance_method 把方法拿出来,再 bind(xx).call 就好了,这样可以不用写 eval 字符串(虽然可能更快)
发两次请求还有一种可能是 chrome 插件导致的,可以开隐身窗口排查一下
但是 ruby 的核心之一是打开类,在运行时修改类定义,所以编译期查找方法是不可能的;假如需要缓存方法路径,现在也可以缓存,这个和有没有类型应该没关系。
另外 matz 很讨厌 java 那种手写 types,ruby 不可能会做成 java 这样的。。Ruby3 大概会给你照 respond_to?推一下,类 ruby 的静态类型语言可以参照 crystal,但是我觉得没有意义,想真的要享用类型系统的好处的话,还是建议去用 rust 或者 haskell。。。
嗯。。类型定义应该要先跑一遍。。宏的话我自己都还不会用= =
有了类型之后又会想要积类型 和类型,递归类型,依存类型。。。在没有完美的类型体系之前我觉得鸭子类型才是最好的。。。
能跳 js 和 go 说明不懂 ruby 的一分一毫啊...
红轴比茶轴好。。茶轴杂音多而且毛毛的触感,你喜欢轻的话茶轴会不够轻,品牌可以随意,只要是 cherry 原厂轴就行
md5 是摘要算法,不可逆,1g 的文件 md5 也是 32 个字符
嗯,你可以用 htop 看看内存使用情况,一般而言 128m 对 rails 进程是不够的,刚刚试了一下,一个空的 rails 项目,开发环境启动就要 68M,进行一个空页面的请求之后已经 96M 了。
底下有 rescue
128m…估计炸得不能再炸了……
如果项目大,开发环境渲染 views 确实可以占到几秒甚至十几秒,但是我觉得你这个应该是爆内存然后跑到 swap 导致慢
正常来讲不是应该一个 api 一个域名么。。不然怎么区分哪个 url 是哪个用户的,难道添加的时候先检查占用?所以直接开多个 Rails 应用,然后把数据库里的路由导入成 rails 路由就可以了。。。
另外我觉得这个 controller 怎么设计也还很多疑问,如果开应用成本太高,不一定要用 rails 的。。
感觉开 repo 和发帖对于刷题来说就是 flag 一样的存在....
yehuda 的博客说过 ruby 的 db adapter 在多线程下都是不会阻塞的,file 的话不清楚,如果对 file 的接口做同样的处理,那么是不是即使不用 em,普通的多线程也可以把 cpu 跑满呢?
当你有几个子类要继承同一个父类,但是并不是 STI 的时候,在父类声明 abstract_class,在子类声明各自的 table_name http://api.rubyonrails.org/classes/ActiveRecord/Inheritance/ClassMethods.html
ApplicationRecord 就是个 abstract class,他是 ActiveRecord::Base 和你的实际 model 中间的一层,使你对 ApplicationRecord 的扩展不会影响 ActiveRecord::Base。而要做到这个,常规情况你需要有个名为 application_records 的表。
因为要用 uglify.js 压缩 js 代码
按需取用吧,**的好处是以下情况可以正确捕获
def t a = 1, b, **c
p a,b,c
end
def t2 a = 1, *b, **c
p a,b,c
end
t 1, a: 1 #=> 1 1 {:a=>1}
t 1, 'a' => 1 #=> 1 {"a"=>1} {}
t2 1, a: 1 #=> 1 [] {:a=>1}
t2 1, 'a' => 1 #=> 1 [{"a"=>1}] {}
行为各异,能用就好
https://ruby-china.org/topics/29703 用这个你还可以用 lisp 开发 ruby,不用任何扩展
#5 楼 @flemon1986 应该也行,还差个 foreign_key,只是用 Product 还是用 ReviewSummary 来实例化的问题,反正 avg_star 肯定读的到的
熊没了....
#3 楼 @flemon1986 我找到办法了
class Product
has_many :reviews
has_one :review_summary
end
class ReviewSummary < ApplicationRecord
self.table_name = 'reviews'
default_scope {
from('products').
joins('INNER JOIN reviews ON reviews.product_id = products.id').
select('products.id as product_id, avg(stars) as avg_star')
}
end
然后
p = Product.includes(:review_summary).first
p.review_summary.avg_star # => 平均评分
这样就可以利用 includes 把统计数据都查出来了,生成的查询是这样的
SELECT products.id as product_id, avg(stars) as avg_star FROM products INNER JOIN reviews ON reviews.product_id = products.id WHERE "reviews"."product_id" IN (1, 2)
上面是用 reviews.product_id 用来做 where 条件的,可能有点巧合的感觉,一种更好的配法是
class ReviewSummary < ApplicationRecord
self.table_name = 'products'
default_scope {
joins('INNER JOIN reviews ON reviews.product_id = products.id').
select('products.id as id, avg(stars) as avg_star')
}
end
class Product < ApplicationRecord
has_many :reviews
has_one :review_summary, foreign_key: :id
end
生成的查询是:
SELECT products.id as product_id, avg(stars) as avg_star FROM products INNER JOIN reviews ON reviews.product_id = products.id WHERE "products"."id" IN (1, 2)
用 products.id 来写 where 正是我们想要的行为,完美。。这样虚拟出关联还是相当好玩的,不用 create view 了
#6 楼 @mizuhashi 都说了 Price 类没有 Bicycle 的知识。。STI 和多态关联是两套独立的系统,多态关联只要把 STI 相关的过程委托给 STI 的基类就可以了,根本不需要知道他有什么子类。。。
你如果发现取不出正确的数据可以讨论一下,如果是觉得实现不爽,或者是哪里还要用数据表这个栏位,那你只能自己去改 AR 的查询代码,反正 ruby 有打开类,按你喜欢的实现就好了
这个不属于 STI 吧,如果是 STI 的话你的 car 表应该有 type 列,然后初始化的时候应该就会初始化成 Bicycle
#1 楼 @flemon1986 foreign_key 有的,例如select products.id as product_id, avg(stars) as avg_star from products join reviews
,可以把 products_id 作为这个表的外键