小编Sni*_*gus的帖子

如何让ruby打印完整的回溯而不是截断的?

当我得到异常时,它通常来自调用堆栈中的深层.当发生这种情况时,通常会对我隐藏实际有问题的代码行:

tmp.rb:7:in `t': undefined method `bar' for nil:NilClass (NoMethodError)
        from tmp.rb:10:in `s'
        from tmp.rb:13:in `r'
        from tmp.rb:16:in `q'
        from tmp.rb:19:in `p'
        from tmp.rb:22:in `o'
        from tmp.rb:25:in `n'
        from tmp.rb:28:in `m'
        from tmp.rb:31:in `l'
         ... 8 levels...
        from tmp.rb:58:in `c'
        from tmp.rb:61:in `b'
        from tmp.rb:64:in `a'
        from tmp.rb:67
Run Code Online (Sandbox Code Playgroud)

那个"... 8级......"截断给我带来了很多麻烦.我在这方面没有太大的成功:我怎么告诉ruby我想要转储包含完整的堆栈?

ruby exception stack-trace

151
推荐指数
7
解决办法
13万
查看次数

你能阻止MSBuild.exe运行Build Events吗?

我正在通过脚本构建许多项目,偶尔使用自定义构建事件会给构建系统带来很大的困难.如果可能的话,我想调用MSBuild.exe,以阻止任何构建事件的执行.从长远来看,这不是构建自动化的问题 - 具有构建事件的项目的提交者被预先警告,这样的破坏是违反规则的.

简而言之,有没有办法调用MSBuild来阻止执行任何自定义构建步骤(如果存在)?

更新:

我考虑过对项目文件进行就地(自动)编辑,但是对于三个事件中的每一个,我更喜欢命令行等效于将"Excluded From Build"(参见Build Events选项)设置为Yes.

msbuild events build

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

MSBuild.exe不接受/ p:DefineConstants和/ p:PreprocessorDefinitions

我已经阅读了很多关于Stack Overflow的文章,这些文章回答了"如何从MSBuild命令行向编译器传递预处理器定义"的问题,并且他们都回复了一些变体:

MSBuild.exe /p:DefineConstants=THING_TO_BE_DEFINED
Run Code Online (Sandbox Code Playgroud)

我已经尝试了我能提出的每一个变体:

MSBuild.exe "/p:DefineConstants=THING_TO_BE_DEFINED"
MSBuild.exe /p:DefineConstants="THING_TO_BE_DEFINED"
MSBuild.exe "/p:DefineConstants=THING_TO_BE_DEFINED=1"
MSBuild.exe /p:DefineConstants="THING_TO_BE_DEFINED=1"
Run Code Online (Sandbox Code Playgroud)

......还有其他几十个人.我也以类似的方式调整了重写PreprocessorDefinitions.所有这些都触发​​了下面的#error:

#include "stdafx.h"

#if !defined(THING_TO_BE_DEFINED)
#error "THING_TO_BE_DEFINED is not defined"
#endif

int _tmain(int argc, _TCHAR* argv[])
{
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我一直在尝试使用上面的简单命令行应用程序,以及我在这里的一个巨大的游戏项目.我只能猜测Visual Studio(我在2005年和2008年看到这个)有一些默认设置深入阻止我的命令行参数被应用,但我没有找到证据来支持这个假设.

关于如何让这个工作的任何想法?为什么以FSM的名义并没有坚持使用好的'-D THING_TO_BE_DEFINED?

msbuild macros command-line c-preprocessor

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

在Jenkins中,构建如何知道谁请求了它们?

我需要将构建请求者的用户名传递给实际正在进行工作的脚本.查看特定构建的控制台输出,第一行始终是"由用户foo启动",因此Jenkins清楚地跟踪谁触发了构建.所以应该可以将这些信息传递给工作......问题是,如何?

hudson build request username jenkins

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

在Erlang中,我可以获得当前加载的所有模块的列表吗?

module_info会告诉我一些关于模块需要了解的内容 - 只要我知道它的名字.我需要找到名称符合特定条件的所有模块(例如companyname_creator_serialnumber.)我记得读过erlang存储此信息的地方,但我正在寻找一种方法来检索它.

编辑:

all_loaded()返回已加载的所有模块,但如果尚未引用我正在查找的模块,则它不在all_loaded列表中.

erlang module

15
推荐指数
1
解决办法
5690
查看次数

Rails:提供静态资产的路径(如.jpgs等?)

我已经解决了许多有趣的路由问题 - 将请求URL转换为哈希等等,但出于好奇,有没有办法告诉路由系统你想要任何属于某个url的东西字面上要提供的子路径 - 无需通过控制器?

例如,如果我有/home/me/public_html/rails_proj/images/foo.jpg和.../rails_proj/images/other/bar.jpg,我可以插入一条说"图像下的任何内容应该只是作为默认mime类型的对象?"

可能很有趣.

jpeg routes ruby-on-rails

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

Erlang ETS表与消息传递:优化问题?

我正在进入一个现有的(游戏)项目,其服务器组件完全用erlang编写.有时,从拥有它的过程中获取该系统的一部分数据(我对玩家56有多少个小部件感兴趣)可能会非常难以忍受.假设我可以找到拥有数据的进程,我可以将消息传递给该进程并等待它传回消息,但这不能很好地扩展到多台机器并且它会导致响应时间.

我一直在考虑用一个系统替换游戏中存在的许多任务,在这个系统中,多个进程经常访问的信息将存储在受保护的ets表中.表的所​​有者除了接收更新消息(玩家刚刚花了五个小部件)之外什么都不做,并相应地更新表.它会捕获所有异常,然后继续下一个更新消息.任何想知道玩家是否有足够的小部件来购买虚构的过程都只需要偷看桌子.(是的,我知道缓冲区中可能有一条消息可以减少小部件的数量,但我可以控制该问题.)

我担心我的问题不是一个问题而是更多的评论请求.我会推荐任何有用且充分解释或引用的内容.

这种实施的可能缺点是什么?我对锁定争用的细节很感兴趣,我可能会看到有一个作者 - 多个读者,我将在多台机器上分发这种问题,特别是:来自已经完成的人的输入这之前.

erlang process ets

14
推荐指数
3
解决办法
2928
查看次数

Erlang:我可以获得所有当前注册的原子列表吗?

我的项目已经超过了最大的1M原子,我们已经达到极限,但我需要对人们提交的关于list_to_atom及其朋友的代码应用一些理智.我想从获得所有已注册原子的列表开始,这样我就可以看到最大的罪犯在哪里.有没有办法做到这一点.我必须对我如何做到这一点有创意,所以我最终不会尝试在实时控制台中转储1-2M行.

谢谢.

erlang

12
推荐指数
2
解决办法
3197
查看次数

Javascript机制自动滚动到增长页面的底部?

希望对于有Javascript时间的人来说,这将是一个简单的答案......

我有一个日志文件正由一个脚本监视,该脚本将日志中的新行提供给任何连接的浏览器.有几个人评论说他们想要看到的更像是'tail -f'行为 - 最新的行总是位于浏览器页面的底部,直到观众向后滚动查看某些内容.滚动到底部应该会返回到自动滚动行为.

我对这个问题的谷歌罢工是 - 希望 - 只是对javascript一无所知,因此,不知道要搜索哪些关键字.我不需要一个完整的解决方案 - 只是一个'足够接近',让我跳进去弄脏手.

编辑:

我一直在尝试scrollTop/scrollHeight的想法,但我显然遗漏了一些东西.我用Javascript做的几乎没有,所以我可能再问一些非常低级的问题:

<html><body>
<script type="text/javascript">
for (i=0; i<100; i++)
{
    document.write("" + i + "<br />");
    document.scrollTop = document.scrollHeight;
}
</script>
</body></html>
Run Code Online (Sandbox Code Playgroud)

这是许多排列中的一种.显然,我无法在javascript中逐行输出日志,但我只是想看到正确的行为.我需要什么缺少的链接?

再次编辑:这已成为我最初预期的一个更有趣的问题.使用window.scroll的代码建议确实可以解决问题.我开始玩限制滚动仅在浏览器位于文档正文的底部时发生.这在理论上很容易做到,但在实践中它遇到了障碍:

每次从服务器获取新文本时,正文的大小都会增加,当前滚动位置不再位于文档的底部.您无法再区分(使用scrollHeight,clientHeight和scrollTop)用户是否已向上滚动或文本是否刚刚超出其视图.

我认为,如果这将起作用,我将不得不承诺在用户滚动时触发JS事件,如果它们在窗口底部之上则关闭滚动,但是如果它会重新打开则它们已向下滚动到有效位于视图底部的位置.我正在看onScroll事件,鉴于我提到的变量数学计算得很好,我认为我在这里正确的道路上.感谢您的投入,大家!

javascript browser scroll

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

Rails:如何找到()某些字段中唯一的记录?

我有一个'request'对象列表,每个对象都有相当正常的activerecord特性.requests表与带有连接表'games_requests'的游戏表相关,因此请求具有request.games数组.

问题是,有没有办法找到最后n个唯一请求,其中唯一性由游戏列和其他几个定义,但特别忽略其他列(如请求用户的名称?)

我看到了'find(:all,:limit => 5,:include => [:games,:stage])'这样的语法,但是它返回了重复项.

谢谢...

编辑:感谢混乱的回应.你让我非常接近,但我仍然需要返回有效的请求对象:前5条记录在请求的行中是不同的.我可以在构造它时使用find,然后对表中与第一个查找返回的每个集匹配的第一行执行第二次查找.

编辑:

Games.find(
    :all, :limit => 5,
    :include => [:games, :requests],
    :group => 'games, whatever, whatever_else'
)
Run Code Online (Sandbox Code Playgroud)

...给出了一个SQL错误:

Mysql::Error: Unknown column 'games' in 'group statement': SELECT * FROM `games`  GROUP BY games
Run Code Online (Sandbox Code Playgroud)

因为我认为对我的项目来说是正确的,我做了一些改变; 获取请求列表而不是游戏等:

Request.find(
    :all, :order=>"id DESC", :limit=>5,
    :include=>[:games],   #including requests here generates an sql error
    :group=>'games, etc'  #mysql error:  games isn't an attribute of requests
    :conditions=>'etc'
)
Run Code Online (Sandbox Code Playgroud)

我想我将不得不在这里使用:join =>选项.

activerecord ruby-on-rails unique distinct find

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