参数解析的中间件位置在 routing 前面,还没到达 controller,所以 controller 里捕获不到这个异常。
我知道一个方法是在前面插入中间件,参考 https://robots.thoughtbot.com/catching-json-parse-errors-with-custom-middleware
我每次改都看不懂,已经放弃举不出例子。
我一直不建议用 devise。确实它开箱即用,能快速搭建一个 demo,但是向生产环境迈进的时候就要做大量修改(例如把模版 dump 到项目里修改),修改功能时要了解它非常复杂的内部构造,逐渐修改成本大于自己写的成本。等到发现的时候就已经尾大不掉,只能凑合了。
账号系统是功能核心,一开始就应该自己写。
一次性小文件就 send_data,跨请求就放云储存了。
前面加 CDN。
你要的是
每个客户的数据单独进行管理
而不是
每个客户的数据库单独进行管理
吧。
客户需要数据隔离就单独部署,不在乎就共用数据库。应用层不分单独分数据库有何意义。
要回到前一页有几种方法:
class Report
# 安全原因,阻止用户提交预料外的东西
validates :reportable_type, inclusion: { in: %w(Comment) }
end
new_reports_path(reportable_type: 'Comment', reportable_id: @comment.id)
def new
@report = Report.new report_params
end
def create
@report = Reports.new report_params.merge(reporter: current_user)
if @report.save
# ...
else
# ...
end
end
private
def report_params
params.require(:report).permit(:reportable_type, :reportable_id, :content, :radio_content)
end
<%= form_for @report do |f| %>
<%= f.hidden_field :reportable_type %>
<%= f.hidden_field :reportable_id %>
<% end %>
<%= form_for [@reportable,@report] do |f| %>
这里有错,根据这个参数 form 会推导两级的路由 comment_reports_path,但是路由里并没有这个路由,需要再加上 @question
。
<%= form_for [@question, @reportable, @report] do |f| %>
但是这里可以看到,本来想多态关联 reportable 让 report 跟灵活,却不得不插入不相关的 question,灵活性受阻。
这里不应该用多级路由,而是一级的 report 路由:
resources :reports
把 reportable_type 和 reportable_id 作为参数传。
https://github.com/github/dmca/tree/master/2018
GitHub DMCA 没有记录,应该是作者自己删的。
我靠。
日志贴全。
彩程那个之前大概半年没更新,也有一些 bug 直接用跑不通,后来提交 issue 之后就更新了。
代码上我觉得彩程那个功能更专一,assets 我是通过 CDN 回源处理的,不需要扩展 sprokets。
因为他们前端没用 activestorage.js 而是自己实现,所以 dicret_upload 不能直接用,我想仿照你的实现给他们提个 pr。
有个问题,你的实现是更改了原先的 xhr 还是另外发起一个,原先的 xhr 会重复发送吗?
这个 gem 相比 https://github.com/mycolorway/activestorage_qiniu/ 的优势是什么?
是的,我也试试这个方法。
先把这个语法错误改了:
# wrong
class User < ApplicationRecord
has_many :microposts
validates name, presence: true
validates email, presence: true
end
# right
class User < ApplicationRecord
has_many :microposts
validates :name, presence: true
validates :email, presence: true
end
can't activate mysql2 (< 0.6.0, >= 0.4.4), already activated mysql2-0.3.21
版本不符合要求,bundle update mysql2
。
然后呢?什么错?
去掉 activerecord-mysql2-adapter 了没。
用这个 gem activerecord-mysql2-adapter
做啥?
https://github.com/kronn/activerecord-mysql2-adapter
6 年没更新了,看来只是 ActiveRecord 没支持 mysql2 之前的过度 gem,应该会产生冲突。
我对这个特性不太感兴趣,一来自己的项目通过命名规范隔离已经足够,二来避免使用污染全局空间的库。ActiveSupport 是个特例,它是 Rails 的依赖不得不用,用起来也感觉良好。Rails 不用每个文件写一堆 import 也是它的优点。
最近用 ActiveStorage 的时候处理 js 端时发现问题,七牛的 js 上传逻辑跟 activestorage.js 里的不一样需要改写,但是这个包经过 ES6 的规范化打包之后,外部完全动不了里面的逻辑。本来只是改写一个方法可以搞定了,结果不得不把整个 js dump 到项目里改写。我还没想好怎么提 pr 让 activestorage.js 提供接口定制不同 service 的上传逻辑。
所以有了包的概念以后又不得不考虑怎么方便的问题了。
艹
用 Protocol Buffer 就上 gRPC https://grpc.io/
是不是个人屏蔽了一些用户。
别管 Gemset,被 Bundler 替代了。
为什么就没人封装一个 jquery 选择器语法的
前面只是说选择器语法。
Ruby China 组织会议从来不以营利为目的。
我找 @jasl 了解了一下,他提供了一些过往的资料,但没有参与组织。其它 Ruby China 的管理员都不知道这件事。
我觉得 Ruby 社区比较小,要举办 Conf 应该集合社区力量办好一个。今年 jasl 工作繁忙没空组织,已经把会议推倒明年了。如果 @rocLv 想接过大旗,应该跟我们商量(只跟 jasl 讲了),如果合适,由楼主主办,Ruby China 协办,甚至做得好以后就由楼主主办。管理群的人有过往的组织经验、讲师联系方式、赞助商渠道、物料渠道、志愿者关系、录像技术……大伙一起把会议搞好,让 matz 看到中文社区的活力。
没有规定说 RubyConf China 一定要谁来主办,楼主能邀请到 matz 也是有本事,我现在很担心会议水准不能让 matz 满意。管理群除了 jasl 外都不知道这事,都没有做准备,现在时间也很仓促。