Ruby rake 打印参数但不喜欢它在 methodcalll 上的值
Ruby rake prints argument but doesn't like it's value on methodcalll
我有任务:
desc "Create a team"
task :create_dev_team, [:team_name] do |t, args|
puts "Creating \"#{args.team_name}\" team under Sub Org ID: 1"
ESP::Team.create(name: #{args.team_name}, sub_organization_id: 1)
end
创建团队的 ESP SDK 文档是:
team = ESP::Team.create(name: "Team Name", sub_organization_id: 6)
当我直接从 irb 调用该线路时,它工作正常,
但是 当我打电话时:
rake create_dev_team[Team Name] --trace
我得到:
rake aborted!
SyntaxError: /Users/me/dev/my-repo/Rakefile:348: syntax error, unexpected keyword_end
我做错了什么?
您使用的语法就像插入字符串一样:
#{args.team_name}
但是没有引用字符串 - 这里没有假定的字符串。这意味着 Ruby 会将其视为从 #
开始的注释。这反过来意味着代码中没有关闭 )
。当解析器找到 end
时,这是出乎意料的,因为它仍然认为上下文在方法调用内部,所以它无法完成外部块。
您应该使用:
ESP::Team.create(name: args.team_name, sub_organization_id: 1)
或:
ESP::Team.create(name: "#{args.team_name}", sub_organization_id: 1)
如果您的方法总是 return 是 String
,那么您应该使用前者。这里,args.team_name
可以returnnil
。但是你真的应该早点检查它,如果是的话,任务失败,因为空的团队名称可能会导致你的代码其他地方出现问题。
我有任务:
desc "Create a team"
task :create_dev_team, [:team_name] do |t, args|
puts "Creating \"#{args.team_name}\" team under Sub Org ID: 1"
ESP::Team.create(name: #{args.team_name}, sub_organization_id: 1)
end
创建团队的 ESP SDK 文档是:
team = ESP::Team.create(name: "Team Name", sub_organization_id: 6)
当我直接从 irb 调用该线路时,它工作正常,
但是 当我打电话时:
rake create_dev_team[Team Name] --trace
我得到:
rake aborted!
SyntaxError: /Users/me/dev/my-repo/Rakefile:348: syntax error, unexpected keyword_end
我做错了什么?
您使用的语法就像插入字符串一样:
#{args.team_name}
但是没有引用字符串 - 这里没有假定的字符串。这意味着 Ruby 会将其视为从 #
开始的注释。这反过来意味着代码中没有关闭 )
。当解析器找到 end
时,这是出乎意料的,因为它仍然认为上下文在方法调用内部,所以它无法完成外部块。
您应该使用:
ESP::Team.create(name: args.team_name, sub_organization_id: 1)
或:
ESP::Team.create(name: "#{args.team_name}", sub_organization_id: 1)
如果您的方法总是 return 是 String
,那么您应该使用前者。这里,args.team_name
可以returnnil
。但是你真的应该早点检查它,如果是的话,任务失败,因为空的团队名称可能会导致你的代码其他地方出现问题。