来讨论元编程吧 https://ruby-china.org/topics/32725 哈哈哈
elixir 还在学,暂时分享不出干货,囧
本地环境不太好
@yunshang 有,大熊猫级别
Avdi 可是偶像级人物,他写的每一本书我都买了仔细学习,这下有中文的更要收一本了。
这本书,怎么说呢,看过英文版,觉得很一般……
另外关于从 action 名称改成 url,那真是很蛋疼的事儿,写 users_path 是不是比:create 更浪费击键次数?很明显嘛……
controller 测试还是有必要的,虽然现在被抽出来了,但我个人肯定是要自己加回来的(还好 rspec-raills 没学坏)。比方说测试 application 级别的 filter,更合适利用 controller 测试来做,别忘了 ActionController::TestCase 有个叫做 controller 的方法可以让你在测试代码中模拟派生控制器:
RSpec.describe Api::ApplicationController, type: :controller do
controller do
skip_before_action :authenticate, only: [:new]
def index;end
def new;end
end
#......
context '未提供Token,认证失败' do
before do
get :index, format: 'json'
end
it '返回401状态码' do
expect(response).to have_http_status 401
end
it '返回正确的响应头' do
expect(response.header).to have_key 'WWW-Authenticate'
end
end
#......
end
恩,你是可以针对某个具体的子类来测试,但我想说,如果严格按照 TDD 的流程来做,这个时候你是还没走到子类控制器那一步的好不好……
关于 Rails 测试,或许闲下来我会写个系列探讨下。
#37 楼 @yukihiro_matz 赶紧滚回去开发 mruby 吧,等着用呢
Crystal 的静态类型决定了很多 Ruby 的元编程奇技淫巧无法实现,而且两者语法太过类似,没有新鲜感,不如直接上 Elixir 了。
def accept_remote?
#TODO
end
这本书肯定会出新版本的,说实话,称得上 rails 圣经了。
这本书前几个版本已经跟不上时代了,远不如你之前翻译的 rails tut,很多年前的评价: https://book.douban.com/review/4654745/
parsleyjs
#32 楼 @eiyamaya 《Rails 4 Test Prescriptions: Build a Healthy Codebase》 http://www.amazon.com/Rails-Test-Prescriptions-Healthy-Codebase/dp/1941222196/
原版已撸……
#8 楼 @391117134 sorry,忘记加 where 了
has_many :popular_posts, -> {where 'like_count > 100'}, class_name: 'Post'
这个才对:)
关于 结合使用 association 来实现预加载 这一节的描述,语法已经过时了,目前的 rails 版本是不认 condition 的,直接使用 lambda 作为第二个参数即可:
has_many :popular_posts, -> {like_count > 100}, class_name: 'Post'
#6 楼 @arc_start 还有就是,部署到生产环境,你是需要预编译资源文件的……
#6 楼 @arc_start 你可以随便设置的,看看 nginx 的文档就行了。主要是这句:location ~* ^/assets/
assets 的问题,也需要在 nginx 的配置文件里面指定一下你需要 serve 的文件目录:
location ~* ^/assets/ {
# Per RFC2616 - 1 year maximum expiry
expires 1y;
add_header Cache-Control public;
# Some browsers still send conditional-GET requests if there's a
# Last-Modified header or an ETag header even if they haven't
# reached the expiry date sent in the Expires header.
add_header Last-Modified "";
add_header ETag "";
break;
}
或许你忘记配置 secret.yml 咯……
自己的小玩意儿项目中用了……
哈哈,想看元编程的实际用途?改天写一篇给你们咯…… Just for fun :)
#1 楼 @beyondyuqifeng 那就不是特例了,是 gfw 的问题吗? @huacnlee
在没有 Module.prepend 之前,如果你要使用 monkey pacth 去修改或扩充现有方法的逻辑的话,只能采用 alias,否则就必须借助派生子类来干这个事情……