Ruby 在Sinatra中使用cli参数的Rake-tast

Ruby 在Sinatra中使用cli参数的Rake-tast,ruby,sinatra,mongoid,rake,Ruby,Sinatra,Mongoid,Rake,我已经在我的Sinatra应用程序中创建了一个rake文件,为Mongodb集合创建索引,我正在尝试传递rake任务db:create_index中的environment参数。 这是我的db.rake文件: namespace :db do task :create_indexes, :environment do |t, args| puts "Environment : #{args}" unless args[:environment]

我已经在我的
Sinatra
应用程序中创建了一个
rake
文件,为
Mongodb
集合创建索引,我正在尝试传递rake任务db:create_index中的
environment
参数。 这是我的
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_index[development]
运行rake任务时,我得到以下错误,
未找到匹配项:db:create_index[development]


现在我对如何解决这个问题一无所知。

所以问题不在于代码,而在于我使用的shell。 我用
zsh
shell代替
bash
,似乎
zsh
需要您跳出括号:
rake my_task\['arg1'\]

因此,代码与rakedb:create_index\['development'\]一起工作