小编Edd*_*gan的帖子

我可以使用Ruby从内部引用lambda吗?

我希望能够使用Ruby从内部调用匿名lambda.考虑以下递归块(返回阶乘).我知道我可以将它分配给变量,并且该变量在lambda的范围内:

fac = lambda { |n| n == 1 ? 1 : n * fac.call(n - 1) }
fac.call(5)
Run Code Online (Sandbox Code Playgroud)

但是,我希望能够做到以下(因为没有实际原因,我只是对探索语言感兴趣):

(lambda { |n| n == 1 ? 1 : n * self.call(n - 1) }).call(5)
Run Code Online (Sandbox Code Playgroud)

我知道self是行不通的,因为是main对象.我做错了吗?我试图做一些不可能的事情 - 如果不是,这是因为某些理论上的限制还是仅仅是在Ruby中没有实现?

ruby lambda block

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

编写@ instances.count> 0的更好方法

我有这个代码:

<% if  @states.count > 0 %>  # @states is an active record collection
Run Code Online (Sandbox Code Playgroud)

我觉得应该有更好的方法来写这个.

我正在寻找类似的东西:

<% if  @states.not_empty? %>
Run Code Online (Sandbox Code Playgroud)

我意识到这是一个微小的变化,但它将是一个受欢迎的清理.

ruby ruby-on-rails

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

使用Rails 3.1间歇性地"脚本标题的过早结束"

所以我开始从Rails 3.0.9升级我们的应用程序到Rails 3.1.

它在开发环境中运行良好.是时候把它放到登台服务器上,这样我们就可以运行一些完整的验收测试了 - 但是哦,不!我们在一半的时间里向我们发送了可怕的" 内部服务器错误 "页面,似乎是随机的.我们使用的是Ruby 1.9.2(p290)Apache(2)和Passenger(3.0.9).

当这些事件发生时(即使在最低的日志级别),我们的应用程序日志文件中绝对没有写入任何内容.

写入Apache日志的唯一内容如下:

[Fri Dec 02 14:36:15 2011] [error] [client <my ip>] Premature end of script headers: <requested path>, referer: <http://domain.com/referrer>
Run Code Online (Sandbox Code Playgroud)

显然,对于我来说,"修复它!"这是一个非常通用的错误,但是对于我可以开始调试正在进行的操作的一些建议将非常感激.这让我疯了.

更新:禁用Sprockets(即)时不会发生此问题config.assets.enabled = false 没关系,它仍然......

apache ruby-on-rails passenger ruby-on-rails-3.1

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