Rake 命名空间无法识别本地任务
Rake namespace not recognizing a local task
我正在学习 Ruby 并尝试尝试解析参数,但在我制作的这个示例中遇到了问题。 Rake 命名空间无法识别本地任务。 :example
任务工作正常。 :exampleAlt
任务不工作。
错误是:
$ rake myapp:exampleAlt
rake aborted!
NameError: undefined local variable or method `runTests' for main:Object
C:/CTemp/rubyTest/Rakefile:19:in `block (2 levels) in <top (required)>'
Tasks: TOP => myapp:exampleAlt
这是我的代码:
require 'rake'
require 'rake/testtask'
# uses '--' args format because the 'optparse' lib we use wants it that way
# runs myapp tests with args client, env, and application
namespace :myapp do |args|
desc "Runs all tests."
task :runTests, [:client, :env, :app] do |t, args|
puts "Args: #{args}"
end
desc "Runs example."
task :example do
Rake.application.invoke_task("myapp:runTests[--client=EXAMPLE, --env=Staging, --app=myapp]")
end
desc "Runs example alternate."
task :exampleAlt do
Rake::Task[myapp:runTests].invoke('--client=EXAMPLE', '--env=Staging', '--app=myappalt')
end
desc "Runs tests with default values."
task :defaults, :client, :env, :app do |t, args|
args.with_defaults(:default_client => '--client=EXAMPLE', :default_env => '--env=Staging', :default_app => '--app=myapp')
puts "Args: #{args}"
end
end
第 20 行有问题:
Rake::Task[myapp:runTests].invoke('--client=EXAMPLE', '--env=Staging', '--app=myappalt')
myapp:runTests
没有符号也没有字符串。如果你把它变成一个字符串,那么你的任务将是 运行:
Rake::Task['myapp:runTests'].invoke('--client=EXAMPLE', '--env=Staging', '--app=myappalt')
使用 Rake::Task[...].invoke
时,您不在命名空间内工作,而是在全局级别调用任务。
我正在学习 Ruby 并尝试尝试解析参数,但在我制作的这个示例中遇到了问题。 Rake 命名空间无法识别本地任务。 :example
任务工作正常。 :exampleAlt
任务不工作。
错误是:
$ rake myapp:exampleAlt
rake aborted!
NameError: undefined local variable or method `runTests' for main:Object
C:/CTemp/rubyTest/Rakefile:19:in `block (2 levels) in <top (required)>'
Tasks: TOP => myapp:exampleAlt
这是我的代码:
require 'rake'
require 'rake/testtask'
# uses '--' args format because the 'optparse' lib we use wants it that way
# runs myapp tests with args client, env, and application
namespace :myapp do |args|
desc "Runs all tests."
task :runTests, [:client, :env, :app] do |t, args|
puts "Args: #{args}"
end
desc "Runs example."
task :example do
Rake.application.invoke_task("myapp:runTests[--client=EXAMPLE, --env=Staging, --app=myapp]")
end
desc "Runs example alternate."
task :exampleAlt do
Rake::Task[myapp:runTests].invoke('--client=EXAMPLE', '--env=Staging', '--app=myappalt')
end
desc "Runs tests with default values."
task :defaults, :client, :env, :app do |t, args|
args.with_defaults(:default_client => '--client=EXAMPLE', :default_env => '--env=Staging', :default_app => '--app=myapp')
puts "Args: #{args}"
end
end
第 20 行有问题:
Rake::Task[myapp:runTests].invoke('--client=EXAMPLE', '--env=Staging', '--app=myappalt')
myapp:runTests
没有符号也没有字符串。如果你把它变成一个字符串,那么你的任务将是 运行:
Rake::Task['myapp:runTests'].invoke('--client=EXAMPLE', '--env=Staging', '--app=myappalt')
使用 Rake::Task[...].invoke
时,您不在命名空间内工作,而是在全局级别调用任务。