小编Mik*_*rth的帖子

RSpec:如何测试方法是否被调用?

在编写RSpec测试时,我发现自己编写了大量看起来像这样的代码,以确保在执行测试期间调用一个方法(为了论证,我们只能说我不能真正地查询状态调用后的对象,因为该方法执行的操作不容易看到效果).

describe "#foo"
  it "should call 'bar' with appropriate arguments" do
    called_bar = false
    subject.stub(:bar).with("an argument I want") { called_bar = true }
    subject.foo
    expect(called_bar).to be_true
  end
end
Run Code Online (Sandbox Code Playgroud)

我想知道的是:有比这更好的语法吗?我是否缺少一些时髦的RSpec非常棒,可以将上面的代码减少到几行?should_receive听起来它应该这样做但是进一步阅读它听起来并不完全是它的作用.

ruby rspec ruby-on-rails

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

Linq代码选择一个项目

我发现自己编写了很多像这样的代码来选择一个匹配的项目

var item = (from x in Items where x.Id == 123 select x).First();
Run Code Online (Sandbox Code Playgroud)

是否有一种更清洁的方式,或者这是如何简洁,我会得到?

编辑:应该说"使用linq语法的清洁方式".我已经知道了lambda语法,它开始看起来这实际上是唯一的方法.我确实得到了一些有用的信息,所以感谢所有回复的人.

c# linq

101
推荐指数
5
解决办法
18万
查看次数

忽略rails项目中的.gitignore config/database.yml

当我在rails项目上工作时(顺便说一下,我还处于"初学者"阶段的学习阶段),文件config/database.yml似乎就像数据库密码等那样.但是,似乎没有人建议将它放在.gitignore文件中 - 为什么?

当然我需要排除这个或我的敏感数据库配置细节如果我推送到github将最终成为公众知识.

git configuration ruby-on-rails

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

rails/ruby​​"并返回false"语法

我在轨道教程中看到过这段代码

def access_denied
  redirect_to login_path, :notice => "Please log in to continue" and return false
end
Run Code Online (Sandbox Code Playgroud)

在学习rails之前,我做了大量的ruby研究,我读过的书都没有涵盖这里的"返回错误"语法.我在rails语法中找不到任何提及它,是否有人能够提供链接或任何解释清除它?

我不明白这里需要"和",因为我认为ruby总会返回最后一个评估的表达式.

ruby ruby-on-rails

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

在本地访问ruby标准库文档

我刚刚进入Ruby - 其中一个让我放心的事情就是Intellisense /代码完成,所以如果我没有这个,我真的需要让API随时关闭.我上周发现了这个发现:

gem server
Run Code Online (Sandbox Code Playgroud)

它启动一个服务器,让您查看所有已安装宝石的文档.有没有相当于这个允许您浏览标准库而不是宝石?

使用Linux/Ruby 1.8.7.

ruby ri

9
推荐指数
2
解决办法
4053
查看次数

在gem中使用yaml文件

我正在研究我的第一个宝石(也是ruby的新手),到目前为止整个代码都在这里;

https://github.com/mikeyhogarth/tablecloth

我试图做的一件事是创建一个yaml文件,gem可以作为查找访问(在lib/tablecloth/yaml/qty.yaml下).这一切都很好,单元测试全部通过,无论何时我构建并安装gem并尝试在irb(从我的主文件夹)下运行我得到;

Errno::ENOENT: No such file or directory - lib/tablecloth/yaml/qty.yaml
Run Code Online (Sandbox Code Playgroud)

代码现在在〜/ lib/tablecloth中查找文件...而不是在gem安装到的目录中.所以我的问题是;

1)我应该如何更改recipe.rb的第27行,以便它查找gem安装到的文件夹?

2)我实际上是不正确地接近这整个事情(以这种方式在gem中使用静态yaml文件是否合适)?

ruby gem yaml

7
推荐指数
1
解决办法
4254
查看次数

在"卸载"方法中关闭连接

我继承了一个Web框架,以前的开发人员在页面生命周期的init/unload方法中打开并关闭了他的数据库连接.基本上构造函数是这样的(简化以证明这一点);

public class BasePage
{
   protected DBConnection _conn;

   public BasePage()
   {
      Init += StartConnection;
      Unload += EndConnection;
   }

   private void StartConnection(object sender, EventArgs e)
   {
      _conn = new DBConnection(Application["connectionstring"].ToString());   
   }

   private void EndConnection(object sender, EventArgs e)
   {
      if (_conn == null)
         return;

      if (_conn.Connection.State == ConnectionState.Open)
      {
     _conn.Close();
         _conn.Dispose();
      }
   }
}
Run Code Online (Sandbox Code Playgroud)

