问题列表 - 第44845页

为什么循环中的Rake任务只执行一次?

我有连接到多个数据库的rails应用程序.我写了自定义rake任务,看起来像这样:

task :migrate_accounts_schema => [:environment] do |t|
  users = User.find :all, :conditions => ["state = 2"], :order => "id asc"
  users.each do |user|            
    if user.state == 2
      ActiveRecord::Base.establish_connection(
        :adapter  => "postgresql",
        :host     => user.database_host,
        :port     => user.database_port,
        :username => user.subdomain,
        :password => "#{user.database_password}",
        :database => user.database_name
      )
      Rake::Task["db:migrate"].invoke
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

问题是任务执行db:仅针对users [0]用户(集合中的第一个用户)进行迁移并且没有错误,只是静默地停止...

这是rake --trace的输出

** Invoke app:migrate_accounts_schema (first_time)
** Invoke environment (first_time)
** Execute environment
** Execute app:migrate_accounts_schema    
** Invoke db:migrate (first_time)
** Invoke environment 
** Execute db:migrate
** …
Run Code Online (Sandbox Code Playgroud)

ruby rake

16
推荐指数
2
解决办法
3713
查看次数

Grand Central Dispatch应创建多少个主题?

据我所知,GCD只会根据需要创建尽可能多的线程以充分利用CPU.在dispatch_async用于启动大约30个后台任务的代码中,我看到活动监视器中的线程数量大约增加了30个.我不会想到,因为它只是一个双核PC.

我确定我误会了什么.有人能告诉我发生了什么事吗?

macos multicore libdispatch grand-central-dispatch

2
推荐指数
1
解决办法
1265
查看次数

在R中按年份合并不同长度的数据集

关于合并两个长度不等的数据集,我有一个非常基本的问题.一个是标准小组

ID Time 
 1   1    
 1   2  
 1   3  
 2   1  
 2   2  
 2   3  
Run Code Online (Sandbox Code Playgroud)

第二组长度不等,看起来像这样

ID  Time X
 1   2   2
 2   1   3
 2   3   4
Run Code Online (Sandbox Code Playgroud)

如何通过ID和时间将这两者结合起来

ID Time  X 
 1   1   NA 
 1   2   2
 1   3   NA
 2   1   3
 2   2   NA
 2   3   4
Run Code Online (Sandbox Code Playgroud)

merge datetime r

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

安装Rails:"找不到文件:lib"

每当我尝试在Ubuntu Server上安装Rails时,都会收到错误,File not found:lib.为什么是这样?

ruby ubuntu ruby-on-rails

31
推荐指数
3
解决办法
3万
查看次数

适用于Java的nBuilder替代方案

有没有像nBuilder for java 这样的工具?

我想为单元测试构建对象,我不想为我的域中的每个实体创建一个构建器类.

我目前正在使用mockito但它并没有取代nBuilder的功能.

java unit-testing builder nbuilder

11
推荐指数
1
解决办法
874
查看次数

Mercurial:"工作目录中未跟踪的文件与请求的修订版中的文件不同"?

谁能告诉我这个Mercurial错误意味着什么?

工作目录中未跟踪的文件与请求的修订版中的文件不同

执行hg fetch时发生了这种情况:

C:\myapp>hg fetch ssh://hg/myapp-v1
pulling from ssh://hg/myapp-v1
searching for changes
adding changesets
adding manifests
adding file changes
added 93 changesets with 693 changes to 78 files (+1 heads)
updating to 797:0df7dbe7dc06
196 files updated, 0 files merged, 196 files removed, 0 files unresolved
merging with 704:edb7765768c6
abort: untracked file in working directory differs from file in requested revision: 'a/b/c/d.java'
Run Code Online (Sandbox Code Playgroud)

据我所知,这个文件(a/b/c/d.java)与.hgignore中配置的任何路径都不匹配.并且这个特定文件在两个(myapp和myapp-v1)存储库中也是相同的.

我不清楚这甚至意味着什么.??

merge mercurial

78
推荐指数
4
解决办法
5万
查看次数

读取Python中的最低有效位

我不得不在Python中解析syslog消息的Facility和Severity.这些值随每条消息一起出现.事件的严重性为0-7,在整数的3个最低有效位中指定.从数字中评估这3位的最简单/最快的方法是什么?

我现在的代码只是进行3位右移,而不是将该数乘以8,并从原始数据中减去结果.

FAC = (int(PRI) >> 3)
SEV = PRI - (FAC * 8)
Run Code Online (Sandbox Code Playgroud)

