• 好玩~

  • 更新一下进展: 问题 1. 经询问 sidekiq 的原作者,他表示 brpop 这个操作是必须的,建议我使用单节点的 Redis。 问题 2. Resque 倒是没有用 brpop,但是调用了一个 keys 方法,这个方法公司的 Redis 也不支持【还没有尝试,估计一样会掉线】...

    又想了两条路: 1.绕开 Redis,找个不依赖于 Redis 的队列 2.老老实实用单节点的 Redis

    已经吐血斗升,个人更倾向于使用单节点的 Redis 的... 如果大家有用 sidekiq,可以说说你们的 Redis 出过问题没...

  • @rei @numbcoder @embbnux 3Q ALL,现在问题 1 的答案基本已经清晰了。

    问题 2 的话,我估计只有两条路可以走了:

    1. 尝试修改 sidekiq 源码,将阻塞型操作替换成非阻塞型。
    2. 尝试用 Resque 或其他队列系统替换掉 sidekiq,前提是这些队列中也不会有阻塞型操作

    除非能找到一些证据证明单节点的 Redis 也是能够提供可靠服务的。

  • @nouse 现在主要考虑的是单节点 Redis 的可靠性,以及多个 Redis 方不方便后期的维护。

  • @karloku 也就是说,一个 web server,可能会有多个 redis 服务器,这种算比较普遍的情况咯?

  • @numbcoder 对的,我从同事那了解到的是,是有一个代理层做业务转发,遇到不支持的命令,这个代理层就直接掐断连接了。

    那这种情况下,sidekiq 有可能直接调用rpop么【我尝试修改了一下,没有报错了,但是 sidekiq 彻底不工作了】...

    还有一种比较省事的办法,我申请一个单节点的 Redis,当时申请 Redis 的时候考虑到分布式的可能服务更稳定一些,单节点的万一服务挂了,就彻底挂了

  • 这个怎么玩儿? at 2016年04月11日

    LZ,你的主帖中c_d_1目测要改为c_d_4吧...

  • @dorentus eval确实被 rescue 捕获住了,神奇

    @qinfanpeng :plus1: 我就是好奇,因为syntax error最容易复现,就尝试了下

    @adamshen这个么?

  • 使用 Rails 构建 API 实践 at 2016年01月19日

    感谢 LZ 的分享,提个小问题:

    # base_controller.rb
    # disable the CSRF token 
    protect_from_forgery with: :null_session
    

    这里,既然已经独立出来了一个base_controller,那是否可以直接把 CSRF 防御给关闭了:

    skip_before_action :verify_authenticity_token
    

    否则 Log 中每次请求都会出现一个 info 信息,很烦人:

    Can't verify CSRF token authenticity
    
  • WIKI 更新 at 2016年01月06日

    @huacnlee

    wiki中的 rvm 的安装方式似乎失效了

    $ curl -L https://get.rvm.io | bash -s stable
      % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                     Dload  Upload   Total   Spent    Left  Speed
    100   184  100   184    0     0    106      0  0:00:01  0:00:01 --:--:--   190
    100 22721  100 22721    0     0   9823      0  0:00:02  0:00:02 --:--:--  9823
    Downloading https://github.com/rvm/rvm/archive/1.26.11.tar.gz
    Downloading https://github.com/rvm/rvm/releases/download/1.26.11/1.26.11.tar.gz.asc
    gpg: directory `/home/xxx/.gnupg' created
    gpg: new configuration file `/home/xxx/.gnupg/gpg.conf' created
    gpg: WARNING: options in `/home/xxx/.gnupg/gpg.conf' are not yet active during this run
    gpg: keyring `/home/xxx/.gnupg/pubring.gpg' created
    gpg: Signature made Tue 31 Mar 2015 05:52:13 AM CST using RSA key ID BF04FF17
    gpg: Can't check signature: public key not found
    Warning, RVM 1.26.0 introduces signed releases and automated check of signatures when GPG software found.
    Assuming you trust Michal Papis import the mpapis public key (downloading the signatures).
    
    GPG signature verification failed for '/home/xxx/.rvm/archives/rvm-1.26.11.tgz' - 'https://github.com/rvm/rvm/releases/download/1.26.11/1.26.11.tar.gz.asc'!
    try downloading the signatures:
    
        sudo gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3
    

    rvm 官网上的安装步骤的第一步里也提到,需要先执行:

    $ gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3
    

    然后再

    $ curl -L https://get.rvm.io | bash -s stable
    
  • 我暂时是这么做的:

    # A_REPOSITORY_URL为你fork的开源项目
    git remote add upstream A_REPOSITORY_URL
    
    # pull upstream的相应分支(比如master) 
    git pull upstream master
    
    # 最后push回github上自己的repo 
    git push origin master
    

    似乎能满足 LZ 的需求

  • belongs_to :A, foreign_key: "XXX"
    

    试试这样呢?

  • Passenger 可以使用:

    touch ./tmp/restart.txt    
    

    这种方式的机制是: Once Passenger has noticed that the file's timestamp has changed, it will restart the application.

  • 一个路由设计的问题 at 2015年11月23日

    我也遇到了同样的问题,你现在这样的写法其实已经可以了。可以用except排除掉多余的路由。

    Shallow Nesting 是把index, new, create这三个 action 变为嵌套路由,剩下的不用嵌套。和我的需求稍稍有些差异。

  • 我也遇到过这种问题,想了想觉得可能是因为我们用到了active_resource,这就和网络情况有关系了。

  • 数据迁移的问题 at 2015年10月23日

    你可以尝试也通过 sql 文件导入的形式在本地新建一个数据库,然后运行:

    rake db:schema:dump
    

    帮助你生成 schema.rb 文件

  • 华顺讲 High 了... at 2015年10月10日

    还在上班的坐等视频啦,希望能尽快看到~~

  • 在 Gemfile 中指定你的 mysql 版本为 0.3.x,不要最新的 0.4.0 详细见这里: https://github.com/brianmario/mysql2/issues/675 https://github.com/rails/rails/issues/21544

  • 👎 不好看

  • 微信开放平台 Omniauth 探索 at 2015年08月09日

    @springwq 谢谢~已经 merge 啦~

  • ruby-china 导航的源码在这里

    这里也有很容易做出来的漂亮导航,需要用到 Bootstrap 框架。

  • 微信开放平台 Omniauth 探索 at 2015年06月20日

    @vmeng 不要关闭rails s,你开了ngrok,本地既可以用localhost:3000打开,也可以使用ngrok设置的地址打开啊~

    平时我们运行了rails s之后,都是打开localhost:3000,你现在直接打开ngrok设置的地址就好。

  • 数组 collect 问题 at 2015年06月09日

    @gu_bonjour 等价于:

    str.split.map {|s| s.capitalize}.join(' ')
    
  • 数组 collect 问题 at 2015年06月09日

    唔...感觉可以写得更简单一些:

    str.split.map(&:capitalize).join(' ')
    
  • 我今天也遇到了同样的情况,换成了官方的源解决。

  • 1.在广州的游戏公司... 2.有意往【杭州】发展...

    我猜是网易咯

  • 微信开放平台 Omniauth 探索 at 2015年05月07日

    @zlx_star 赞文章,说得挺全!我就是看到参考资料中第二篇提到了ngrok才去试用一下,发现还不错。

  • 微信开放平台 Omniauth 探索 at 2015年05月04日

    @ruby_sky 哦,我懂啦,同样零基础开始开发的话你说的方式应该更简单。 我因为是在 skinnyworm 的源码基础上修改出来的,很多坑他都踩完啦,所以也没花费太久时间。 看你开源了好多的微信相关的 Gem,赞!

  • 微信开放平台 Omniauth 探索 at 2015年05月04日

    Hi @ruby_sky 你这应该是微信公众平台的 OAuth 流程 我看链接/connect/oauth2/后跟的是authorize哦:

    WeixinAuthorize.open_endpoint("/connect/oauth2/authorize?appid=#{app_id}&redirect_uri=#{redirect_uri}&response_type=code&scope=#{scope}&state=#{state}#wechat_redirect")
    

    微信开放平台这一步的链接/connect/oauth2/后面跟的是qrconnect,略有区别。

    我当初就是想找一个微信开放平台 omniauth strategy 的 gem,就像 omniauth-github、omniauth-linkedin 一样的,却没有找到,只找到了微信公众平台的,就只好自己实现了。