众所周知,从数组中Array#compact删除nil元素.
array.reject { |element| element.empty? }
将删除空元素[](在轨道中你也可以做到#blank?摆脱空元素和 nil元素).
是否有一种简短的方法来删除空/空白元素,如Array#compact?或者是用Array#reject我最好的赌注?
#compact如果有的话,我还没有看到"空"的等价物.但也许我只是忽略它.
我正在尝试在rspec中为两个rake任务编写测试,这两个rake任务在同一个文件中定义(在Rails 3.0.11项目中).出于某种原因,只有其中一个通过.我写了一个小的演示来抽象出任务的实际内容,同样的事情发生了.使用rake命令行调用时,这两个任务都有效.这是怎么回事?这是我的演示:
LIB /任务/ demo_tasks.rake
namespace :demo do
task :test => :environment do
puts "test!"
end
task :test_two => :environment do
puts "second test!"
end
end
Run Code Online (Sandbox Code Playgroud)
规格/ lib目录/任务/ demo_spec.rb
require 'spec_helper'
require 'rake'
describe "test tasks" do
let(:rake) do
app = Rake::Application.new
app.options.silent = true
app
end
before :each do
Rake.application = rake
Rake.application.rake_require 'lib/tasks/demo_tasks',
[Rails.root.to_s]
Rake::Task.define_task :environment
end
describe "demo:test" do
it "runs" do
rake["demo:test"].invoke
end
end
describe "demo:test_two" do
it "also_runs" do
rake["demo:test_two"].invoke
end
end
end …Run Code Online (Sandbox Code Playgroud)