小编Lyn*_*ynn的帖子

Ruby嵌套发送

假设我有一个访问对象的方法的对象:

def foo
   @foo
end
Run Code Online (Sandbox Code Playgroud)

我知道我可以使用send访问该方法:

obj.send("foo")  # Returns @foo
Run Code Online (Sandbox Code Playgroud)

是否有一种直接的方法来执行递归发送以获取@foo对象的参数,例如:

obj.send("foo.bar")  # Returns @foo.bar
Run Code Online (Sandbox Code Playgroud)

ruby metaprogramming

14
推荐指数
2
解决办法
2822
查看次数

在连接之前定义续集模型

在我的(非Rails)应用程序中,我正在尝试定义一个续集模型:

class Foo < Sequel::Model
end
Run Code Online (Sandbox Code Playgroud)

当我运行我的应用程序时,我收到错误:

No database associated with Sequel::Model: 
have you called Sequel.connect or Sequel::Model.db= ? (Sequel::Error)
Run Code Online (Sandbox Code Playgroud)

事实上,我没有调用connect,因为'require Foo'在我的数据库代码运行之前发生.

当然,我可以切换一些东西,以便在数据库连接后完成需求,但还有其他选择吗?目前我在一个文件中拥有我所有应用程序的'require'语句,如果不必为这些模型类文件打破它,那将是很好的.

ruby sequel

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

从ThreadingTCPServer正常关闭

我已经基于这里的示例创建了一个运行ThreadingTCPServer的简单测试应用程序(Python 2.6.1).如果客户端发送命令"bye",我想关闭服务器并从应用程序中彻底退出.退出部分工作正常,但当我尝试重新运行应用程序时,我得到:

socket.error: [Errno 48] Address already in use
Run Code Online (Sandbox Code Playgroud)

我尝试了这里给出的解决方案来设置套接字选项,但这似乎没有帮助.我已尝试各种方法关闭服务器,但总是得到相同的错误.

知道我做错了什么吗?

import SocketServer
import socket
import sys
import threading
import time

class RequestHandler(SocketServer.BaseRequestHandler):

    def setup(self):
        print("Connection received from %s" % str(self.client_address))
        self.request.send("Welcome!\n")

    def handle(self):
        while 1:
            data = self.request.recv(1024)
            if (data.strip() == 'bye'):
                 print("Leaving server.")
                 self.finish()
                 self.server.shutdown()
                 # None of these things seem to work either
                 #time.sleep(2)
                 #del self.server.socket
                 #self.server.socket.shutdown(socket.SHUT_WR)
                 #self.server.socket.close()
                 #self.server.server_close()
                 break


    def finish(self):
        self.request.send("Goodbye!  Please come back soon.")

if __name__ == "__main__":
       server = …
Run Code Online (Sandbox Code Playgroud)

python tcp socketserver

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

Rails:validates_uniqueness_of 条件未按预期工作

我有一个模型,它使用“活动”标志来软删除项目而不是销毁它们。该模型具有“名称”属性,该属性在活动项中必须是唯一的。我试图将conditions修饰符与 一起使用validates_uniqueness_of,但它似乎仍在检查活动和非活动项目的唯一性。我究竟做错了什么?

class Foo < ActiveRecord::Base

  attr_accessible :name, :active
  validates_uniqueness_of :name, conditions: -> { where(active:true) }

end
Run Code Online (Sandbox Code Playgroud)

validation activerecord ruby-on-rails

3
推荐指数
1
解决办法
5660
查看次数