#15 楼 @yangman_wenzhu 公司的猫天天赖我这,好像没怎么粘到猫毛
发一个我的试穿...
#14 楼 @maclinuxp 起初 RubyChina 是山寨 V2EX 的...后来很多社区论坛就都转过来山寨 RubyChina 了...或者有不少论坛直接拿 RubyChina 的搭
推荐 @luikore
#9 楼 @dsh0416 我其实第一个看的部分就是路由 XD 现在的实现太初级了,我记得之前我好像在跪圈群里介绍过 mustermann ?Rails 的 Journey 强大归强大,但是代码可读性太差了
我在想的是路由抽成接口 RouterEngine
,然后写一个简单的 Wrapper MustermannRouterEngine
就接入进来了,以后要是有更高的性能实现也容易替换
其他的部分过了一遍但是现在印象不深了
已经读完代码并且骗了几个 PR 了,还有很多工作要做的,很担心随着功能增多,效率和 Sinatra 趋同。不过,如果提供完全的异步 IO,你说的场景肯定会比目前市面上的快吧
另外淘宝源的历史使命已经结束了,切换到 ruby-china 源
这个坑是你没有用 rvm 安装 ruby 造成的,通过 rvm 安装他会自动帮你在编译的时候链接好 openssl、readlines 等依赖(如果没有会自动下载安装)
直系学弟的团队,聊过了方向上国内还是空白的(和石墨方向不同),有兴趣的话可以跟他聊聊
#36 楼 @geeker4py 嗯,等我拿到样品没有问题的~
#7 楼 @firebroo
Rails 的方式安全,表单的重放攻击可以通过 CSRF Token
来防止,即你在控制器加入 protect_from_forgery
(在 ApplicationController 默认包含的,所以其子类都会受到保护),这时候,你在生成的 HTML 的 <head></head>
里可找到形如 <meta name="csrf-token" content="8MCrc1N+u+FfLYTsrpqsLW41/I0s3rWf6zk6Cib2tt5T0pu1ErBMAeWIkd5AlFJ3Q69b/k8vX14dxZ7RBFVDfA==">
的标签,在遵守 Rails 的标准开发方式的时候,当表单提交时,其中的 content
会作为请求头的 X-CSRF-Token
字段传递给后端(由jquery_ujs
实现),这块通过一个 Rack 中间件来处理(没记错的话)
但是在采用非 Rails 标准方式实现的时候,或者暴露 API 的应用,这个机制会失效
用 Go 实现多好,这样还可以把论坛程序本身本身当成平台,为社区做一些技术布道,还有新人入门
是的 Rails 的 session 是通过 cookie 实现的,不是 Rucaptalcha 的问题
又一家三元桥的...改天可以搞搞联谊了...
seed.rb 是一个 Ruby 代码文件的,并且引入好 Rails 的上下文似的你可以引入 Gemfile 的 gem 以及调用模型。 知道这个就很容易了,生成假数据无非就是编写一个生成规则(你提到的 gem 都是内置了各种规则嘛)然后操作模型持久化这些生成的数据即可。
学 API 设计看 Github 的就可以了 相当标准,学代码 看 RubyChina 的也可
ls 说的思路对,补充一点是 Rails 请求的 Log 里打印的 Parameters 是真理
不过那 gem 没封装 form helper 所以用的时候可能比较麻烦,我建议自己写个 helper,比如我们的
def address_select(f, address, field, options = {})
case field
when :province
select_tag "#{f.object_name}[province_code]",
options_for_select(ChinaCity.list, address.province_code),
{prompt: '- 省/直辖市 -'}.merge(options)
when :city
select_tag "#{f.object_name}[city_code]",
options_for_select(ChinaCity.list(address.province_code), address.city_code),
{prompt: '- 城市 -'}.merge(options)
when :district
select_tag "#{f.object_name}[district_code]",
options_for_select(ChinaCity.list(address.city_code), address.district_code),
{prompt: '- 地区 -'}.merge(options)
else
''
end
另外,好像那 gem 的 jquery 代码我记得有点问题...我忘记当初因为什么没有 PR 回去了(貌似跟项目耦合还是啥情况来着。。三年前的事情了),我贴下我项目里重写的版本
(($) ->
$.fn.china_city = () ->
@each ->
$selects = $(@).find('.city-select')
$selects
.on 'change.city', ->
$this = $(@)
select_index = $selects.index($this)+1
select = $selects.eq(select_index)
# clear children's options
$selects.slice($selects.index(@) + 1).each ->
$(@).children().slice(1).remove()
# when select value not empty
if select[0] and $(@).val()
$.get "/china_city/" + $(@).val(), (data) ->
options = select[0].options
$.each data.data, (i, item) -> options.add new Option(item.data[0], item.data[1])
$ ->
($cityGroup = $('.city-group')).length and $cityGroup.china_city()
)(jQuery)