Ruby China
  • 社区
  • 招聘
  • Wiki
  • 酷站
  • Gems
  • 注册
  • 登录
adam.shen
@adamshen
高级会员
第 20859 位会员 / 2015-09-01

[email protected]
26 篇帖子 / 841 条回帖
81 关注者
53 正在关注
67 收藏
争取成为ruby圈一流段子手
GitHub Public Repos
  • rails_problem 5

    总结一些实现Rails常见需求所需要面对的问题

  • fetch_tieba 1

    贴吧爬虫

  • activestorage-aliyun 0

    Wraps the Aliyun OSS as an Active Storage service.

  • ruby-openai 0

    OpenAI API + Ruby! 🤖❤️ Now with ChatGPT and Whisper...

  • github-hosts 0

    通过修改Hosts解决国内Github经常抽风访问不到,每日更新

  • coding_mistakes 0

  • rspec-rails 0

    RSpec for Rails 5+

  • zxing_cpp.rb 0

    ZXing Ruby bindings for the ZXing C++ library.

  • git_flow 0

  • ruby 0

    The Ruby Programming Language [mirror]

More on GitHub
  • 概况
  • 话题
  • 回帖
  • 收藏
  • 正在关注
  • 关注者
  • ruby-china 源码中 class AccountController < Devise::RegistrationsController 是如何生成的? at 2016年01月10日

    继承自 DeviseController

    class Devise::RegistrationsController < DeviseController
    

    DeviseController 继承自 ApplicationController,parent_controller 方法返回字符串"ApplicationController",constantize 转成类名。

    class DeviseController < Devise.parent_controller.constantize
      ....
    end
    
    module Devise
      ...
      # The parent controller all Devise controllers inherits from.
      # Defaults to ApplicationController. This should be set early
      # in the initialization process and should be set to a string.
      mattr_accessor :parent_controller
      @@parent_controller = "ApplicationController"
      ...
    end
    

    也就是说它是 ApplicationController 的扩展,为了让我们使用 Devise 起来更顺手,在中间加入了大量的魔法,使得 Devise 和 Rails 一样的 automagical。

    Devise 是个巨坑,想理解推荐先看大神 José Valim 的书《Crafting Rails 4 Applications》,我也正在学习中。。。

  • Ruby 如何复制一个方法 而不是复制一个方法的值 at 2016年01月10日

    #2 楼 @huacnlee 原来还可以这样 :plus1:

  • 关于在 Rails Model 中使用 Enum (枚举) 的若干总结 at 2016年01月10日

    #13 楼 @xworm 哈哈。高明。赞。

  • 关于在 Rails Model 中使用 Enum (枚举) 的若干总结 at 2016年01月09日

    #10 楼 @qinfanpeng 这个例子确实举的不好,定义有点多余。我的原意是在 Model 里这种方式提取属性值,不用数字,类似这样。

    class Conversation < ActiveRecord::Base
      enum status: [:active, :waiting, :archived]
    
      scope :not_active, -> { where("status <> ?", Conversation.statuses[:active]) }
    end
    ``
    
  • 关于在 Rails Model 中使用 Enum (枚举) 的若干总结 at 2016年01月09日

    这个我也用过,尽量不要用数字,直接用 Hash 来访问。

    class Conversation < ActiveRecord::Base
      enum status: [:active, :waiting, :archived]
    
      scope :select_active, -> { where(:status => Conversation.statuses[:active]) }
      scope :select_deleted, -> { where(:status => Conversation.statuses[:waiting]) }
    end
    
  • 你应该使用的 5 种 Ruby 方法 at 2016年01月09日

    #12 楼 @rubyist518 哈哈,感谢,看完了,玩了个

    Array.new(3) { [1, 2, 3] }.tap {|array| puts "Array.new: #{array}"}
        .flat_map { |n| n + [4]}.tap {|array| puts "flat_map: #{array}"}
        .bsearch { |n| n > 3 }.tap {|n| puts "result <=> 4: #{n <=> 4}"}
    
    
  • 你应该使用的 5 种 Ruby 方法 at 2016年01月09日

    楼主,能不能别偷懒,应用场景和使用技巧补补齐啊,这样我才能领会。

  • will_paginate 分页过多 (大概 10000 页),点击最后几页的时候,速度明显变慢 at 2016年01月08日

    ruby-china 的分页只能查看前 69 页,也是出于性能考虑吗?我一直在看老帖子啊。

  • Ruby 語言的蠢問題 at 2016年01月08日

    Class 和 Module 本质上来说,区别不大,在 kernel 中以同一个 C 结构体来维护。

    struct RClass {
        struct RBasic basic;
        VALUE super;
        rb_classext_t *ptr;
        struct method_table_wrapper *m_tbl_wrapper;
    };
    

    大致上来说这么一个结构

    为了解决 Ruby 不存在多重继承的问题,Matz 给 Ruby 引入了 Mixin,具体用 Module 来实现。然而实现的方法很简约,就是直接把 Module 插入到 class 的祖先链里。

    所以直接把 Module 理解为 Class,include 就是多重继承也无妨。比如有三个 Class,人、猫、狗都继承自动物这个 Class,现在想写一些所有宠物共用的代码。由于猫、狗是从动物继承过来的,所以这两个类不能再继承宠物这个类,也不可能在这两个类里独立封装这些方法。这时就写一个 Module 叫做宠物,让猫和狗这两个 Class 把这个 Module Mix 进去就可以了。

    当然实际的使用中,即使是不复用的代码也可以使用 Module。把一个复杂问题拆解后,分成不同的 Module,然后一起 Mixin 到一个 Class,形成一个 Huge Class,这也是经常使用的技巧。

    PS:图来自《Ruby Under a Microscope》,坛里有大神正在翻译,期待赶紧出版。

  • Ruby 語言的蠢問題 at 2016年01月08日

    #3 楼 @xworm 最简单的方法是 alias 一个方法别名。

  • 如何理解 Module 类里面的 module methods at 2016年01月07日

    很难说用了 Module 类中那些方法实现了 module_funciton 功能,因为 module_funciton 是用 C 语言来写的,并没有调用其他方法。基本上这个 C 函数就是检查参数,查找参数里的方法名在 module 中是否存在。然后用这一句

    rb_method_entry_set(rb_singleton_class(module), id, me, METHOD_VISI_PUBLIC);
    

    将这个 instance_method 注册为 class_method。所以说 define_method 和 instance_method 两者互相独立,不存在相互调用关系,而且两者的功能完全不一样。define_method 是直接定义方法,而 module_funciton 是将本来在 module 里的 instance_method 绑定为 class_method,好通过 Module 名直接调用。

  • 为什么我们需要 Rack ? at 2016年01月07日

    好文章!

  • 全新的站内搜索上线 at 2016年01月06日

    感谢,终于不用再翻墙用 google 搜索站内了

  • Ruby China 开发环境 (Vagrant) 安裝問題 at 2016年01月06日

    #3 楼 @huacnlee 不好意思,只是想问问 2.2.3 可不可以

  • Ruby China 开发环境 (Vagrant) 安裝問題 at 2016年01月06日

    #3 楼 @huacnlee 2.2.3?

  • 刚刚发现一个 Rails 表单样式设置的小技巧 at 2016年01月06日

    确实,长度明显放在 sass 里比较科学,学习了。

  • Rails association 中的 foreign keys at 2016年01月06日

    性能上两种方式差别大吗?

  • 关于 HTML 语句如何改写为 ERB 使用 tag helper 取得默认路径图片文件 at 2016年01月05日

    #9 楼 @hxygsh 用双引号做 key,别用 symbol。因为中间有减号,词法分析时会认为 data-src 是好几个对象。

  • Rails 简单搜索求教 at 2016年01月05日

    #13 楼 @qinfanpeng 你说的对,确实如此,可能是其他地方的 each 报错吧。

  • 关于 HTML 语句如何改写为 ERB 使用 tag helper 取得默认路径图片文件 at 2016年01月05日

    #5 楼 @hxygsh 一般来说是这种形式的

    <%= tag :span, "data-src" => image_path("okwu-sm.jpg") %>
    <%= tag :span, "data-src" => image_path("okwu.jpg"), "data-media" => "min-width: 640px" %>
    
  • 关于 HTML 语句如何改写为 ERB 使用 tag helper 取得默认路径图片文件 at 2016年01月05日

    #2 楼 @hxygsh 这个 url 没有包含在 erb 里,是当 html 用吗?

  • Rails 简单搜索求教 at 2016年01月05日
    @ds = @dsa.select { |k,j| k =~/#{params[:search]}/ } 
    

    这里加个空值保护啊,万一你的检索条件是一个值也没有检索出来的,@ds就是 nil 不能用 each 方法了。

  • Show RC - ReleaseHub at 2016年01月05日

    #2 楼 @jiazhen 楼主,我正在学习你的代码,想问一个问题。这里deployments#create方法中,使用map而不是常规的each来进行迭代是有什么特殊的考虑吗?

    project_params.map do |project|
      @deployment.projects.find_or_create_by(
        :branch_id => project[0],
        :sha => project[1],
        :deployment_instruction => project[2],
        :rollback_instruction => project[3])
    end
    
  • 送几本《AngularJS 学习手册》 at 2016年01月04日

    哈哈。我也加个分母

  • 程序员经常去的网站或者获得知识最多的网站 at 2016年01月04日

    其实 code school 很不错,就是视频不翻墙看不了,不知道国内有没有可以模仿得比较好的。

  • 命令行的艺术 at 2016年01月04日

    star 数量感人

  • [上海][2016年01月19日] Ruby Tuesday 聚会召集 at 2016年01月04日

    下了班过去可能会有点迟到,不知道要不要紧。

  • 请教一下为何 JavaScript 里 right shift 所得有时会与 Ruby 里不同 at 2016年01月01日

    #4 楼 @muzik

    可能用 16 进制来看更加清楚一点

    252644352 这个数用十六进制表示是 0x0F0F0C00,左移四位,变成 0xF0F0C000 正好 32 位。对 javascript 来说,并没有溢出。

    如果表示无符号数,就是 4042309632。表示有符号数,就要算补码,除最高位取反加 1 后就是 0x0F0F4000,加上负号就是 -252657664。

    之所以 javascript 认为 252644352 是个有符号数,是因为在进行位操作时,js 默认会将这个对象转换成有符号数(不是很明白为什么要这样转化^0^)。

  • 能否举出各种例子,关于 Ruby 可以做一件事用很多方法? at 2015年12月31日

    #15 楼 @qinfanpeng 和上面的差不多 def 一个单件方法

    def C.method end

  • 上一页
  • 1
  • 2
  • …
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 下一页
关于 / RubyConf / Ruby 镜像 / RubyGems 镜像 / 活跃会员 / 组织 / API / 贡献者
由众多爱好者共同维护的 Ruby 中文社区,本站使用 Homeland 构建,并采用 Docker 部署。
服务器由 赞助 CDN 由 赞助
iOS 客户端 / Android 客户端 简体中文 / English