赞!(PS: 妈蛋,国内什么都要镜像加速)
喜欢折腾的自己搞,不喜欢折腾的上 devise
ActionCable 前端部分已经自己实现了断线重连。楼主的这个问题属于业务范畴,这需要你自己去构建一套机制来保证客户端能够收到所有它未拿到的消息,2 楼 3 楼都提供了思路。
在 twitter 看到也有人晒
能有直播吗?
编译一次静态资源花费时间 30 分钟
我们要先定个小目标,例如写个小程序,赚它一个亿
部署的前期准备本来就很麻烦,就算是借助 Heroku 这一类的服务也需要做一些事情,要不然就自己搭建,每次手动部署,或者借助 Jenkins 自动跑测试并部署都可以。
楼主想要做到 push 一下就什么都不用做了,那么就得自己靠现有的云服务搭建一套自动化流程或者自己搭建一套自动化流程。
我认为,测试案例的目的为了验证逻辑的正确性,通过采用断言来实现,而结果并不是确定性的。 另外,通过肉眼来确定第一次返回的复杂数据结构,这苦逼活应该交给计算机,程序员应该处理逻辑性部分。
总觉得这个 第一次写测试的时候保证生成的快照是正确的
思路有点怪,难道对结果的断言会变,或者一直保持不变?
before_create :do_something, if: :your_custom_condition
private
def your_custom_condition
if you_do_not_want_to_do_something
false
else
true
end
end
下面的不行?
RAILS_ENV=production bundle exec rails db:seed
谁赶紧去提个 Pull Request
可以用 docker,加上 docker-compose 可以管理地挺好,虽然调试有一些不方便
怎么不加入 devise 和 simple_form ?
password
就是填客户端授权码,而不是你的邮箱密码
@debugtalk 过来海波这边问啊 ....
#1 楼 @hw676018683 我前阵子就是参考 quiet_assets 做的,本地开发环境跑没有问题,但是以下这段代码在线上跑时会有问题
def call_with_quiet_assets(env)
begin
if env['PATH_INFO'] =~ ASSETS_REGEX
env[KEY] = Rails.logger.level
Rails.logger.level = Logger::ERROR
end
call_without_quiet_assets(env)
ensure
Rails.logger.level = env[KEY] if env[KEY]
end
end
我猜想是在多进程的情况下,env[KEY] 线程不安全导致,但我本地试了用 puma 起多个 worker 然后写了个脚本并发地试了好多次,都没有办法重现。为了尽快解决这个问题,我不用 env[KEY],而是先直接写死
module QuietHeartbeat
class Railtie < ::Rails::Railtie
initializer 'quiet_heartbeat.initialize' do |app|
PATH_PREFIX_REGEX = /\A(\/heartbeats)/
Rails::Rack::Logger.class_eval do
def call_with_quiet_heartbeat_request(env)
begin
Rails.logger.level = Logger::ERROR if env['PATH_INFO'] =~ PATH_PREFIX_REGEX
call_without_quiet_heartbeat_request(env)
ensure
Rails.logger.level = Logger::DEBUG
end
end
alias_method_chain :call, :quiet_heartbeat_request
end
end
end
end
另外,可用 rack middleware 的方式实现
# lib/quiet_heartbeats_middleware.rb
class QuietHeartbeatsMiddleware
PATH_PREFIX_REGEX = /\A(\/heartbeats)/
def initialize(app)
@app = app
end
def call(env)
if env['PATH_INFO'] =~ PATH_PREFIX_REGEX
# 如果你想直接就返回 OK,那么可以
[200, { 'Context-Type' => 'text/plain' }, ['']]
# 如果还想要 Rails 处理,那么
# Rails.logger.silence do
# @app.call(env)
# end
else
@app.call(env)
end
end
end
嵌入到 middleware stack 里去
# config/application.rb
module Your_Rails_App_name
class Application < Rails::Application
require 'quiet_heartbeats_middleware'
config.middleware.insert_before Rack::Lock, QuietHeartbeatsMiddleware
# .....
end
end
我想问下,那个部署灯怎么弄的?好有意思
嗯,用 Ruby 和 Python 能够有效地预防「地中海」