在Sinatra中使用cli参数进行Rake任务

时间:2015-03-19 19:08:01

标签: ruby sinatra mongoid rake

我在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]

现在我对如何解决这个问题毫无头绪。

1 个答案:

答案 0 :(得分:0)

所以问题不是代码而是我正在使用的shell。 我使用zsh shell代替bash,似乎zsh要求您转义括号:rake my_task\['arg1'\]

因此,代码适用于rake db:create_indexes\['development'\]