【问题标题】:Not setting arguments properly in rails tasks?在 rails 任务中没有正确设置参数?
【发布时间】:2015-01-28 18:21:53
【问题描述】:

我很好奇为什么我的args 变量在以下任务中总是以{} 的形式返回:

desc "Create an Api Key assuming one doesn't exist."
task :create_api_key, [:name] => :environment do | t, args |
  if !ApiKey.find_by_application_name(args[:name])
    binding.pry
    if ApiKey.new(:application_name => args[:name], :api_key => SecureRandom.hex(32)).save!
      puts "Your key is: " + ApiKey.find_by_application_name(args[:name]).api_key
    else
      puts "Could not create the api key, you might be missing an argument: Application Name."
    end
  else
    puts "This application already contains an api key."
  end
end

以下是任务的运行(注意binding.pry):

$ bin/rake create_api_key "xaaron_test"

From: /Users/Adam/Documents/Rails-Projects/BlackBird/lib/tasks/create_api_key.rake @ line 4 :

    1: desc "Create an Api Key assuming one doesn't exist."
    2: task :create_api_key, [:name] => :environment do | t, args |
    3:   if !ApiKey.find_by_application_name(args[:name])
 => 4:     binding.pry
    5:     if ApiKey.new(:application_name => args[:name], :api_key => SecureRandom.hex(32)).save!
    6:       puts "Your key is: " + ApiKey.find_by_application_name(args[:name]).api_key
    7:     else
    8:       puts "Could not create the api key, you might be missing an argument: Application Name."
    9:     end

[1] pry(main)> args
=> {}

即使我这样做 bin/rake create_api_key xaaron_test 我也会遇到同样的问题。到底是怎么回事?是不是有一些我忘记的小错误?

更新

我还吐出t 看看里面有什么:

pry(main)> t
=> <Rake::Task create_api_key => [environment]>

【问题讨论】:

    标签: ruby-on-rails ruby rake rake-task rakefile


    【解决方案1】:

    通过将参数直接放在任务名称后面的 [] 中,将参数传递给任务。

    例如

    rake create_api_key[xaaron_test]
    

    如果使用zsh,需要转义开[

    例如

    rake create_api_key\[xaaron_test]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-03
      • 1970-01-01
      • 2012-08-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多