রেকে নামস্থান জন্য ডিফল্ট টাস্ক


88

এরকম কিছু দেওয়া হয়েছে:

namespace :my_tasks do
  task :foo do
    do_something
  end

  task :bar do
    do_something_else
  end

  task :all => [:foo, :bar]
end

আমি কীভাবে :allডিফল্ট টাস্ক হব, যাতে দৌড়াতে rake my_tasksএটি কল করবে (কল করার পরিবর্তে rake my_tasks:all)?


আপনি কি নেমস্পেসে একটি ডিফল্ট লাগানোর চেষ্টা করেছেন (টাস্ক: ডিফল্ট =>: সমস্ত)
জিম ডিভিল

জিম যা বর্ণনা করে তা করুন, কেবলমাত্র ডিফল্ট টাস্ক নেমস্পেসের বাইরে চলে যায় এবং অবশ্যই নামস্থান এবং কার্যের নাম অন্তর্ভুক্ত করতে হবে। (কার্য: ডিফল্ট => "আমার_টাস্কস: সমস্ত") কার্যকারী উদাহরণের জন্য নীচে আমার উত্তরটি দেখুন।
র্যান্ডি এপ্পিংগার

উত্তর:


88

এটিকে এভাবে নাম স্থানের বাইরে রাখুন:

namespace :my_tasks do
  task :foo do
    do_something
  end

  task :bar do
    do_something_else
  end

end

task :all => ["my_tasks:foo", "my_tasks:bar"]

এছাড়াও ... যদি আপনার কাজগুলিতে তর্কগুলি প্রয়োজন তখন:

namespace :my_tasks do
  task :foo, :arg1, :arg2 do |t, args|
    do_something
  end

  task :bar, :arg1, :arg2  do |t, args|
    do_something_else
  end

end

task :my_tasks, :arg1, :arg2 do |t, args|
  Rake::Task["my_tasks:foo"].invoke( args.arg1, args.arg2 )
  Rake::Task["my_tasks:bar"].invoke( args.arg1, args.arg2 )
end

লক্ষ্য করুন যে ২ য় উদাহরণে আপনি কীভাবে টাস্কটিকে নাম স্থান হিসাবে একই নামে ডাকতে পারেন, যেমন 'মাই_টাস্কস'


4
এটি কেবল এটি হিসাবে পরিচিত হিসাবে উপলব্ধ করে তোলে rake all। এই ক্ষেত্রে, আমি অন্য নামব্যবধান আছে তাই কি আমি চাই টাস্ক কল করতে হয় my_tasks:allযেমনrake my_tasks হিসাবে নয়, rake all
হেল্ডার এস রিবেইরো

53
সুতরাং কেবলমাত্র ব্যবহার করুন: টাস্ক: মাই_টাস্কস => ["মাই_টাস্কস: foo", "মাই_টাস্কস: বার"]
Szymon Lipiński

4
আপ সিমনের মন্তব্যের পক্ষে ভোট দিয়েছিল, আমি ভুলে গিয়েছিলাম যে এটি আমি কীভাবে এটি করি।
জিম ডিভিল

52

খুব স্বজ্ঞাত নয়, তবে আপনার একটি নেমস্পেস এবং একই কাজ থাকতে পারে এমন একটি টাস্ক থাকতে পারে এবং এটি আপনাকে যা চান তা কার্যকরভাবে দেয়। এই ক্ষেত্রে

namespace :my_task do
  task :foo do
    do_foo
  end
  task :bar do
    do_bar
  end
end

task :my_task do
  Rake::Task['my_task:foo'].invoke
  Rake::Task['my_task:bar'].invoke
end

এখন আপনি কমান্ডগুলি চালাতে পারেন,

rake my_task:foo

এবং

rake my_task

4
এটি দুর্দান্ত এবং প্রশ্নে বর্ণিত সমস্ত প্রয়োজনীয়তা কভার করে।
ইভার

4
আমি মনে করি আমন্ত্রণটি অত্যধিক জটিল এবং এটি কেবল টাস্ক নির্ভরতা হওয়া উচিত:task :my_task => ['my_task:foo', 'my_task:bar']
আলেকজান্ডার প্রেসার

8

নেমস্পেসে আপনার প্রচুর কাজ থাকলে আপনাকে এটি ব্যবহার করার পরামর্শ দিচ্ছি।

task :my_tasks do
  Rake.application.in_namespace(:my_tasks){|x| x.tasks.each{|t| t.invoke}}
end

এবং তারপরে আপনি নামস্পেসের সমস্ত কাজ এই দ্বারা চালাতে পারবেন:

rake my_tasks

এটির সাথে, আপনাকে নিজের: সমস্ত টাস্কটি পরিবর্তন করার জন্য চিন্তা করার দরকার নেই যখন আপনি সেই নামস্থানে নতুন কাজ যুক্ত করবেন।


3

আমি শসা জন্য এই Rakefile ব্যবহার:

require 'cucumber'
require 'cucumber/rake/task'

