Ruby China
  • 社区
  • 招聘
  • Wiki
  • 酷站
  • Gems
  • 注册
  • 登录
yanhao
@yanhao
会员
第 4768 位会员 / 2012-11-28

3 篇帖子 / 134 条回帖
0 关注者
0 正在关注
0 收藏
未设置 GitHub 信息。
  • 概况
  • 话题
  • 回帖
  • 收藏
  • 正在关注
  • 关注者
  • Rails 多线程的坑,请问怎么破? at 2016年08月25日
    • Rails 版本是否大于 4?

    • 创建线程时加入一个时间间隔,比如每秒创建一个。

    • 有个 Gem 也许有用,https://github.com/grosser/parallel

  • 想知道 Ruby 对 Redis 中文数据的编码处理 at 2016年08月22日

    在 Linux 上用locale命令检查一下系统编码:

     > locale
    LANG=en_US.UTF-8
    LANGUAGE=
    LC_CTYPE=en_US.UTF-8
    LC_NUMERIC="en_US.UTF-8"
    LC_TIME="en_US.UTF-8"
    LC_COLLATE="en_US.UTF-8"
    LC_MONETARY="en_US.UTF-8"
    LC_MESSAGES="en_US.UTF-8"
    LC_PAPER="en_US.UTF-8"
    LC_NAME="en_US.UTF-8"
    LC_ADDRESS="en_US.UTF-8"
    LC_TELEPHONE="en_US.UTF-8"
    LC_MEASUREMENT="en_US.UTF-8"
    LC_IDENTIFICATION="en_US.UTF-8"
    LC_ALL=
    

    很可能系统编码不是 UTF-8,设置一下应该就好了。

  • 如何实现两个 Model 之间多个 has_many 关系? at 2016年08月22日

    has_many是一个类方法。你调用这个方法的时候,它定义了一系列新方法来实现其功能。简单的说,这个方法类似于这样:

    class ActiveRecord::Base
      def has_many(name, options = {})
        define_method name do
           # return the association
           ...
         end
       end
    end
    

    因此,你以相同的名字两次调用has_many时,第二次调用时定义的方法就把之前定义的方法覆盖掉了。 也许你只能用不同的名字,比如:

    class User < ActiveRecord::Base
      has_many :user_appointments
      has_many :store_appointments, foreign_key: 'store_id'
    end
    
  • 大家是如何搞定在 Vim 下*.html.erb 文件的排版的? at 2016年05月24日

    用 helper 消灭多行代码。

  • B/S 网站,正常使用不久,网页 post get 数据失败 [求大家帮忙,重金酬谢!] at 2015年12月29日

    不会是运行在 development mode 吧?

  • 用 Golang 和 Vue.js 重写了 Dashing at 2015年12月14日

    对于返回 10 的斐波那契数这样的请求,golang 的实现能处理 3 万~5 万次请求/秒,而 sinatra 的实现则只能处理 600 多次请求/秒。差距真是不小呀。详见 Node Express vs Python Flask vs Go vs Sparkjava vs Ruby Sinatra.

  • Nanobox 最新的 Docker 本地开发工具。for rails at 2015年11月23日

    好像只要你在源代码里改动一个字符,Nanobox 都要重新 build container, 恐怕很多人没耐心等着这个。在开发环境中使用 Docker,我觉得还是直接 mount 一个 folder 比较好。

    我在开发环境中用 Docker 有一段时间了,感觉最大的好处就是能够更快的搭建开发环境,比如,pull 一个 MySQL 的 image,往往比安装配置 MySQL 更快,就是你有 Chef 之类的工具安装配置 MySQL。

  • 关于《Programming Ruby》 at 2015年11月12日

    1.8 到 1.9 有很大的变化,有些改动导致代码不兼容,而且 1.8.6 都已经不再维护了。1.9 到 2.0 就没有兼容性问题了,只是不断增加新功能而已。 还是硬着头皮读英文吧。读一本书,同时学两种语言,不是也挺好的么。

  • Ruby 访问 MySQL 字符编码问题 at 2015年11月11日

    应该是写在 database.yml 中的:

    development:
      adapter: mysql
      encoding: unicode
      ...
    
  • 如何关闭 Rails 4.2 在 MySQL 的毫秒精准度支援 at 2015年11月03日

    不知道这个是不是有关:

    config.active_support.time_precision sets the precision of JSON encoded time values. Defaults to 3.

  • 多线程多核的利用问题 at 2015年10月10日

    可以看一下这篇文章,Ruby Concurrency and Parallelism: A Practical Tutorial,从概念到实现都讲得很清楚。

  • 关于 super 在 ActiveRecord 中的使用 at 2015年09月24日

    "'http://XXX/default.png'}"不属于 Model,属于 View,因此,写到 helpers 里更合适,或者使用 decoretors,如draper.

  • 如何在 controller 中捕获 SyntaxError 异常 at 2015年09月11日

    web-console 能够捕获是因为造成异常的源代码在其他文件中。假设有如下代码:

    a.rb

    bad code
    

    b.rb

    begin
      require "./a"
    rescue Exception => e
      puts e.inspect
    end
    

    ruby b.rb将打印出 SyntaxError。

  • 寻求好的解决方案 at 2015年09月09日

    #9 楼 @msg7086 我写的查询得到的结果就是 users,为什么还要include(:user)?

  • 寻求好的解决方案 at 2015年09月08日

    问题是不是也可以这样描述:对每个用户 coins 最多的 Transfer 排序,取出前 100 的 Transfer(用户)?

    首先,我不建议使用 raw SQL 做查询,最好使用scope,以便日后的代码重用。

    比如,在 Transfer 中定义这样的scope:

    class Transfer < ActiveRecord::Base
      scope :max_coins, -> { select("max(coins) as max_coins") }
    end
    

    然后可以构造这样的查询:

    User.joins(: transfers).merge(Transfer.max_coins).group("users.id").order("max_coins desc").limit(100).select("users.id")
    

    试试看能不能得到你想要的结果。

  • 大家好,问一个 Ruby 的基础问题。 at 2015年08月22日

    start_date = @options.date的意思是定义一个 local variable,然后赋值给它,而不会调用start_date=。正确的写法是self.start_date = @options.date。

    另外,不必为 accessors 写方法,查一下怎么用attr_accessor。

  • 用户输入特殊字符保存到数据库后提示 invalid byte sequence in UTF-8 at 2015年08月19日

    #9 楼 @Ddl1st 我觉得应该是修正 HTML 中的错误,不然,从服务器端很难准确判断浏览器提交的字符串到底是什么编码。

  • 用户输入特殊字符保存到数据库后提示 invalid byte sequence in UTF-8 at 2015年08月19日

    #5 楼 @Ddl1st 数据库不做转码,给它什么它就保存什么。先检查一下表单 POST 的字符串是不是 utf-8 吧。一般表单的源码是这样的:

    <form class="..." id="..." action="..." accept-charset="UTF-8" method="post">
    <input name="utf8" type="hidden" value="&#x2713;" />
    ... ...
    
  • 一个 关于 each_with_index 函数问题 at 2015年08月19日

    是不是因为"0" > 0抛出异常了?

  • 用户输入特殊字符保存到数据库后提示 invalid byte sequence in UTF-8 at 2015年08月19日

    应该不需要 middleware,可能只是配置的问题,比如 config/database.yml 里面的encoding,mysql 里表的编码等。如果从浏览器到数据库的编码都是utf-8,任何地方都不需要转码。

  • 数据迁移和模型里面 validate 区别 at 2015年08月14日

    可以通过Pessimistic Locking来避免ActiveRecord::RecordNotUnique.

  • [北京] FreeWheel 招聘高级 Ruby 开发工程师,年薪 35w 起~~ at 2015年07月28日

    这张图的标题是“厨余、可回收和其他”? 厨余、可回收和其他

  • 如何加快首页加载?求助 at 2015年07月27日

    应该是很多时间花费在载入 Rails 上了。试试这个,passenger_pre_start.

  • 使用 Webmock 和 VCR 搭建测试,对调用第三方 API 库的支持 at 2015年07月22日

    是不是可以在第一次调用时请求真实的 API,然后把数据缓存起来,之后的请求就可以一直使用被缓存的数据

    VCR 默认的工作方式就是这样的,也许你只需要删掉这行:WebMock.disable_net_connect!(allow_localhost: true).

  • 如何用 Ruby 实现类似 Clojure 中的 reducer? at 2015年07月15日

    有意思,分明是 map,为什么叫做 reducer?

    [1, 2, 3, 4].map {|partial| partial + 1}.map {|partial| partial * 2}
    
  • 用了 Ruby 以后,发现瓶颈已不在数据库,而在语言 at 2015年04月29日

    Ruby on Rails 在运行速度或性能上对其他语言少有优势。大家选择它是因为开发速度快。经常看到有人说,你用 Ruby on Rails 做出产品来,当你的用户足够多,以至于 Rails 成为瓶颈时,你肯定有足够的资源找人用性能更好的语言改写。

  • [新手指南] Ruby 的 Block 以及 Proc.new 与 Lambda 的区别 at 2015年04月19日

    再讲一下 closure 就全面了。

  • File.write (filename, text) 是否线程安全? at 2015年04月19日

    the GIL did, in fact, make MRI's native C method implementations atomic

    MRI 原生的 C 语言编写的函数都是线程安全的。参考原文。

    而File.write的实现是 C 函数rb_io_s_write, 因此,File.write应该是线程安全的。

  • Ruby on Rails 有关数据查询语句的条件设定的问题 at 2015年04月19日

    查文档,看看where, limit和order都是什么意思就明白了。

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