必须有一种不那么复杂的方法来做到这一点 - 而不是消除比特和减少.

(我是一个交易系统管理员,所以,我不知道很多基础知识 - 请光临我!)

python bit-manipulation syslog

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

C++ - 运算符删除混淆

我正在学习C++,并且是删除操作符的新手.从代码中可以看出,我将删除运算符应用于new运算符(m).应用它之后,我仍然可以使用指针并为其指定一个新值.我没有收到任何编译器错误.根据我的阅读,我应该在应用删除后使用新指针,因为指针不指向任何东西.欢迎任何帮助.谢谢.

 int main()
    {
        int* m;
        m = new int;
        *m = 14;
        cout << *m << " ";
        delete m;
        *m = 12;
        cout << *m;
    }
Run Code Online (Sandbox Code Playgroud)

控制台输出

14 12
Run Code Online (Sandbox Code Playgroud)

c++

0
推荐指数
1
解决办法
315
查看次数

Honeycomb预览 - 无法在Eclipse下的模拟器上安装我的应用程序

刚刚在Eclipse中更新了SDK和SDK工具,尝试在Honeycomb上运行我的应用程序并获得以下内容:

[2011-01-28 00:22:12 - Androzic] Uploading Androzic.apk onto device 'emulator-5554'
[2011-01-28 00:22:13 - Androzic] Installing Androzic.apk...
[2011-01-28 00:24:19 - Androzic] Failed to install Androzic.apk on device 'emulator-5554!
[2011-01-28 00:24:19 - Androzic] (null)
[2011-01-28 00:24:19 - Androzic] Failed to install Androzic.apk on device 'emulator-5554': EOF
[2011-01-28 00:24:19 - Androzic] com.android.ddmlib.InstallException: EOF
[2011-01-28 00:24:19 - Androzic] Launch canceled!
Run Code Online (Sandbox Code Playgroud)

其他avd正常运行.有人成功了吗?我究竟做错了什么?

eclipse sdk android

21
推荐指数
2
解决办法
2万
查看次数

C#异步TCP服务器过度杀手?

这实际上是一个实现问题,所以我觉得最好从我的具体案例开始.

我有一个C#服务器,它从移动客户端异步侦听TCP连接.当移动客户端连接新线程启动时,客户端发送一些(通常<100字节)文本消息并接收相似大小的文本消息.服务器响应后,它会关闭连接并结束线程.

当前的基本用法是用户登录,有时最多5分钟检查一些内容,发送少量消息,从而快速连续地在服务器上创建新线程,并且几小时后它们仅断开连接.此外,每个用户都有自己的PC上运行的服务器,因此大多数服务器在任何给定时间只能连接一个客户端,在RARE情况下只有两个.

现在我遇到了以下错误,现有连接被远程主机强行关闭,它让我思考,我做错了吗?

所以我的问题:

  1. 我目前的设置是否合适?
  2. 如果是这样,我应该在发送一条小消息后结束线程还是保持活动并在给定的空闲时间后关闭?
  3. 关于我正在做的一切正确,非常不可能,我应该通过简单地在放弃之前重试几次来避免错误吗?
  4. 第四个也是最后一个,那个错误完全杀死了服务器(服务器是由另一个进程生成的,任何未被捕获的异常都会杀死它),如果我们已经做到这一点,我的实现是可以的,我怎么能避免呢?

编辑:

回答这里的一些问题:

  • 在收到所有数据之前发生异常,但仅在用户快速连续发送多条消息的情况下发生.
  • 据我所知,除非用户正在运行Windows Server,否则max backlog为5,但是我没有设置我的,我不知道默认是什么,我会尝试将其明确设置为5.

异步服务器代码:

    public void StartListening()
    {
        //Data buffer for incoming data.
        byte[] bytes = new Byte[1024];

        //Establish the local endpoint for the socket.
        IPHostEntry ipHostInfo = Dns.Resolve(Dns.GetHostName());
        IPAddress ipAddress = ipHostInfo.AddressList[0];
        IPEndPoint localEndPoint = new IPEndPoint(ipAddress, Port);

        //Create a TCP/IP socket.
        Socket listener = new Socket(AddressFamily.InterNetwork,
            SocketType.Stream, ProtocolType.Tcp);
        listener.SetSocketOption(SocketOptionLevel.Socket,SocketOptionName.DontLinger,1);
        listener.SetSocketOption(SocketOptionLevel.Socket,SocketOptionName.ReuseAddress,1);

        //Bind the socket to the local endpoint and listen …
Run Code Online (Sandbox Code Playgroud)

c# asynchronous tcp asyncsocket

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