我有(简化)工厂定义如下:
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更好,请建议
我正在尝试编写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) 我正在浏览亚马逊产品广告API REST签名文档,我被困在#8
使用上面的字符串和我们的"虚拟"秘密访问密钥:1234567890,使用SHA256哈希算法计算符合RFC 2104的HMAC.有关此步骤的更多信息,请参阅编程语言的文档和代码示例.
没关系,在python中使用字符串+密钥计算SHA哈希的帮助,设法再试一次.将在下面发布答案.
假设我有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如果它们不存在的话!
好吧,这一切都在标题中.我在尝试执行破坏性操作之前尝试检查用户的密码:
$.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
我在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) 我想用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?
我正在使用载波,轨道和亚马逊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中有选择吗?
在我的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项目日志文件夹?
React 警告我某个地方有错误的状态逻辑:
警告:setState(...):只能更新已安装或正在安装的组件。这通常意味着您在未安装的组件上调用了 setState()。这是一个禁止操作。
当我单击行号时,它指向console.warnReact 源代码中的一行。我如何查看代码中警告的来源?有没有办法从中获取堆栈跟踪warn?
当有超过 20 个不同的组件时,很难追踪。