自从我来到这里以来,发展一直很快,所以我从未停下来考虑它.最近,访问已经开始,我们已经开始获得可怕的"Timeout过期.在从池中获取连接之前已经过了超时时间......"错误.

我目前正在查看其余的代码,寻找可能的连接泄漏,但上面的代码从来没有完全适合我,我想消除它作为潜在的罪魁祸首.那么问题;

即使在发生异常的情况下,我是否可以依赖"卸载"方法始终被调用?或者任何人都可以使用上述模式看到任何其他潜在问题,这将使其成为这些连接泄漏的主要嫌疑人?

干杯,

米奇

编辑:在调试中,即使存在异常,也始终会调用unload方法.我真的只需要知道不会调用此方法的任何情况,所以我可以弄清楚这是否需要首先进行重构.

编辑:感谢那些迄今为止做出回应的人,但请不要再提出关于IDisposable类或"使用"或"捕获/最终"模式的建议 - 这不是我的问题!我的问题是具体是一个页面是否可以运行其"Init"事件但是然后无法运行是"卸载"事件,以及为什么会发生这种情况.

c# asp.net database-connection connection-pooling page-lifecycle

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

Rails 3生成迁移 - 没有up或down方法

刚学习rails,我正在进行迁移,这一切都从逻辑上开始,直到我在代码中遇到奇怪的事情;

rails generate migration AddRegionToSupplier
Run Code Online (Sandbox Code Playgroud)

上面生成了一个只有"def change"方法的迁移文件.

我用Google搜索,发现这正是应该发生的事情;

http://guides.rubyonrails.org/migrations.html

我原以为它会生成一个"def up"和"def down"方法,以便可以回滚迁移.我这一代人做错了什么,或者我错过了一些明显的东西?

migration ruby-on-rails

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

在C#中比较和更新两个列表

上下文是我在内存中有一组缓存的值,这些值很难获取,而另一组相关数据的获取成本低廉且无法缓存(业务规则).我已经完成了所有工作,但我只是想知道是否有人能想到更便宜的方式进行这种更新......

    foreach (var nonCachedItem in searchItemsNonCached)
    {
        foreach (var cachedItem in searchItemsCached)
        {
            if (cachedItem.ID == nonCachedItem.ID)
                nonCachedItem.Description = cachedItem.Description;
        }
    }
Run Code Online (Sandbox Code Playgroud)

它基本上只是为了将缓存的信息与我刚收到的信息相匹配.一切正常,负载几乎可以忽略不计,但我对提高效率有点傻逼.

编辑:在上面,searchItemsNonCached和searchItemsCached都是SearchItem的列表,其中Searchitem是一个定制对象.

c# linq list

4
推荐指数
1
解决办法
2222
查看次数

画布标签 - drawarc vs image

我已经实现了一个画布元素,它使用drawarc来创建在背景上以不同速度上升的气泡效果(这是一个水下主题客户端的水下主题网站) - 它看起来非常好,我很高兴它,但我注意到某些浏览器(特别是IE9)存在轻微的性能问题.

我正在使用drawarc绘制气泡以创建半透明圆圈 - 任何人都可以告诉我这是否或多或少(在客户端性能方面)将图像/精灵标记到画布上?

-麦克风

performance html5 canvas

4
推荐指数
1
解决办法
664
查看次数

在C#中轻推垃圾收集器

可能重复:
垃圾收集:是否有必要在Dispose方法中将大对象设置为null?

有没有人知道是否明确地取消引用一个对象;

 finalResults = null;
Run Code Online (Sandbox Code Playgroud)

给垃圾收集器更多的轻推清理?我有一个相当大的物体(不是很大,但是足够大,我不希望它在使用后长时间停留)

上述帮助还是无意义的代码?我特意避免以编程方式与GC本身交谈,我只需要知道上述内容是否会起到任何形式的提示/提示.

c# garbage-collection

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

C#Fire和忘记考虑因素

我正在考虑使用fire-and-forget模式从ASP/C#应用程序发送电子邮件,因此用户不会在它做任何事情时等待.我之前使用过这种模式,就像这篇文章解释的那样;

http://microsoftmentalist.com/2012/02/02/asp-netcall-synchronous-method-asynchronously-asp-net-fire-and-forget/

所有非常简单的东西,但我真的需要了解性能方面的考虑因素.我是否应该在每次需要发送电子邮件时继续创建新线程,并且只相信框架来管理它们?或者有没有办法我可以在完成后手动将线程放回池中?

asp.net thread-safety

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