我在rake
应用中创建了一个Sinatra
文件来为Mongodb
集合创建索引,我试图在rake任务db中传递environment
参数:create_indexes。
这是我的db.rake
文件:
namespace :db do
task :create_indexes, :environment do |t, args|
puts "Environment : #{args}"
unless args[:environment]
puts "Must provide an environment"
exit
end
yaml = YAML.load_file("./config/mongoid.yml")
env_info = yaml[args[:environment]]
unless env_info
puts "Unknown environment"
exit
end
Mongoid.configure do |config|
config.from_hash(env_info)
end
Bin.mongoid:create_indexes
end
end
此外,应用根目录中的Rakefile
包含:
require 'rake'
require 'rubygems'
require 'bundler/setup'
Dir.glob('lib/tasks/*.rake').each { |r| load r}
但是当我尝试使用命令rake db:create_indexes[development]
运行rake任务时,我收到以下错误,no matches found: db:create_indexes[development]
现在我对如何解决这个问题毫无头绪。
答案 0 :(得分:0)
所以问题不是代码而是我正在使用的shell。
我使用zsh
shell代替bash
,似乎zsh
要求您转义括号:rake my_task\['arg1'\]
。
因此,代码适用于rake db:create_indexes\['development'\]
。