小编Cra*_*ker的帖子

任意或自定义URL的Rails功能测试

我的Rails应用程序中有一个名为"Photo"的RESTful资源.我正在使用Paperclip来提供我的照片的不同"样式"(缩略图等),我正在使用自定义路径来RESTful访问这些样式:

map.connect "photos/:id/style/*style", :controller => "photos", :action => "show"
Run Code Online (Sandbox Code Playgroud)

这工作正常,但我想写一个测试,以确保它保持这种方式.

我已经有一个功能测试来调用Photo控制器的show动作(实际上是由scaffold生成):

test "should show photo" do
  get :show, :id => photos(:one).to_param
  assert_response :success
end
Run Code Online (Sandbox Code Playgroud)

它测试URL"/ photo/1"处的动作执行情况.现在我想测试URL"/ photo/1/style/foo"的执行情况.不幸的是,我似乎无法使用ActionController :: TestCase来访问该URL; get方法总是想要一个action/id,并且不接受URL后缀.

如何测试自定义网址?

更新

在检查@ fernyb的答案时,我在同一个rdoc中找到了这个片段

在测试中,您只需传递URL或命名路由即可获取或发布.def send_to_jail get'/ jail'assert_response:success assert_template"jail/front"end

但是,当我实际尝试时,我收到一条错误消息:

test "should get photo" do
  get "/photos/1/style/original"
  assert_equal( "image/jpeg", @response.content_type )
end  

ActionController::RoutingError: No route matches {:action=>"/photos/1/style/original", :controller=>"photos"}
Run Code Online (Sandbox Code Playgroud)

我想知道我做错了什么.

url controller ruby-on-rails functional-testing

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

从Ruby中的String解析十进制值

我有一个包含十进制数字的Ruby String.将其转换为十进制(定点)的最佳方法是什么?

"最好"意味着:

  • 可靠的输入选项可靠
  • 写得很简单
  • 易于阅读

......大致按顺序排列.

ruby parsing decimal

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

防止实例上的ActiveRecord save()

我有一个ActiveRecord模型对象Foo; 它代表一个标准的数据库行.

我希望能够显示此对象的实例的修改版本.我想重用这个类本身,因为它已经拥有了我需要的所有钩子和方面.(例如:我已经有一个显示适当属性的视图).基本上我想克隆模型实例,修改它的一些属性,然后将它反馈给调用者(视图,测试等).

希望这些属性修改回到数据库中.但是,我确实希望id在克隆版本中包含该属性,因为它更容易处理路由助手.因此,我计划调用ActiveRecord::Base.clone(),手动设置克隆实例的ID,然后对新实例进行适当的属性更改.这让我很担心; 一个save()在修改过的实例上,我的原始数据将被破坏.

所以,我正在寻找锁定新实例,这样它不会伤害任何其他东西.我已经计划调用freeze()(基于这一理解,这可以防止对对象的进一步修改,尽管文档并不十分清楚).但是,我没有看到任何明显的方法来阻止save().

实现这一目标的最佳方法是什么?

ruby activerecord clone ruby-on-rails

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

什么是SQL Server CLR集成生命周期?

如何在SQL Server中管理CLR(.NET)对象?

SQL Server中任何CLR代码的入口点都是静态方法.通常,您只会创建该方法范围内的对象.但是,您可以设想在静态成员中存储对象的引用,让它们转义方法调用范围.如果SQL Server在多个存储过程/函数调用中将这些对象保留在内存中,那么它们对于缓存应用程序可能很有用 - 尽管它们也更危险.

SQL Server如何处理这个问题?它甚至允许(非方法)静态成员吗​​?如果是这样,它在记忆中保留了多长时间?在每次CLR呼叫之后垃圾收集所有内容吗?它如何处理并发?

.net c# sql-server stored-procedures sql-server-2005

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

Rails记录版本控制解决方案

我正在寻找rails中版本数据库更改的解决方案.寻找非常基本的东西.

我的意思是像维基或SO编辑版本.

database versioning ruby-on-rails

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

Rails性能测试中的ruby-prof错误

我正在创建一个Rails性能测试,如Rails指南中所述,我遇到了ruby-prof的问题.

我正在使用Ruby 1.9.2-p0(尽管在p320上遇到了同样的问题)和Rails 3.1.0.

我有一个非常简单的测试控制器,相当于这个例子.

根据指南,我需要先安装ruby-prof才能使用性能测试.果然,如果我在没有它的情况下运行我的性能测试,我得到:

在Gemfile中将ruby-prof指定为应用程序的依赖项以运行基准测试.

如果我按照指南的说明进行操作,我将其添加到我的Gemfile中:

gem'ruby-prof',:git =>'git://github.com/wycats/ruby-prof.git'

...从wycats存储库获取版本0.11.0.当我运行我的测试时,我收到此错误:

