কনসোল থেকে রেক টাস্কগুলি কীভাবে চালানো যায়?


85

আমি কনসোল থেকে আমার রাক টাস্কটি শুরু করতে চাই। এটা কি doable? যদি হ্যাঁ, কিভাবে এটি?

আমি কনসোলে এটি চেষ্টা করেছি:

require 'rake'
Rake::Task['my_task'].invoke

তবে এটি আমাকে এই ত্রুটি দেয়:

RuntimeError: Don't know how to build task

এ যেন রেক কাজটি খুঁজে পায় না।

কোন সাহায্য প্রশংসা করা হবে।

ধন্যবাদ

সম্পাদনা করুন: আমি রেলগুলি ২.৩.৫ ব্যবহার করছি

উত্তর:


189

আপনার রেকে কাজগুলি চালানোর জন্য দুটি পদক্ষেপ প্রয়োজন:

  1. লোড হচ্ছে রেক
  2. আপনার Rake কাজগুলি লোড হচ্ছে

আপনি দ্বিতীয় ধাপটি মিস করছেন।

সাধারণত এটি রাকফাইলে করা হয় তবে আপনাকে এটি এখানে ম্যানুয়ালি করতে হবে:

require 'rake'
Rails.application.load_tasks # <-- MISSING LINE
Rake::Task['my_task'].invoke

4
আরও বিকল্পের জন্য দয়া করে স্ট্যাকওভারফ্লো
জাহান

8
আপনি বলার মধ্যে পার্থক্যটি লক্ষ্য করতে চাইতে পারেন .invokeএবং .execute, যদি আপনাকে বেশ কয়েকবার টাস্ক চালানোর প্রয়োজন হয় (যেমন কোনও অ্যাপ্লিকেশন সহ ডেটা স্যানিটি চেকার যা শুরু করতে খুব বেশি সময় নেয়) তবে আপনি .executeএই কাজটি করতে চাইবেন ।
মিউ খুব ছোট

4
আপনার যদি যুক্তিগুলি পাস করার প্রয়োজন হয় তবে তা চালনার পদ্ধতিতে করুন:.invoke(arg1, arg2,...)
নুনো সিলভা

14

এটি করার সবচেয়ে সহজ উপায় হ'ল আইআরবি থেকে % x [ কমান্ড ] চালানো । আপনি কী অর্জন করতে চান তা নিশ্চিত কিনা I'm

%x[rake db:migrate]

সম্পাদনা:.invoke গ্রহণযোগ্য উত্তরে ড্যানিয়েল যেমন বলেছেন তেমনভাবে ব্যবহার করার পরামর্শ দিই ।


4
সমস্যাটি হ'ল রাক আমার কাজটিকে স্বীকৃতি দেবে বলে মনে হয় না। কোন ধারণা কেন?
ফাজার্মফ

এটি পুরোপুরি @garno কাজ করে! দুঃখিত আমি জানি যে এটি এক বছর হয়েছে এবং হঠাৎ আমি একই প্রয়োজনে চলে আসছি।
ফাজার্মফ

4
আপনি চাইলে পিছন টিকগুলিতেও এটি ঘিরে রাখতে পারেন।
স্যাম সোফেস

এটি ধীরে ধীরে কারণ এটি একটি নতুন প্রক্রিয়া ঘটাতে এবং আপনার পুনরায় অ্যাপসটি আবার ইনস্টল করতে হবে inst invokeভাল এবং আরও দক্ষ।
জোশুয়া পিন্টার

9

সহজ উপায়:

Rails.application.load_tasks
Rake::Task['my_task'].invoke

এটি কেবল সহজ উপায়ই নয় তবে এর অর্থ আপনি কোনও নতুন প্রক্রিয়া ঘুরিয়ে নিচ্ছেন না এবং আপনার পুনরায় অ্যাপ্লিকেশনটি পুনরায় ইনস্ট্যান্ট করছেন। সহজ এবং দ্রুত!
জোশুয়া পিন্টার

2

আমি ব্যবহার করছি rails 5.x.x, এবং একই ফর্মটি করার প্রয়োজন ছিল rails console
আমি এখানে রেক টাস্ক তৈরি করেছি-

app/lib/task_to_execute.rake

কমান্ডটি আমার পক্ষে কাজ করেছে -

ভার Rails.application.load_tasks

Rake::Task['task_to_execute:task_name'].invoke

আমার জন্য কাজ!


1

কেবল একটি নোট যে আপনি যদি রেল কনসোলে থাকেন তবে rails cআপনি কেবল রক টাস্ক পদ্ধতিটি কল করে / চালাতে পারবেনirb(main):001:0> TaskClassName.new.my_task

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