小编Jas*_*lis的帖子

如何强制Rails ActiveRecord提交事务刷新

是否可以强制ActiveRecord推送/刷新事务(或只是保存/创建)?

我有一个时钟工作者,可以在后台为几个任务工作者创建任务.问题是,时钟工作者有时会创建一个任务并在将时钟工作者信息完全刷新到数据库之前将其推送给任务工作者,从而导致丑陋的竞争状况.

由于产品的体系结构以及如何生成任务,因此使用after_commit并不可行.

简而言之,我需要能够让一个worker创建一个任务并将该任务刷新到db.

activerecord transactions ruby-on-rails

11
推荐指数
1
解决办法
8685
查看次数

Docker构建只是冻结?

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

6
推荐指数
1
解决办法
4117
查看次数

多台计算机上的Docker-machine主机环境?

我正在使用docker-machine在digitalocean Droplet上创建一个盒子.我已经为该主机部署了一个简单的hello world docker容器,它工作正常.

当我docker-machine ls在我的主计算机上执行操作时,我看到digitalocean驱动程序像冠军一样运行.

我现在希望能够移动到我的笔记本电脑并docker-machine ls看到数字海洋驱动程序也在那里运行,但目前还不清楚如何"共享"机器,以便可以从两台不同的计算机访问它.

思考?

docker docker-machine

5
推荐指数
1
解决办法
399
查看次数

Rails rspec 应该使用匹配器来验证不区分大小写的项目的唯一性失败吗?

我正在努力成为一名优秀的 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)

rspec ruby-on-rails shoulda

5
推荐指数
1
解决办法
3779
查看次数

Activerecord迁移,使t.references正确指向自定义ID类型,字符串不是整数?

下面我有一个"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是一个字符串. …

ruby migration activerecord ruby-on-rails

4
推荐指数
1
解决办法
103
查看次数

试图在我的Mac上安装Composer,Brew失败了

我正在尝试安装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链接

但取消链接并没有'似乎做任何事情..并且链接给出了与上面相同的错误.

我不知道该怎么办......想法?

php macos homebrew laravel composer-php

2
推荐指数
1
解决办法
1万
查看次数