是否可以强制ActiveRecord推送/刷新事务(或只是保存/创建)?
我有一个时钟工作者,可以在后台为几个任务工作者创建任务.问题是,时钟工作者有时会创建一个任务并在将时钟工作者信息完全刷新到数据库之前将其推送给任务工作者,从而导致丑陋的竞争状况.
由于产品的体系结构以及如何生成任务,因此使用after_commit并不可行.
简而言之,我需要能够让一个worker创建一个任务并将该任务刷新到db.
docker build -t {name}/ruby-test .
Sending build context to Docker daemon 13.23 MB
Step 0 : FROM ruby:2.2.2
Run Code Online (Sandbox Code Playgroud)
当我在上面运行docker build命令时,它会尽可能地看到......并且永远不会继续.不知道为什么或该做什么.思考?
我正在使用docker-machine在digitalocean Droplet上创建一个盒子.我已经为该主机部署了一个简单的hello world docker容器,它工作正常.
当我docker-machine ls在我的主计算机上执行操作时,我看到digitalocean驱动程序像冠军一样运行.
我现在希望能够移动到我的笔记本电脑并docker-machine ls看到数字海洋驱动程序也在那里运行,但目前还不清楚如何"共享"机器,以便可以从两台不同的计算机访问它.
思考?
我正在努力成为一名优秀的 Rails 开发人员并编写测试。我遇到了一些不清楚的事情,正在寻求建议。我有一个具有独特的不区分大小写属性的模型。然而测试失败了。测试这个的正确方法是什么?我究竟做错了什么?
class Tenant < ApplicationRecord
validates :name, presence: true
validates :name, uniqueness: { case_sensitive: false }
end
RSpec.describe Tenant, type: :model do
it { should validate_presence_of :name }
it { should validate_uniqueness_of(:name).case_insensitive }
end
Run Code Online (Sandbox Code Playgroud)
看起来它正在尝试设置 id,nil即使我们有另一个需要存在的验证。但为什么在测试名称时要这样做呢?我很困惑。
测试显示以下结果;
Failures:
1) Tenant Validates Uniqueness of should validate that :name is case-insensitively unique
Failure/Error: self.id = self.id.downcase
NoMethodError:
undefined method `downcase' for nil:NilClass
# ./app/models/tenant.rb:17:in `block in <class:Tenant>'
# /Users/a/.rvm/gems/ruby-2.5.0/gems/shoulda-matchers-3.1.2/lib/shoulda/matchers/active_model/validator.rb:96:in `perform_validation'
# /Users/a/.rvm/gems/ruby-2.5.0/gems/shoulda-matchers-3.1.2/lib/shoulda/matchers/active_model/validator.rb:89:in `validation_result'
# /Users/a/.rvm/gems/ruby-2.5.0/gems/shoulda-matchers-3.1.2/lib/shoulda/matchers/active_model/validator.rb:85:in `validation_error_messages'
# /Users/a/.rvm/gems/ruby-2.5.0/gems/shoulda-matchers-3.1.2/lib/shoulda/matchers/active_model/validator.rb:64:in …Run Code Online (Sandbox Code Playgroud) 下面我有一个"test"模型的迁移,它使用它自己的主键,一个String而不是一个Integer.
class CreateTest < ActiveRecord::Migration[5.1]
def change
create_table :test, id: false do |t|
t.string :id, primary_key: true
t.timestamps
end
end
end
Run Code Online (Sandbox Code Playgroud)
现在我们有了t.references测试的"客户端"模型.
class CreateClients < ActiveRecord::Migration[5.1]
def change
create_table :clients do |t|
t.references :test, null: false
t.timestamps
end
end
end
Run Code Online (Sandbox Code Playgroud)
问题是t.references假设它是一个整数id.
# == Schema Information
#
# Table name: clients
#
# id :integer not null, primary key
# test_id :integer not null
# created_at :datetime not null
# updated_at :datetime not null
Run Code Online (Sandbox Code Playgroud)
这显然是错误的,因为它Test.id是一个字符串. …
我正在尝试安装Composer以在我的Mac上使用Laravel,并且我遵循我能找到的所有说明,但它仍然失败.
命令: php --version
PHP 5.3.26(cli)(建于2013年7月7日19:05:08)
我安装了php,虽然是旧版本.
命令: brew install josegonzalez/php/composer
作曲家:缺少来自homebrew-php的PHP53,PHP54或PHP55.请在继续之前安装其中一个
需要php .. mm kay罚款.
我尝试安装了作曲家文档建议的53-intl.
命令: brew install php53-intl
错误没有可用的bison27公式(php53-intl的依赖)搜索水龙头...自制/版本/ bison27
它失败了,我真的不明白响应..所以我会尝试新版本的PHP.
命令: brew install php55
错误:在安装php55之前,您必须"brew link libpng"
好的..依赖问题..没问题吧?
命令: brew link libpng
链接/usr/local/Cellar/libpng/1.5.18 ...警告:无法链接libpng.取消链接...错误:无法符号链接文件:/usr/local/Cellar/libpng/1.5.18/share/man/man3/libpngpf.3/usr/local/share/man/man3不可写.您应该更改其权限.
这是777'd.
我有点不知所措..
我尝试取消链接和重新链接libpng; 命令:brew unlink libpng
取消链接/usr/local/Cellar/libpng/1.5.18 ... 0链接
但取消链接并没有'似乎做任何事情..并且链接给出了与上面相同的错误.
我不知道该怎么办......想法?
activerecord ×2
docker ×2
composer-php ×1
homebrew ×1
laravel ×1
macos ×1
migration ×1
php ×1
rspec ×1
ruby ×1
shoulda ×1
transactions ×1