RubyMine 可以生成模型关系图
赞!
粗扫了下代码,似乎
def erb_exec_tag
/<%(?!=)\s*((?m:.*?))\s*-?%>/
end
没能处理<%- %>
的情况
[2] pry(main)> /<%(?!=)\s*((?m:.*?))\s*-?%>/.match('<%- foo -%>')
=> #<MatchData "<%- foo -%>" 1:"- foo">
于是replace_erb_exec_tag
就会转换错...- - foo
这样
没记错的话(我有一年多不写 erb 了...)erb 的-
是可以出现在<%-
和-%>
两边其一,也可以两边同时出现的 <%- foo -%>
自从某天阿里云发来短信说,三十分钟后要维护,机器会下线.... 然后我就逢人便吐槽阿里云了... 另:UCloud 可以尝试,虽然偶尔有些小毛病,但是对问题响应和处理速度非常快
Puby
-> Ruby
~~
非常赞! 我下午买了,然后晚上收到作者邮件,询问我在 KnewOne 的工作面临什么样的挑战,还有买书的目的! 购买环节没有填写过任何个人信息,这作者还了解过的我的背景,非常的用心啊
RubyMine 的话 记得在项目设置里把 log 目录给 exclude 掉,会更快...
#3 楼 @tiseheaini 如果这个需求的话 cherrypick 更优雅一些,可以把某个提交单独插过来
用 rebase 或者 cherrypick 一般我会设置两个 remote,一个是 origin,另一个是 upstream,fetch upstream 就可以监视源的变动了
你用 unix socket 方式连接 unicorn 所以可以排查相对简单
ps
和 unicorn 的 log 里是否正常/tmp/unicorn.myapp.sock
存在,不存在多半是权限问题你帖子里没有描述过你有做过什么样的排查,这两点是最基本的排查,如果全部正常就需要更多信息来分析了
统一 API 是好事,虽然项目内更换 Gem 的概率很小,但是统一 API 还是有助于开发风格统一和减少学习成本的...
#16 楼 @wudixiaotie delay 方式将方法异步化有坑...他内部实现是个代理,把类和参数信息序列化成 YAML,然后内置的 Worker 反序列化之,入队量太大的时候 YAML 那个 lib 反序列化会出现一些很奇怪的问题,比如只反序列化出一个空类,导致之后出现 undefined method 异常... 而且 YAML 库是 C 实现,debug 很难 另外是 YAML 序列化,如果参数信息过于复杂或者太大,也是应付不了的... 综上,这个功能几乎不用...
#39 楼 @lovinescaper 11 月 1 日 2 日
#45 楼 @layerssss 不做 btc...
@luikore 当初 tenderlove 说 Adequate Record 实现复杂,这个会不会成为 Identity Map 那样的存在失败掉...
#36 楼 @sanivbyfish 时机未成熟哇,再说你不是去上海了嘛...
第 15 Which web server do you typically use in production? 里出现了 IIS 才是亮,看来已经有 win 做生产环境的案例了啊
https://github.com/jasl/tenpay_demo 这里有例子,我这样用的话是没有问题的,线上系统检验一年了
如果有问题的话,可能是财付通的设置方面
#34 楼 @colorfulberry 你这里说的 qq 是接收方吧?我在说 qq 企业邮箱作为 SMTP Server 的情况
恭喜啊大贝
我们量小的时候用 QQ 企业邮箱,没有发生过服务器拒收情况,后来量大转用 Sendcloud 发国内配合 Mailgun 发国外,注意 sendcloud 发送 sina 会被拒收,不道是不是我们的个别情况
另外有个坑,Sendcloud 即使是收费用户每日也有配额,而且你不能通过花更多钱来提高,只能通过他文档里介绍的提高信用度来提高配额,然后半独立 ip 和独立 ip 要申请,不直接和他们团队沟通,根本申请不下来
另外最大的坑就是,sendcloud 因各种原因(超过配额、欠费)拒收之后 Rails 这端会给无厘头的异常 EOFError: end of file reached
遇到之后第一时间登录到 sendcloud 上检查配额余额之类的情况就好
class BaseMailer < ActionMailer::Base
abstract!
layout 'mailer'
default content_type: 'text/html',
reply_to: '[email protected]'
SMTP_SERVERS = {
white: {
from: 'KnewOne <[email protected]>',
delivery_settings: {
address: 'smtp.mailgun.org',
port: 25,
domain: 'knewone.com',
user_name: USERNAME,
password: PASSWORD,
authentication: 'plain',
enable_starttls_auto: true
}
},
default: {
from: 'KnewOne <[email protected]>',
delivery_settings: {
address: 'smtpcloud.sohu.com',
port: 25,
user_name: USERNAME,
password: PASSWORD,
authentication: 'login',
domain: 'sendcloud.org'
}
}
}
WHITES = %w(gmail.com ruby-china.org)
def mail(headers = {}, &block)
if self.delivery_method == :smtp
smtp_config = route_smtp_server(headers[:to])
m = super headers.merge(from: smtp_config[:from]), &block
m.delivery_method.settings.merge!(smtp_config[:delivery_settings])
m
else
super headers, &block
end
end
private
def route_smtp_server(email)
SMTP_SERVERS[(WHITES.include?(/.*@(.+)/.match(email)[1]) ? :white : :default)]
end
end
其实应该用 http://guides.rubyonrails.org/action_mailer_basics.html#intercepting-emails 来实现,不过当时顺手写的,懒得重构了
为啥不方便?添加 class 不是一个参数的事情么?