namespace :features do
  Cucumber::Rake::Task.new(:fast) do |t|
    t.profile = 'fast'
  end

  Cucumber::Rake::Task.new(:slow) do |t|
    t.profile = 'slow'
  end

  task :ci => [:fast, :slow]
end

task :default => "features:ci"

তারপরে যদি আমি ঠিক টাইপ করি:

rake

এটি ডিফল্ট টাস্ক চালায় যা দ্রুত এবং ধীর উভয় পরীক্ষা চালায়।

আমি শিখেছি এই থেকে Cheezy এর ব্লগ


3

আমি যেভাবে ওভিভিও 171 এর প্রশ্নটি পড়ছি তা হ'ল তিনি 1) নামস্থানকে একটি কাজ হিসাবে নামক স্থান দিয়ে কোনও নির্দিষ্ট কাজ শুরু করার পদ্ধতিগত পদ্ধতিতে জিজ্ঞাসা করছেন ।

আমি প্রায়শই একই প্রয়োজনের মুখোমুখি হয়েছি। আমি যুক্তিযুক্তভাবে কাজগুলিকে নামের জায়গাগুলিতে গ্রুপ করতে চাই like প্রায়শই সেই গোষ্ঠীকরণ একটি শ্রেণিবিন্যাসের অনুরূপ। সুতরাং দলটি চালানোর ইচ্ছাটি আমার কাছে খুব বেশি উপলব্ধি করে।

এখানে আমার গ্রহণ:

module Rake::DSL
  def group(name, &block)
    ns = namespace name, &block
    default = ns[:default]
    task name => "#{name}:default" if default
    ns
  end
end

group :foo do
  task :foo1 do |t| puts t.name end
  task :foo2 do |t| puts t.name end
  task :default => [:foo1, :foo2]
end

task :default => :foo

1) ... বা জিজ্ঞাসা করেছিল, বহু বছর আগে। তবুও একটি আকর্ষণীয় প্রশ্ন।


1

নেমস্পেসের বাইরে নিম্নলিখিত কাজটি যুক্ত করুন:

desc "Run all my tasks"
task :my_tasks => ["my_tasks:all"]

মনে রাখবেন, আপনার নামের জায়গার মতো একই নামের একটি কাজ থাকতে পারে।

এবং এটির আরও বড় উদাহরণ, এটি দেখায় যে, আপনি কীভাবে কার্যগুলি ব্যবহার করতে পারেন, যার নামস্থান যেমন নেস্টস্পেসগুলি নেস্টেজ করার সময় রয়েছে:

namespace :job1 do
  task :do_something1 do
        puts "job1:do_something1"
    end

  task :do_something2 do
        puts "job1:do_something2"
    end
  task :all => [:do_something1, :do_something2]
end

desc "Job 1"
task :job1 => ["job1:all"]

# You do not need the "all"-task, but it might be handier to have one.
namespace :job2 do
  task :do_something1 do
        puts "job2:do_something1"
    end

  task :do_something2 do
        puts "job2:do_something2"
    end
end

desc "Job 2"
task :job2 => ["job2:do_something1", "job2:do_something2"]

namespace :superjob do
    namespace :job1 do
        task :do_something1 do
            puts "superjob:job1:do_something1"
        end

        task :do_something2 do
            puts "superjob:job1:do_something2"
        end
    end

    desc "Job 1 in Superjob"
    task :job1 => ["job1:do_something1", "job1:do_something2"]

    namespace :job2 do
        task :do_something1 do
            puts "superjob:job2:do_something1"
        end

        task :do_something2 do
            puts "superjob:job2:do_something2"
        end
    end

    desc "Job 2 in Superjob"
    task :job2 => ["job2:do_something1", "job2:do_something2"]
end

desc "My Super Job"
task :superjob => ["superjob:job1", "superjob:job2"]

# Do them all just by calling "$ rake"
task :default => [:job1, :job2, :superjob]

কেবল এটি অনুলিপি করুন এবং চেষ্টা করে দেখুন।


0

রকের সমাধান স্থানের ভিত্তিতে রকেতে নামস্থানটির জন্য ডিফল্ট টাস্ক

এবং এই ডেক্সটারের উত্তরটি কি বর্তমান রেক টাস্কটি জানার কোনও উপায় আছে?

namespace :root do
  namespace :foo do
  end

  namespace :target do
    task :all do |task_all|
      Rake.application.in_namespace(task_all.scope.path) do |ns|
        ns.tasks.each { |task| task.invoke unless task.name == task_all.name } 
      end
    end

    task :one do
    end

    task :another do
    end
  end
end

0

সাইমন লিপিস্কির এবং শ্যাম হাবরকাদার জবাবগুলির সংমিশ্রণ, আমি এখানে সবচেয়ে মূর্খবাদী এবং একত্রীকরণের উত্তর বলে মনে করি:

namespace :my_tasks do
  task :foo do
    do_something
  end

  task :bar do
    do_something_else
  end

end

task :my_tasks => ["my_tasks:foo", "my_tasks:bar"]

rake my_tasksসাবটাস্কগুলির জটিল আহ্বান এড়িয়ে চলাকালীন আপনাকে অনুমতি দেয় ।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.