小编Ser*_*sev的帖子

ruby真的是一个完全面向对象的语言吗?

Ruby是完全面向对象的语言.在红宝石中,一切都是一个对象,因此属于某个类.例如5属于Object class

1.9.3p194 :001 > 5.class
 => Fixnum 
1.9.3p194 :002 > 5.class.superclass
 => Integer 
1.9.3p194 :003 > 5.class.superclass.superclass
 => Numeric 
1.9.3p194 :005 > 5.class.superclass.superclass.superclass
 => Object 
1.9.3p194 :006 > 5.class.superclass.superclass.superclass.superclass
 => BasicObject 
1.9.3p194 :007 > 5.class.superclass.superclass.superclass.superclass.superclass
 => nil 
Run Code Online (Sandbox Code Playgroud)

所以,我们必须通过在类前面添加类/对象名称来调用所有方法Object_name#method_name.例:

5.times{|i| puts i}
Run Code Online (Sandbox Code Playgroud)

现在,Rails有这些所谓的助手一样stylesheet_link_tag,javascript_include_tag,form_for等它不遵循这个Object_name#method_name语法,所以我想他们只是正常功能.

所以我的问题是

  1. 这些铁路助手是什么?
  2. 如果它们只是起作用而且不从任何类继承.与红宝石所说的说法相反,这并不矛盾everything a object & there are no primitives.作为例子,人们引用5.+(6)甚至说运营商只是简单的方法?

ruby ruby-on-rails ruby-on-rails-3

5
推荐指数
2
解决办法
357
查看次数

多个更新子文档

如果"oid"和"instance"字段匹配,我想对子文档"value"字段执行多次更新.我一次可以做一个子文档,但有多种方法可以做到这一点

- 这适用于一个 -

db.myTable.update({ "data" : { "$elemMatch" : { "oid" : "1.3.6.1.4.1.111.3.10.2.5.35.3", 
                                                "instance" : "0" } }, 
                    "$atomic" : "true" },
                  { $set: { "data.$.value": "change good" }}, 
                  false, 
                  true);



  "_id" : 483,
  "data" : [{
      "oid" : "1.3.6.1.4.1.111.3.10.2.5.35.3",
      "instance" : "0",
      "value" : "0"
    }, {
      "oid" : "1.3.6.1.4.1.111.3.999.2.5.2",
      "instance" : "0",
      "value" : "aaa"
    }, {
      "oid" : "1.3.6.1.4.1.111.3.30.5.1.1",
      "instance" : "0",
      "value" : "BBB"
    }]}
Run Code Online (Sandbox Code Playgroud)

mongodb

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

NodeJS使用redis - 与hiredis vs安装没有?

我正在将redis集成到我的NodeJS服务器应用程序中,我正试图弄清楚是否使用hiredis命令安装node_redis.我认为如果它在某种程度上没有用处,那么安装它的选项将无法使用.同时,node_redis(https://github.com/mranney/node_redis)的github页面清楚地表明升级到较新版本的nodeJS会导致添加hiredis选项出现问题.

有人可以列出添加hiredis vs不是的不成文的利弊吗?使用C库可以提高多少性能?

connect redis node.js node-redis

5
推荐指数
0
解决办法
2952
查看次数

动态获取路径路径

我最近将一些模板从ERB转换为Haml.它大多变得更清洁,更好,但按钮定义开始变得很糟糕.

我想转换它

= link_to t('.new', :default => t("helpers.links.new")),
          new_intern_path,                                       
          :class => 'btn btn-primary' if can? :create, Intern    
Run Code Online (Sandbox Code Playgroud)

这样的事情

= new_button Intern
Run Code Online (Sandbox Code Playgroud)

我还有其他几个实体,Intern所以其他所有页面也会从中受益.

所以,我输入了这段代码

  def new_button(person_class)
    return unless can?(:create, person_class)

    new_route_method = eval("new_#{person_class.name.tableize}_path")

    link_to t('.new', :default => t("helpers.links.new")),
              new_route_method,                                       
              :class => 'btn btn-primary'
  end
Run Code Online (Sandbox Code Playgroud)

它按预期工作.我只是不确定那个eval电话(因为它是邪恶的,所有这一切).有一种更简单,更不邪恶的方式吗?

ruby ruby-on-rails ruby-on-rails-3

5
推荐指数
2
解决办法
2082
查看次数

获取 MongoDB 文档中文档的键

除了遍历文档之外,还有什么方法可以获取 MongoDB 中特定文档的键列表?

即我想获取由返回的文档的密钥

db.users.find({username:'xyz@abc.com})
Run Code Online (Sandbox Code Playgroud)

是否有任何内联命令。如果没有,任何人都可以给出如何做的想法吗?

mongodb mongoid

5
推荐指数
2
解决办法
2792
查看次数

将字符串ID与BSON :: ObjectId进行比较

我有一个由类型组成的数组,BSON::ObjectId我希望它与一些ID作为字符串进行比较.

if my_array_of_BSON_ObjectIds.include?(@my_id_as_a_string)
   # delete the item from the array
else
   # add the item to the array as a BSON::ObjectId
end
Run Code Online (Sandbox Code Playgroud)

由于类型不同,这不起作用,我可以将我的字符串转换为BSON::ObjectId?如果是这样,怎么样?

ruby arrays mongodb mongoid

5
推荐指数
2
解决办法
7781
查看次数

为什么在正常变量中使用Redis而不是存储?

使用Redis进行会话存储而不是简单地将所有数据存储在应用程序内的变量中有什么好处?

redis node.js

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

从master,提交到另一个分支

我通常会为不同的代码段创建分支,但偶尔会忘记创建一个新的分支,并且所有内容都发生在主分支上.

我怎么能说git虽然我在主分支上,但这个提交是针对xyz分支的?

git github

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

为什么范围不能超过*[] Struct?

http://play.golang.org/p/jdWZ9boyrh

我收到了这个错误

    prog.go:29: invalid receiver type *[]Sentence ([]Sentence is an unnamed type)
    prog.go:30: cannot range over S (type *[]Sentence)
    [process exited with non-zero status]
Run Code Online (Sandbox Code Playgroud)

当我的函数尝试接收结构数组时.

一个未命名的类型是什么意思?为什么不能命名?我可以在函数外面命名它,并将它们作为参数传递给它们命名.

这是行不通的.所以我只是将[] Sentence作为一个论点并解决了我需要的问题.但是当它们作为参数传递时,我不得不返回一个新副本.

我仍然认为如果我能让函数接收结构数组并且不必返回任何内容那将是很好的.

如下所示:

func (S *[]Sentence)MarkC() {
  for _, elem := range S {
    elem.mark = "C"
  }
}

var arrayC []Sentence
for i:=0; i<5; i++ {
  var new_st Sentence
  new_st.index = i
  arrayC = append(arrayC, new_st)
}
//MarkC(arrayC)
//fmt.Println(arrayC)
//Expecting [{0 C} {1 C} {2 C} {3 C} {4 C}] 
//but not …
Run Code Online (Sandbox Code Playgroud)

arrays struct pointers go

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

nginx重新加载如何工作?为什么是零停机时间

参考nginx官方文档。Nginx的reload命令用于重新加载配置文件?在此过程中,该服务不会停机。

我了解到,它会一直等待已连接的请求,直到完成为止,然后停止接受任何新请求。这个主意很酷,但是如何处理保持活动的连接呢?因为那些长期存在的连接不会关闭,并且不断有请求出现。

nginx

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