如果我运行此命令
rvm list known
Run Code Online (Sandbox Code Playgroud)
我得到以下内容(只显示几个条目) -
[ruby-]1.9.3[-p194]
[ruby-]1.9.3-head
ruby-head
Run Code Online (Sandbox Code Playgroud)
我想安装ruby 1.9.3.在网上的博客文章中我看到人们只是提到
rvm install 1.9.3
Run Code Online (Sandbox Code Playgroud)
实际安装-p194版本.
那么ruby-head与1.9.3-p194的1.9.3-head有何不同?并且应该安装其中一个而不是-p194吗?
如何通过Mongoid on Rails使用MongoDB编写适当的单元测试(以及针对该问题的集成测试)?
我问,因为与使用让我们说SQLite3相反,即使在运行测试时,我所做的一切仍然存在.所以目前我正在编写创建测试,然后手动删除我所做的一切.但是对于集成测试而言,它变得烦人甚至复杂.
我做的样本:
before(:each) do
@user = User.create!(@attr)
end
after(:each) do
# MongoDB is not a transactional DB, so added objects (create) during tests can't be rollbacked
# checking for the existance of a similar object with exact :name and :email (regex make it case insensitive)
cleanup = User.where(:name => "Example User", :email => /^user@example.com/i)
cleanup.destroy unless cleanup.nil?
end
Run Code Online (Sandbox Code Playgroud)
知道如何在测试期间使MongoDB不持久吗?(我甚至无法在沙箱模式下运行控制台,因为使用Mongoid我必须停用Active Record).
我试过像这样的mongo导出:
./mongodump --db local --collection lecturer
Run Code Online (Sandbox Code Playgroud)
然后我试了一下:
./mongodump --db local --collection posts --out - > lecturer .csv
Run Code Online (Sandbox Code Playgroud)
我收到相同的错误消息: Syntax Error: syntax error (shell):1
假设我在名为"users"的集合中有以下文档架构:
{
name: 'John',
items: [ {}, {}, {}, ... ]
}
Run Code Online (Sandbox Code Playgroud)
'items'数组包含以下格式的对象:
{
item_id: "1234",
name: "some item"
}
Run Code Online (Sandbox Code Playgroud)
每个用户可以在"项目"数组中嵌入多个项目.
现在,我希望能够通过item_id为给定用户获取项目.
例如,我想获取属于名为"John"的用户的ID为"1234"的项目.
我可以用mongoDB做到这一点吗?我想利用它强大的数组索引,但我不确定你是否可以在嵌入式数组上运行查询并从数组中返回对象而不是包含它的文档.
我知道我可以使用{users.items.item_id:"1234"}来获取拥有某个项目的用户.但我想从数组中获取实际项目,而不是用户.
或者,是否有更好的方法来组织这些数据,以便我可以轻松地得到我想要的东西?我仍然是mongodb的新手.
感谢您提供的任何帮助或建议.
我试图更新MYSQL DB中的一些信息,但我不知道如何在node.js中使用它.这是我正在使用的mysql驱动程序https://github.com/felixge/node-mysql
到目前为止我有什么
connection.query('SELECT * FROM users WHERE UserID = ?', [userId], function(err, results) {
if (results[0]) {
if (results[0].Name!=name) {
console.log(results[0].Name);
connection.query('UPDATE users SET ? WHERE UserID = ?', [userId], {Name: name});
}
console.log(results[0].UserID);
}
});
Run Code Online (Sandbox Code Playgroud)
一切正常,除了......
connection.query('UPDATE users SET ? WHERE UserID = ?', [userId], {Name: name});
Run Code Online (Sandbox Code Playgroud)
在PHP中我会有这个......
mysql_query("UPDATE users SET Name='".$_GET["name"]."' WHERE UserID='".$row['UserID']."'");
Run Code Online (Sandbox Code Playgroud)
我不确定我做错了什么,但我很肯定这个问题就在这里
connection.query('UPDATE users SET ? WHERE UserID = ?', [userId], {Name: name});
Run Code Online (Sandbox Code Playgroud) 所以这是我的问题.
我想检索存储在模型中的字符串,并在运行时使用rails应用程序中的变量更改其中的一部分.这是一个例子:
我有一个Message模型,我用它来存储几个独特的消息.所以不同的用户有相同的消息,但我希望能够在消息的中间显示他们的名字,例如,
"Hi #{user.name}, ...."
Run Code Online (Sandbox Code Playgroud)
我试图在数据库中存储它,但它在视图中显示之前被转义,或者在存储在数据库中时通过rails控制台进行插值.
提前致谢.
今天我注意到,给出了$ lt和$ gt运算符的顺序似乎在MongoDB 2.0.2中很重要.
我有一个游戏数据库."player"是表示两个玩家的两个字符串的数组,"endedAtMS"是游戏结束时的时间戳.我创建了这个索引:
db.games.ensureIndex({player:1,endedAtMS:-1})
Run Code Online (Sandbox Code Playgroud)
为了获得30个在特定时间范围内完成的游戏,在游戏完成时排序,我这样做:
db.games.find({ "player" : "Stefan" ,
"endedAtMS" : { "$lt" : 1321284969946 ,
"$gt" : 1301284969946}}).
sort({endedAtMS:-1}).
limit(30).
explain()
{
"cursor" : "BtreeCursor player_1_endedAtMS_-1",
"nscanned" : 30,
"nscannedObjects" : 30,
"n" : 30,
"millis" : 0,
"nYields" : 0,
"nChunkSkips" : 0,
"isMultiKey" : true,
"indexOnly" : false,
"indexBounds" : {
"player" : [
[
"Stefan",
"Stefan"
]
],
"endedAtMS" : [
[
1321284969946,
-1.7976931348623157e+308
]
]
}
}
Run Code Online (Sandbox Code Playgroud)
一切似乎都很好.但是当我在上面的查询中更改$ lt和$ gt的顺序时,我得到了这个:
db.games.find({ "player" …Run Code Online (Sandbox Code Playgroud) 使用rails g scaffold kittens强参数功能时,kitten_params是
def kitten_params
params.fetch(:kitten, {})
end
Run Code Online (Sandbox Code Playgroud)
我熟悉强参数,
params.require(:kitten).permit(:name, :age)
但我不知道如何使用这个fetch方法.
给定Ruby 1.8.7中的字符串(没有支持带有\ p {}的Unicode属性的真棒Oniguruma正则表达式引擎),我希望能够确定该字符串是否包含一个或多个中文,日文或韩文字符; 即
class String
def contains_cjk?
...
end
end
>> '???'.contains_cjk?
=> true
>> '?? ????'.contains_cjk?
=> true
>> '????????'.contains_cjk?
=> true
>> 'Watashi ha bakana gaijin desu.'.contains_cjk?
=> false
Run Code Online (Sandbox Code Playgroud)
我怀疑这将归结为查看字符串中的任何字符是否在Unihan CJKV Unicode块中,但我认为值得问一下是否有人知道Ruby中的现有解决方案.
我对预期的RuntimeError有一个很大的问题:"在迭代期间无法将新密钥添加到哈希中"
在我的情况下,我有一个YAML文件:test.yaml - 我已经添加了一些键.
test.yaml
key1:
key2:
key3:
Run Code Online (Sandbox Code Playgroud)
我在变量中获取文件的内容:
file_hash = YAML.load_file("testm.yaml")
Run Code Online (Sandbox Code Playgroud)
然后我需要循环遍历此哈希并向其添加其他键:
file_hash.each do |key|
file_hash[key] = 'key_1'
file_hash[key] = 'key_2'
end
File.open('test.yaml', 'w') { |f| YAML.dump(file_hash, f) }
Run Code Online (Sandbox Code Playgroud)
主要问题是我在循环中无法写入哈希.当你有权控制循环块时,我不明白为什么会这样.还有另一种方法可以完成我上面展示的内容吗?
注意:我使用的是RUBY 1.9.3 p547