我正在使用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时,我看到一个确认页面.但是在我点击之前没有任何反应
我需要做什么才能自动点击确定并提前进行测试.
我使用的是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'
我正在使用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)
我得到两条记录.由于两个评论都是由一个用户发布的,我只想要一个用户.
有什么问题?
我正在使用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所以一段时间后放弃该链接.
git diff master..lab
Run Code Online (Sandbox Code Playgroud)
它会在两个分支的尖端之间产生差异.
git diff master...lab # notice triple dot
Run Code Online (Sandbox Code Playgroud)
它将从两个分支的共同祖先开始产生差异.
我无法想到双点的结果与三点的结果不同的任何情况.
这是一个很大的提交.但我希望你专注于这个改变块.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在这种情况下,我也将有一个名为方法foo中self.
我错过了什么
在我目前的项目中,我最终输入了这一行
Then show me the page
Run Code Online (Sandbox Code Playgroud)
我应该如何创建快捷方式映射,以便如果我在一条线上并点击该快捷方式,则会创建当前行下方的新行,并添加上述行.
如果新添加的行与上面的行具有相同的缩进,那将是很好的.
我正在使用MacVim.
我没有遵循这个改变.从:
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)
谁能解释一下?
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测试了这个并且未定义.
ruby ×3
git ×2
activerecord ×1
capybara ×1
cucumber ×1
javascript ×1
macvim ×1
selenium ×1
vim ×1