Ruby China
  • 社区
  • 招聘
  • Wiki
  • 酷站
  • Gems
  • 注册
  • 登录
Bian Jiaping
@bianjp
会员
第 25402 位会员 / 2016-03-10

广州
5 篇帖子 / 48 条回帖
3 关注者
2 正在关注
7 收藏
得即高歌失即休,多愁多恨亦悠悠。
GitHub Public Repos
  • popup-dict 74

    Linux 下的划词翻译小工具

  • archlinux-installer 59

    Shell scripts that help install and setup Arch Linux

  • docker-mariadb-alpine 36

    [DEPRECATED] Lightweight MariaDB docker image with Alpine Linux.

  • centos7-ops 29

    CentOS 7 运维文档

  • blog-spring 16

    Blog site built with Spring Boot

  • popup-dict-switcher 9

    Gnome Shell Extension: 一键开关 popup-dict

  • aur-fcitx-sogoupinyin 7

    AUR package of fcitx-sogoupinyin.

  • pdmreader 5

    Interactive reader for PowerDesigner PDM files

  • eos-price-crawler 4

    从 CoinMarketCap, Bitfinex, OTCBTC 抓取 EOS 价格

  • version-watcher 2

    Watch updates of some softwares and notify by email

More on GitHub
  • 概况
  • 话题
  • 回帖
  • 收藏
  • 正在关注
  • 关注者
  • 遇到 Expected string default value for '--rc'; got false (boolean) at 2017年03月04日

    Rails 4.2.8 才支持 Ruby 2.4: http://weblog.rubyonrails.org/2017/2/21/Rails-4-2-8-has-been-released/

  • 关于元编程问题 at 2017年02月25日

    https://makandracards.com/makandra/14229-the-many-gotchas-of-ruby-class-variables

    Class variables are bound at compile-time. Also note that only the class and module keywords can be used to change the scope to which class variables are bound. You can not change scope by using class_eval or instance_eval.

  • 注意 I18n.locale 是 thread-local at 2016年12月30日

    #11 楼 @grantbb 只要一个线程不交叉处理多个请求,就没什么问题。

  • 函数名容易与变量名冲突 at 2016年12月29日

    摘自 Programming Ruby 1.9&2.0。

  • 新建一个 application helper 方法出现错误 at 2016年12月11日

    有默认值的参数必须放在没有默认值的参数后面。

  • 如何在 Asset Pipeline 中引入第三方 font 资源 at 2016年12月09日

    参考 https://ruby-china.org/topics/30139#reply6

  • each 时候,往自己 push 值,为什么没有死循环? at 2016年12月07日

    是会死循环的,不信你试试 arr = [1,2,3]; arr.each {|i| puts i; arr << rand(100) } 。

    你给的例子之所以没有死循环,是因为 arr << arr.shift 相当于只是把 arr 的第一个元素移到了末尾,数组的长度并没有变化。

    结合楼上给出的源代码,循环的判断条件是 i<RARRAY_LEN(ary),既然数组长度没变,循环次数也就是固定的。

  • 注意 I18n.locale 是 thread-local at 2016年12月06日

    #6 楼 @0x005a 看起来确实是个更好的方案。

    Reference:

    • around_action
    • I18n.with_locale
  • 注意 I18n.locale 是 thread-local at 2016年12月05日

    发现官方的 Rails Internationalization (I18n) API 指南中也有提到,之前没细看,没发现。

  • created_at 不自动保存原因 at 2016年11月30日

    遇到过这种坑,数据库中若设置默认值,Model.new 出来的对象就有了这些默认值,model 中再设置默认值或检测是否设置了值时就容易踩坑。

    所以慎用数据库的默认值。

  • mina 部署时 setup 出错,试了各种办法还是不行,请帮忙看看。-_-!! at 2016年11月29日

    最可能的问题是配置问题。

    使用 GitHub 的 git 协议要求你 clone 仓库时用户的公钥在你的 GitHub 账号中。就是说只有 GitHub 的用户才能用 git 协议。部署工具自动 clone 时怎么证明是 GItHub 的用户?要么你服务器上的部署用户的 .ssh/id_rsa.pub 在某个 GitHub 账号的 SSH keys 中,要么你本地用户的 .ssh/id_rsa.pub 在某个账号的 SSH keys 中且设置了 set :forward_agent, true。

  • [广州] (外资) 诺特软件 高薪急招 高级 Ruby 开发工程师 1 人、中级 Ruby 开发工程师 1 人 at 2016年11月28日

    一个月前发了简历,结果没人回复。😂

  • 如何做到 MySQL 未启动,Rails 应用启动不报连接 MySQL 错误? at 2016年11月28日

    至于连接数据库,Rails 是在内置的 Initializers 中的 active_record.initialize_database 初始化连接的,我之前有其它需求想删除这个 initializer,但没找到方法。

  • 如何做到 MySQL 未启动,Rails 应用启动不报连接 MySQL 错误? at 2016年11月28日

    楼上检测 MySQL 是否启动的方法依赖 nc,需要单独安装。发现一种只依赖 bash 的方案:

    is_db_up(){
      timeout 5s bash -c 'echo > /dev/tcp/example.com/3306'
    }
    
  • 字符串的 “split” 编码问题 at 2016年11月27日

    Ruby 的编码分 external encoding, internal encoding。三言两语也说不清楚,你看官方文档吧:https://docs.ruby-lang.org/en/2.3.0/Encoding.html

    本例中,Windows 系统默认编码是 GBK,因此 external encoding 默认即是 GBK;internal encoding 默认是 nil,即不转码外部读取的信息。

    External encoding 和 internal encoding 共同作用,因此 Dir.foreach 获取到的文件名是 GBK 编码,你用了 force_encoding "转码" 成 UTF-8,然而事实上 force_encoding 并不会对数据进行转码,只是尝试以新的编码解读同样的二进制序列。GBK 中合法的字节序列可能在 UTF-8 中并不合法,因此就出错了。

    正确的转码方式是 file_name = file.encode('utf-8')。

    另外,测试中发现个奇怪的地方,Dir['*'] 获取到的文件名是 UTF-8 编码的。

  • Rails 新手,请教一个关于时间格式化问题 at 2016年11月23日

    类似 3 楼,我搞过另一种实现方式:

    module ActiveSupportJSONSerializerModifier
      def jsonify(value)
        if value.kind_of?(Time) || value.kind_of?(DateTime)
          value.strftime '%Y-%m-%d %H:%M:%S'
        else
          super value
        end
      end
    end
    
    class ActiveSupport::JSON::Encoding::JSONGemEncoder
      prepend ActiveSupportJSONSerializerModifier
    end
    

    (render json 时各种类型如何转换是由 ActiveSupport::JSON::Encoding::JSONGemEncoder#jsonify 控制的)

    但这样修改会影响整个应用,如果只希望改变个别 API 的日期返回格式,还是写个辅助函数在 render 前处理一遍数据,把日期对象转为字符串吧。

    比如:

    def format_time_column(records, column_name)
      column_name = column_name.to_s
      # 要点是要先转成纯 Hash,否则该列依然是日期对象,依然会被 jsonify 当做日期序列化
      records.map(&:attributes).each do |record|
        record[column_name] = record[column_name].strftime('%Y-%m-%d %H:%M:%S')
      end
    end
    
  • 使用 Ruby 处理大型 CSV 文件 at 2016年11月09日

    我觉得,处理大文件时基本原则有两个:

    1. 尽量不要一次性把所有内容都读取到内存中。按需读取,用完就释放。
    2. 尽量使用简单的数据结构。csv 文件的每一行解析为一个 hash 还是 array,在内存占用方面肯定差别很大。
  • 微信开发_服务器接口配置 at 2016年11月09日

    #3 楼 @sec Nginx + Passenger 部署模式(Passenger 作为 Nginx 的模块,而非 standalone 模式)下,Nginx 同时作为 web server 和 app server,Nginx 中配置的端口即是应用监听的端口。不需要在 Nginx 之外再启动应用。

  • Mozilla, Google, Apple 都已决定不再信任 WoSign 和 StartCom at 2016年11月02日

    Let's Encrypt 的开销挺大,目前正在众筹,有能力的朋友建议支持一下。

  • Startcom 证书已经不靠谱 at 2016年09月18日

    2016-09-06: Mozilla 考虑对 WoSign 采取行动,StartCom 可能受牵连,镜像站可否改用其它 HTTPS 证书? 2016-09-10: https 证书换为 AlphaSSL 和 Let’s Encrypt

    中科大镜像源已经行动了,RubyChina 加油啊。。

  • Startcom 证书已经不靠谱 at 2016年09月11日

    #8 楼 @lgn21st 还没搞定?

  • Sidekiq 可以独立部署在一台主机里、然后让部署在另一台主机里的 Rails 应用给它指派任务吗? at 2016年09月07日

    #9 楼 @huacnlee 没办法,公司业务杂,项目多,只能一台服务器上部署多个应用。通过 Redis 的 db 或 namespace 隔离后应该没什么问题,至少暂时还没遇到过。

  • Sidekiq 可以独立部署在一台主机里、然后让部署在另一台主机里的 Rails 应用给它指派任务吗? at 2016年09月06日

    借此贴问一下,有没有可能实现多个 Rails 应用共用同一个 Sidekiq server? 有时一台服务器要部署多个项目,每个项目都单独运行一个 Sidekiq server 的话是比较耗资源的。

    另外,Sidekiq Wiki 中推荐的守护进程管理方式是使用进程管理器如 systemd 和 upstart,然而一台服务器上运行多个 Sidekiq 实例就不太好用 systemd 管理了(需要为每个实例写一个 systemd service)。

  • Startcom 证书已经不靠谱 at 2016年09月06日

    我觉得国内 CA 不值得信任的一个重要原因是在天朝没有任何机构敢于对抗 ZF(ZF 要你签个假证书,你敢不签?)。

    可悲的是,WoSign 和 StartCom 已经在受信颁发机构列表中,你不用他们的证书没用,把他们从受信机构中删除才行,然而目前使用 StartCom 的网站似乎比较多,删除后可能会影响日常上网。

  • Startcom 证书已经不靠谱 at 2016年09月06日

    #5 楼 @lgn21st 先停止 80 到 443 的跳转,使用 Let's Encrypt 成功获取证书后再恢复跳转。后续续期时不会有问题。

    跟域名服务商无关。

    我遇到过DNS problem: query timed out,当时使用的是沃通的证书,阿里云的云解析,使用上述方案解决。不知道你遇到的是不是同样的错误。

  • 调试工具你们是 pry 党还是 byebug 党? at 2016年08月25日

    以前都是用 puts,最近才试了下 byebug,发现挺好用的。。

  • 又一个新的 RubyGems 镜像源选择 at 2016年08月18日

    Good!

  • ruby-china 的源有点慢 at 2016年08月09日

    #20 楼 @huacnlee 目前的实现方式下 rubygems.org 上更新的 gem 大概多久会同步到 ruby-china?或者还是和以前一样几乎无延迟?

  • ruby-china 的源有点慢 at 2016年08月09日

    #18 楼 @huacnlee 辛苦了,谢谢~

    有空能否分享下 bundler 从服务器获取解析依赖所需数据的几种方式(没搜到相关信息),以及目前镜像站的实现方式(找不到 bundler-api 的文档)?

    根据我的观察,bundler 从服务器获取解析依赖所需数据的方式有以下三种:

    1. /versions,其内容似乎是服务器上所有 gem 的所有可用版本列表。返回的内容相当大,ruby-china 约 9.3M, rubygems.org 为 13M,即使 gzip 压缩后也分别达 3.8M, 5.2M。感觉对本地网络、服务器带宽的要求都会比较高。
    2. 如果 /versions 不可用,请求 /api/v1/dependencies
    3. 如果前两者都不可用,请求用到的各个 gem 的每个版本(不知道从哪儿弄来版本列表的)的 gemspec 文件,请求地址如 https://gems.liveneeq.com/quick/Marshal.4.8/mysql2-0.1.0.gemspec.rz
  • ruby-china 的源有点慢 at 2016年08月08日

    #15 楼 @huacnlee bundle update --verbose

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