小编AJc*_*dez的帖子

相关工厂的工厂女孩​​唯一性验证失败

我有(简化)工厂定义如下:

factory :league do
  acronym 'NBA'
end

factory :division do
  league
end
Run Code Online (Sandbox Code Playgroud)

分部属于联盟.当我定义这个工厂时,我的假设就是创建一个联盟,并且这个联盟会一次又一次地被重复使用,以使分区成为真正的联盟.

相反,我在第二次通话时遇到错误,FactoryGirl.create(:division)因为联盟acronym应该是独一无二的.

class League < ActiveRecord::Base
  validates :acronym, uniqueness: true
end
Run Code Online (Sandbox Code Playgroud)

在测试中导致以下中断

ActiveRecord :: RecordInvalid:验证失败:已经删除了缩略词

我该如何解决这个问题,最好不要在测试设置中创建层次结构?

如果我想要实现的目标比factory_girl更好,请建议

unit-testing ruby-on-rails factory-bot

12
推荐指数
1
解决办法
2733
查看次数

对于实现相同特征的结构,如何克服具有不兼容类型的匹配臂?

我正在尝试编写cat学习Rust 的命令,但我似乎无法将命令行参数转换为读取器结构.

use std::{env, io};
use std::fs::File;

fn main() {
    for arg in env::args().skip(1) {
        let reader = match arg.as_str() {
            "-" => io::stdin(),
            path => File::open(&path).unwrap(),
        };
    }
}
Run Code Online (Sandbox Code Playgroud)

错误:

error[E0308]: match arms have incompatible types
 --> src/main.rs:6:22
  |