/Users/craig/.rvm/gems/ruby-1.9.2-p0/bundler/gems/ruby-prof-ffae61a89553/lib/ruby-prof/abstract_printer.rb:44:in `inspect': undefined method `to_s' for #<Class:0x000001025a3f18> (NoMethodError)
from /Users/craig/.rvm/gems/ruby-1.9.2-p0/bundler/gems/ruby-prof-ffae61a89553/lib/ruby-prof/abstract_printer.rb:44:in `full_name'
...
Run Code Online (Sandbox Code Playgroud)

但是"wycats"似乎并不是ruby-prof的规范Github回购.该文档涉及rdp(Roger Pack).如果我改用这个回购:

gem'ruby-prof',:git =>'git://github.com/rdp/ruby-prof.git'

...我得到版本0.11.2,并得到此错误:

/Users/craig/.rvm/gems/ruby-1.9.2-p0/gems/activesupport-3.1.0/lib/active_support/testing/performance/ruby.rb:39:in run': undefined methodvalues for [#]:Array(来自/Users/craig/.rvm/gems/ruby-1.9.2-p0/gems/activesupport-3.1.0/lib/active_support/testing/performance.rb:140:in"run_profile"的NoMethodError ...

如果我直接使用来自rubygems的gem(同样,版本0.11.2),我会得到相同的错误:

宝石'红宝石'教授'

任何想法出了什么问题,或者如何解决它?

ruby-on-rails ruby-prof ruby-on-rails-3.1

7
推荐指数
2
解决办法
2183
查看次数

Rcov:为什么不考虑此代码?

这是我的控制器:

class MyController < ApplicationController
  include MyHelper

  def index
    get_list_from_params do |list|
      @list = list
      respond_to do |format|
        format.html
        format.xml  { render :xml => @list }
        format.json { render :json => @list }
      end
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

......它所依据的帮手:

module MyHelper
  def get_list_from_params(param = :id, &on_success)
    raw_id = params[param]
    begin
      id = Integer(raw_id)
    rescue
      render :template => "invalid_id", :locals => {:id => raw_id }
    else
      yield MyList.new(id)
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

...和我的功能测试(使用Shoulda):

class MyControllerTest < ActionController::TestCase
  context "MyController index" do
    setup do …
Run Code Online (Sandbox Code Playgroud)

ruby code-coverage ruby-on-rails rcov

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

在C#.NET中使用Lambda进行模糊调用

我有一个带有重载方法的类:

MyClass.DoThis(Action<Foo> action);
MyClass.DoThis(Action<Bar> action);
Run Code Online (Sandbox Code Playgroud)

我想将lambda表达式传递给Action版本:

MyClass.DoThis( foo => foo.DoSomething() );
Run Code Online (Sandbox Code Playgroud)

不幸的是,由于围绕"foo"变量的类型推断,Visual Studio无法区分Action<Foo>Action<Bar>版本之间的区别- 因此它引发了编译器错误:

以下方法或属性之间的调用不明确:'MyClass.DoThis(System.Action <Foo>)'和'MyClass.DoThis(System.Action <Bar>)'

什么是最好的解决方法?

.net c# lambda

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

Ruby参数列表中的单个splat /星号是什么意思?

我今天在浏览Rails 3 ActiveRecord源代码,并找到了一个方法,其中整个参数列表是单个星号.

def save(*)
Run Code Online (Sandbox Code Playgroud)

我找不到一个很好的描述(虽然我根据我对splat参数的了解有一些想法).

它做了什么,为什么要使用它?

ruby

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

我可以使用CSS flexbox强制包装所有项目吗?

我有三个块元素,我正在使用CSS Flexbox进行布局.(在我的例子中,它们恰好<select>s<div>ider元素两边的两个;我正在构建一个List Builder控件.)

我想要的是:

  • 使中间(分隔符)元素占用尽可能少的空间.
  • 要使两端的元素(即:选择控件)具有最小宽度,并增长以填充可能的空间.
  • 当容器中有足够的水平空间时,将所有三个元素放在一行上(例如:浏览器宽度)
  • 当没有足够的水平空间将它们全部水平放置时,让所有元素垂直包裹.

除了上一个要求之外,Flexbox在所有这些方面做得非常出色.如果没有足够的空间将所有元素放在一行上,我就无法强制所有元素进行换行.

我正在使用相当简单的flexbox设置来实现布局:

.container {
    display: flex;
    flex-wrap: wrap;
    flex-direction: row;
    align-items: center;
}

select {
    flex-basis: 10em;
    flex-grow: 1;
}

.divider {
    flex-basis: 3em;
    flex-grow: 0;
    text-align: center;
}
Run Code Online (Sandbox Code Playgroud)

这样做的问题是,如果容器宽度设置为足够宽的一个选择加分隔符的任何数量,它将包装结束选择,但不包括分隔符.我会在一行上得到一个选择加一个分频器,看起来很难看.

这个小提琴说明了这个问题:

http://jsfiddle.net/5s0yf74w/1/

是否可以通过调整CSS同时保留一般的flexbox布局来实现我想要的结果?

css css3 flexbox

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