0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Ruby on Rails】引数付きrakeタスクの実装

Last updated at Posted at 2024-11-29

はじめに

今回は、引数つきrakeタスクの基本的な実装方法や注意点等書いていきます。
rakeとは、linuxにおけるmakeタスクと同じような動作をするrubyのビルドツールです。rakeファイルに一連のタスクを定義し、実行することができます。
コマンドラインやソース上から呼び出すことが可能です。

実装方法

まず、rakeファイルを作成します。コマンドライン上から下記を実行してください。

rails g task sample_task

そうすると、lib/tasks配下にsample_task.rakeが生成されているはずです。今回はこちらのファイルにタスクを定義していきます。

では、ファイルの中身を実装していきましょう。引数を与えて、任意の文章を表示するタスクです。

 #タスクの名前空間を定義
namespace :sample_task do
 #タスクの説明を記述
 desc '任意のテキストを表示'
  task :show_text, ['text'] => :environment do |task, args|
 #argsはHashとして扱われる
   p args.text
  end
end 

:environmentをつけてRails環境を明示しないとうまく実行できないようなので注意しましょう。
上記が記述できたら、正しくrakeタスクとして認識できているか確認したのち、実行していきます。

#現在利用可能なrakeタスクの一覧を表示。rake sample_task:say_hello[text]があることを確認
rake -T

#rakeタスクを実行。Hello Worldと表示されれば成功
rake sample_task:show_text['Hello World']

#--traceオプションを付けると実行時の詳細なログを表示することができます。
rake sample_task:show_text['Hello World'] --trace

では、複数の引数を与えたい場合はどうでしょう?実装していきます。

namespace :sample_task do
 desc '任意のテキストを表示'
   #引数「first_text」と「second_text」を与える
   task :show_text, ['first_text', 'second_text'] => :environment do |task, args|
   #Hashとして扱い、値を取り出し
   p args.first_text + ' ' + args.second_text
  end
end

実行しましょう。

#現在利用可能なrakeタスクの一覧を表示。rake sample_task:say_hello[first_text, second_text]があることを確認
rake -T

#rakeタスクを実行。Hello Niffyと表示されれば成功
rake sample_task:show_text['Hello','Niffy']

これが、複数の引数を与えるrakeタスクの基本的な実装方法です。
注意点としては、コマンドラインから実行する際、引数の間にスペースがあるとうまくいきません。スペースは入れずに実行しましょう。

#失敗パターン 
rake sample_task:show_text['Hello ', 'Niffy']

終わりに

以上が基本的な引数つきrakeタスクの使い方です。(間違えているところありましたら申し訳ありません、、!)
今後もRubyについての記事投稿していきたいと思いますので、よろしくお願いいたします。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?