2023 年九月 一 二 三 四 五 六 日 « 二 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 分类目录
-
近期文章
近期评论
- Dillon 发表在《Mac OS代理工具Proxifier》
- RobertFluch 发表在《Bash Shell 快捷键》
- brew 不可用,重新安装 发表在《Mac下删除自己安装的Python》
- 子陵 发表在《Mac下删除自己安装的Python》
- Yucun 发表在《Mac下删除自己安装的Python》
文章归档
标签
7-zip 7zx active record CentALT cookie crontab dreamhost eclipse EPEL fast GarageBand google hyk-proxy LITTECMS mail mysql2 MySQLdb netgear nginx office PIL ports Proxifier pydev python readability requests sleep timeout torrent ubuntu unicorn urllib2 urlopen web.py yum zoc 下载 二笔 亿恩科技 吉他 睡眠 编码 路由 郑州景安
Category Archives: ruby on rails
rails 中使用 mysql 的 MEDIUMTEXT 数据类型
接收用户的数据,像论坛的内容、博客的内容等等这样的数据,rails 中的 text 类型 默认使用的是 mysql 中的 TEXT 类型,该类型默认只能容纳 65535 bytes (~64kb), 要想使用 MEDIUMTEXT 或者 LONGTEXT 类型,只需要加上 limit 参数即可,比如想使用 MEDIUMTEXT 类型, 使用 add_column :table, :column, :text, limit: 64.kilobytes + 1,limit 参数比 65535 大 1 就是 在 MEDIUMTEXT 范围内,就会自动使用 MEDIUMTEXT, LONGTEXT … Continue reading
使用 rbenv 代替 rvm
之前一直使用 rvm,本地使用还好,没什么不好的地方,但是在服务器上需要开机启动 unicorn,这个就有些麻烦了,之前写过方法,很麻烦 看到 rbenv,就在本地用了下,非常好,有意想不到的效果,mac 上安装 ruby 2.0,他能自动把最新的 openssl 1.0.1e 安装上,rvm 的话需要先安装 homebrew ,使用 homebrew 安装最新的 openssl,然后才能安装 ruby 2.0 本地使用还有一点和 rvm 不同,rvm 可以直接执行 rake,用了 rbenv 之后需要使用 bundle exec rake … 方法执行 rake,不然会遇到版本问题 服务器上开机执行 unicorn,就比 rvm 太简单了, 直接在脚本里面加上下面一行就可以了 PATH=$HOME/.rbenv/bin:$HOME/.rbenv/shims:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin 综合来说 rbenv … Continue reading
Ruby 隐藏证件号码的某几位(给证件号打码)
module RangeMasker def mask(start, len, char = “X”) masked = dup masked[start, len] = char * [len, masked.length - start].min masked end end number = “12345678901234567890″ number.extend RangeMasker number.mask(10, 2) => “1234567890XX34567890″
Posted in ruby on rails
Leave a comment
Rails Production环境中关闭/禁用日志
在文件 config/environments/production.rb 中添加: config.logger = Logger.new(‘/dev/null’) 测试过给 config.logger 设置为 nil 无用
Ruby 2.0 double splat (**) 双星号的一些用法
double splat 除了可以在方法定义中简化 opts 外, 还可以用来组装 hash, 以后可以少写几个 merge 了: h1 = {a: 1} h2 = {b: 2} h3 = {**h1, c: 3, **h2} #=> {:a=>1, :c=>3, :b=>2} 后放入的项会覆盖前面的项 h3 = {**h3, a: ‘rewritten’} #=> {:a=>’rewritten’, :c=>3, :b=>2} 任何实现了 to_ary … Continue reading
Posted in ruby on rails
Leave a comment
Unicorn 无缝重启
无缝重启: 重启过程中不能中断服务,因为网站都是需要7×24提供服务的,不能每次更新代码网站都有一断时间 无法访问,虽然中间可能只有不到1分钟的时间。 不管任何服务进程要实现无缝重启,大概都得按照先开新的进程接,然后优雅的结束老的进程, 优雅的结束老的进程意思是老的进程要处理完当前的请求之后才能结束。 Unicorn 无缝重启简单 5 步搞定:(官方的文档) 给 Unicorn 主进程发送 USR2 信号 kill -USR2 pid 确定当前新的主进程已经完成启动,如果使用 pid 文件,那么会生成一个 .oldbin 的文件存放老的主进程 pid。 现在呢,会有 2 个主进程和双份的 worker 进程,类似下面的进程树: unicorn master (old) \_ unicorn worker[0] \_ unicorn worker[1] \_ unicorn worker[2] … Continue reading
unicorn 部署 Ruby on Rails 开机自启动
最近把 s.yanghao.org 从 php + python 转型到 Rails 框架, 第一次使用 Rails 遇到的麻烦真不少,最麻烦的还真得算部署, 如果不计较安全问题,统统使用 root 帐号操作,这些问题就不是什么问题, 为了安全,我们做以下限定: 不能使用 root 帐号运行 unicorn 进程 运行 unicorn 的帐号不能有 sudo 权限 为了使服务器能运行不同 ruby 版本,应使用 rvm 用户模式安装 ruby 这些为我们带来的问题: 开机需要自动运行 unicorn 重新部署之后需要重启 unicorn 开机自动运行 unicorn 可以使用 … Continue reading
ubuntu 12.04安装ruby mysql2 gem的问题
gem install mysql2 出现下面错误: Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension. checking for rb_thread_blocking_region()… yes checking for rb_wait_for_single_fd()… yes checking for mysql_query() in -lmysqlclient… no checking for main() in -lm… yes checking for mysql_query() in -lmysqlclient… no checking for … Continue reading
rspec 中 let 和 subject 的区别
let 和 subject 很像,同出一源,都是通过委托来定义一个消息的接收方,这句话的意思可以理解成:为某个方法调用(此调用的结果是一个对象,这一点毋庸置疑,因为一切都是对象)绑定一个“名字”(一般用 symbol),于是在后面的测试样例中,我们可以用这个名字来指代它。最直接的好处就是可以让代码更精炼,提高可读性,减少重复。 说它们同出一源,可以通过源码获知: def let(name, &block) ::RSpec::Core::MemoizedHelpers.module_for(self).define_method(name, &block) define_method(name) do __memoized.fetch(name) { |k| __memoized[k] = super() } end end 简单地说,我们传递了 name 和 &block 给 let,于是返回给我们一个 defined method;再看 subject: def subject(name=nil, &block) let(:subject, &block) alias_method name, :subject if … Continue reading