6 |         let reader = match arg.as_str() {
  |                      ^ expected struct `std::io::Stdin`, found struct `std::fs::File`
  |
  = note: expected type `std::io::Stdin`
  = note:    found type `std::fs::File`
note: match arm with an incompatible type
 --> src/main.rs:8:21
  |
8 …
Run Code Online (Sandbox Code Playgroud)

rust

12
推荐指数
4
解决办法
6316
查看次数

使用ruby中的SHA256哈希算法计算符合RFC 2104的HMAC

我正在浏览亚马逊产品广告API REST签名文档,我被困在#8

使用上面的字符串和我们的"虚拟"秘密访问密钥:1234567890,使用SHA256哈希算法计算符合RFC 2104的HMAC.有关此步骤的更多信息,请参阅编程语言的文档和代码示例.

没关系,在python中使用字符串+密钥计算SHA哈希的帮助,设法再试一次.将在下面发布答案.

ruby amazon amazon-product-api

10
推荐指数
1
解决办法
6473
查看次数

合并后,Git master分支根本没有新文件

假设我有2个分支,master并且other.

我进入other分支,添加2个文件,提交和推送.

现在我进入master分支,将文件添加到不同的目录,然后提交它们.然后我合并other.

问题是我添加的文件other没有显示出来.Git说这是最新的,但事实并非如此!文件丢失.

如何强制master添加文件other或以某种方式手动添加它们?

编辑卡尔:

据我所知,我做了以下工作,虽然没有出现的变化是几周之久.我刚才意识到他们今天不在.

$ git branch
*other
master
$ git add .
$ git commit -m 'cool new features'
$ git push origin other
$ git checkout master
$ git merge other
$ git add .
$ git commit -m 'merged cool new features from other'
$ git push origin master
Run Code Online (Sandbox Code Playgroud)

我继续使用Github,文件不存在.其他文件已提交并显示,但两个文件夹没有匹配的内容.文件存在于other但不在master.澄清一下,这些文件并不新鲜.但我认为合并至少会复制文件,master如果它们不存在的话!

git

9
推荐指数
2
解决办法
8666
查看次数

jQuery AJAX在202响应上调用错误回调 - 不应该是成功回调吗?

好吧,这一切都在标题中.我在尝试执行破坏性操作之前尝试检查用户的密码:

$.ajax({
  type: 'POST',
  url: '/path/to/post.json',
  data: { password: '**********' },
  success: function() { console.log("Success!"); },
  error: function() { console.log("Error!"); }
});
Run Code Online (Sandbox Code Playgroud)

在控制台中:

202 Accepted 123ms
Error!
Run Code Online (Sandbox Code Playgroud)

我认为403 Forbidden用于错误的密码和202接受正确的密码将是适当的响应代码,但我不太了解HTTP说实话.

jQuery版本1.8.3

jquery

9
推荐指数
1
解决办法
4580
查看次数

节点哪个端口/ IP地址要监听azure ubuntu vm

我在Azure上有一个Ubuntu虚拟机.我在azure管理门户中添加了一个enpoint:

NAME   PROTOCOL   PUBLIC PORT   PRIVATE PORT  LOAD-BALANCED SET
---------------------------------------------------------------
HTTP   TCP        80            80            -
Run Code Online (Sandbox Code Playgroud)

我试着听听它:

var http = require('http');

var server = http.createServer(function (request, response) {
  response.writeHead(200, {"Content-Type": "text/plain"});
  response.end("Hello World\n");
});

server.listen(80);
Run Code Online (Sandbox Code Playgroud)

它可以工作,如果我ssh并卷曲它:

$ curl localhost:80
Hello World
Run Code Online (Sandbox Code Playgroud)

但是,如果我尝试访问它subdomain.cloudapp.net,则不会有任何回复.当公共IP地址访问时,它也不返回任何内容.

我应该使用哪个端口和地址监听节点应用程序以从外部访问它?

我是否需要另一个Azure服务才能访问VM?

如果防火墙出现问题,我将如何启用公共访问?


编辑:

我检查了是否有防火墙,但没有:

$ sudo ufw status
[out :: subdomain.cloudapp.net] Status: inactive
Run Code Online (Sandbox Code Playgroud)

编辑2:

配置了一个不同的ubuntu vm,但它仍然不起作用.试图重启iptables,但没有服务已知:

$ sudo service iptables restart
iptables: unrecognized service
Run Code Online (Sandbox Code Playgroud)

iptables是:

$ sudo iptables -L

Chain INPUT (policy ACCEPT)
target     prot opt …
Run Code Online (Sandbox Code Playgroud)

dns ubuntu azure node.js azure-virtual-machine

8
推荐指数
1
解决办法
3765
查看次数

如何使用--recv-keys而不是--recv添加apt键?

我想用ansible安装facebook osquery.ubuntu的说明如下:

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys C9D8B80B
...
Run Code Online (Sandbox Code Playgroud)

不幸的是,设置id C9D8B80B不起作用.在任务中:

- name: Add repository key
  apt_key: keyserver=keyserver.ubuntu.com id=C9D8B80B state=present
Run Code Online (Sandbox Code Playgroud)

命令失败:

TASK: [osquery | Add repository key] ****************************************** 
failed: [x.x.x.x] => {"cmd": "apt-key adv --keyserver keyserver.ubuntu.com --recv C9D8B80B", "failed": true, "rc": 2}
Run Code Online (Sandbox Code Playgroud)

所不同的是--recv C9D8B80BVS --recv-keys C9D8B80B.

哪个ansible apt_key选项对应--recv-keys

ubuntu ansible

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

存储桶中的amazon s3和carrierwave随机图像名称在数据库中不匹配

我正在使用载波,轨道和亚马逊s3.每次保存图像时,图像都显示在s3中,我可以在管理控制台中看到它,其名称如下:

https://s3.amazonaws.com/bucket-name/ uploads/images/10/888fdcfdd6f0eeea_1351389576.png

但在模型中,名称是这样的:

https://bucket-name.s3.amazonaws.com/ uploads/images/10/b3ca26c2baa3b857_1351389576.png

首先,为什么随机名称不同?我在上传器中生成它,如下所示:

def filename
  if original_filename
    "#{SecureRandom::hex(8)}_#{Time.now.to_i}#{File.extname(original_filename).downcase}"
  end
end
Run Code Online (Sandbox Code Playgroud)

我知道每次调用都不会产生随机字符串,因为模型中的错误网址是一致的并保存.在图像名称保存并发送到amazon s3之后,在此过程的某个地方必须生成一个新的以保存在模型中.奇怪.

另外,如果不使用正则表达式,我可以将网址与s3/bucket而不是bucket.s3匹配吗?在carrierwave中有选择吗?

ruby amazon-s3 carrierwave

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

每当gem:我设置:输出但日志文件没有出现在我期望的地方

在我的schedule.rb文件中,我有以下几行:

set :output, '/log/cron_log.log'

every 5.minutes do
  command 'echo "hello"'
end
Run Code Online (Sandbox Code Playgroud)

whenever -w按照Rails中的建议运行,在开发中使用gem时,我假设cronfile已编写并正在运行.(我也试过重启Rails服务器.)

当我跑步时,$ crontab -l我看到以下内容:

0,5,10,15,20,25,30,35,40,45,50,55 * * * * /bin/bash
-l -c 'echo "hello" >> /log/cron_log.log 2>&1'
Run Code Online (Sandbox Code Playgroud)

但我找不到日志文件.我检查了rails_project/log,〜/ log和/ log无济于事.在OSX btw.

如何将日志文件写入rails项目日志文件夹?

ruby macos cron ruby-on-rails whenever

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

是否可以获取 chrome 控制台警告的堆栈跟踪?

React 警告我某个地方有错误的状态逻辑:

警告:setState(...):只能更新已安装或正在安装的组件。这通常意味着您在未安装的组件上调用了 setState()。这是一个禁止操作。

当我单击行号时,它指向console.warnReact 源代码中的一行。我如何查看代码中警告的来源?有没有办法从中获取堆栈跟踪warn

当有超过 20 个不同的组件时,很难追踪。

console google-chrome reactjs

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