小编Nic*_*ilt的帖子

capybara selenium和JavaScript Destroy

我正在使用rails 2.3.5,这就是我所做的.我安装了最新的黄瓜,黄瓜导轨和水豚.

rails demo
cd demo
ruby script/generate cucumber --rspec --capybara
ruby script/generate feature post title:string body:text published:boolean
ruby script/generate scaffold post title:string body:text published:boolean
rake db:migrate
rake cucumber
Run Code Online (Sandbox Code Playgroud)

所有的测试都在通过.现在我想用Javascript测试.

此时这就是场景的样子

  Scenario: Delete post
    Given the following posts:
      |title|body|published|
      |title 1|body 1|false|
      |title 2|body 2|true|
      |title 3|body 3|false|
      |title 4|body 4|true|
    When I delete the 3rd post
    Then I should see the following posts:
      |Title|Body|Published|
      |title 1|body 1|false|
      |title 2|body 2|true|
      |title 4|body 4|true|
Run Code Online (Sandbox Code Playgroud)

我在顶部添加了@javascript.

现在,当我运行rake cucumber时,我看到一个确认页面.但是在我点击之前没有任何反应

我需要做什么才能自动点击确定并提前进行测试.

selenium ruby-on-rails cucumber capybara

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

红宝石块并从块中返回一些东西

我使用的是ruby 1.8.7.

p = lambda { return 10;}
def lab(block)
  puts 'before'
  puts block.call
  puts 'after'
end
lab p
Run Code Online (Sandbox Code Playgroud)

上面的代码输出是

before
10
after
Run Code Online (Sandbox Code Playgroud)

我重构了相同的代码

def lab(&block)
  puts 'before'
  puts block.call
  puts 'after'
end
lab { return 10; }
Run Code Online (Sandbox Code Playgroud)

现在我得到LocalJumpError:意外返回.

对我来说,代码都在做同样的事情.是的,在第一种情况下,我通过了一个过程,在第二种情况下,我正在通过一个块.但是阻止转换阻止进入proc.因此proc.call应该表现相同.

是的,我已经看过这篇文章在Ruby块中使用'return'

ruby

5
推荐指数
2
解决办法
2773
查看次数

如何仅查找已发布至少一条评论的用户

我正在使用Rails 2.3.5.

这是一个标准案例.表是:用户,评论,user_comments.我需要找到状态为"有效"且已发布至少一条评论的所有用户.

我知道评论表可以有外键,但这是一个人为的例子.表中有两个用户.有两条评论.这两条评论都是由第一个用户发布的.

named_scope :with_atleast_one_comment, lambda { {
      :joins => 'inner join user_comments on users.id = user_comments.user_id ' } }


 named_scope :with_active_status, {:conditions => {:status => 'active'} }    
Run Code Online (Sandbox Code Playgroud)

当我执行

 User.with_atleast_one_comment.with_active_status 
Run Code Online (Sandbox Code Playgroud)

我得到两条记录.由于两个评论都是由一个用户发布的,我只想要一个用户.

有什么问题?

activerecord ruby-on-rails

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

我应该发送状态为404还是200?

我正在使用Rails构建一个Web应用程序.如果没有为网址找到http://example.com/city/non_existant_city的记录,那么我有以下代码.

 render :text => "record was not found", :status => :not_found
Run Code Online (Sandbox Code Playgroud)

在Firefox中我看到了消息.

在chrome(在Mac上)我看到一个chrome 404页面,此页面不显示我发送的消息.

这让我想知道我应该发送状态为200.我发送404以便网络抓取工具可以理解这个链接一直返回404所以一段时间后放弃该链接.

ruby-on-rails

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

为什么远程git服务器应该有--bare

我正在读这两篇 文章.但是我仍然没有--bare选项.如果服务器没有工作目录,并且团队的新成员克隆项目,则该人员将不会获得任何内容.

任何进一步的澄清将有助于解决为什么需要--bare.

git

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

无法想到git diff master..lab和git diff master ... lab的情况会有所不同

git diff master..lab 
Run Code Online (Sandbox Code Playgroud)

它会在两个分支的尖端之间产生差异.

git diff master...lab # notice triple dot
Run Code Online (Sandbox Code Playgroud)

它将从两个分支的共同祖先开始产生差异.

我无法想到双点的结果与三点的结果不同的任何情况.

git

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

Module.new与class_eval

这是一个很大的提交.但我希望你专注于这个改变块.http://github.com/rails/rails/commit/d916c62cfc7c59ab6411407a05b946d3dd7535e9#L2L1304

即使不了解代码的完整上下文,我也无法想到我将使用的场景

include Module.new {
  class_eval <<-RUBY
    def foo
       puts 'foo'
    end
  RUBY
}
Run Code Online (Sandbox Code Playgroud)

然后最终结果是在根上下文(之前的自我include Module.new)中foo添加了一个被调用的方法.

如果我拿出的Module.new代码,如果我只留下class_eval在这种情况下,我也将有一个名为方法fooself.

我错过了什么

ruby metaprogramming ruby-on-rails

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

添加行的快捷方式

在我目前的项目中,我最终输入了这一行

Then show me the page
Run Code Online (Sandbox Code Playgroud)

我应该如何创建快捷方式映射,以便如果我在一条线上并点击该快捷方式,则会创建当前行下方的新行,并添加上述行.

如果新添加的行与上面的行具有相同的缩进,那将是很好的.

我正在使用MacVim.

vim macvim

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

Ruby中的Lambda 1.9

我没有遵循这个改变.从:

longest_path_first = lambda do |host, location, _, _|
Run Code Online (Sandbox Code Playgroud)

至:

longest_path_first = lambda do |(host, location, _, _)|
Run Code Online (Sandbox Code Playgroud)

谁能解释一下?

ruby

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

关闭不起作用

var Dog = function() {

    var _instance = 'hello world';

    return function() {
        console.log(this._instance);
    }
} (); //note that it is self invoking function

var l = new Dog(); //#> undefined 
Run Code Online (Sandbox Code Playgroud)

在上面的例子中,我期待输出:

'你好,世界'

为什么this._instance不访问因闭包而应该可访问的变量?我在FF测试了这个并且未定义.

javascript

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