Ruby
 Computer >> コンピューター >  >> プログラミング >> Ruby

RubyのRakeとは何ですか?その使用方法

RakeはRubyで人気のあるタスクランナーです。

タスクとは何ですか?

  • データベースのバックアップを作成する
  • テストの実行
  • 統計の収集と報告

これらは小さなタスクであり、Rakeがないと、プロジェクト全体のさまざまなファイルに分散します。

Rakeは、タスクへのアクセスを一元化します。

Rakeを使用すると、特定のパターンに一致し、最近変更されたファイルを見つけるなど、いくつかのことが簡単になります。

もう1つ

RakeとRackを混同しないでください。名前は非常に似ていますが、まったく異なるものです。

  • 熊手 はタスクランナーです。
  • ラック Rubyサーバーとフレームワークが連携するのに役立ちます。

今:

Rakeについて詳しく見ていきましょう!

レーキを使用するのは誰ですか?

レール!

Railsで何かをしたことがあれば、おそらくrake db:migrateに精通しているでしょう。 コマンド。

またはrake routes

それがRakeの実際の動作です。

Railsはバージョン5.0以降、ほとんどのrakeを呼び出すことができることに注意してください。 railsを使用したコマンド 代わりに。

言い換えれば

rails db:migrateを実行できます 、しかしRakeはまだ作業を行っています。

レーキタスクの書き方

簡単なRakeタスクは次のとおりです。

desc "Print reminder about eating more fruit."

task :apple do
  puts "Eat more apples!"
end

このコードは、Rakefileという名前のファイル内に配置できます。 、またはRailsを使用している場合は、これをlib/tasks/apple.rakeに保存できます。 。

このタスクを実行するには

rake apple

# "Eat more apples!"

タスク内では、通常のRubyコードを記述できますが、使用できる便利なRakeメソッドがいくつかあります。

  • ruby​​(Rubyファイルを実行)
  • sh(システムコマンドを実行)
  • safe_ln(ファイルシステムにシンボリックリンクを作成します)

RakeにはFileUtilsが含まれています モジュール。

つまり、cpを使用してファイルをコピーできます 、mkdir_pでディレクトリを作成します 、さらにはchownでファイルのアクセス許可を変更します 。

ここに例があります

task :clean_cache do
  rm_r FileList["tmp/cache/*"]
end

rm_rに注意してください (再帰的に削除)確認なしでファイルが削除されるため、確認ステップを追加する場合は、依存タスクを追加できます。 (この記事の後半で説明します)続行したくない場合は、例外を発生させます。

別のディレクトリ内でのRakeコマンドの実行

特定のディレクトリ内でRakeコマンドを実行することをお勧めします。

方法は次のとおりです

task :import do
  puts "Importing data..."

  Dir.chdir(Rails.root.join("data")) { ruby "load-data.rb" }
end

この例では、data内でRubyスクリプトを実行しています Railsプロジェクトのフォルダ。

Rakeで名前空間を使用する方法

タスクには同じような名前を付けることができるため、同じ名前を2回使用するのは簡単です。

そのため、Rakeには名前空間があります。

backupを作成できます すべてのバックアップタスクの名前空間。

このように

namespace :backup do
  task :create do
    # ...
  end

  task :list do
    # ...
  end

  task :restore do
    # ...
  end
end

名前空間付きタスクを実行するには

rake backup:create

依存タスク

Rakeを使用すると、現在のタスクの前に実行する必要がある他のタスクのリストを定義できます。

これにより、タスクに必要なセットアップを行うことができます。

例:

task create_examples: "load_database" do
  # ...
end

この例では、load_database create_examplesの前に実行されます 。

依存タスクのリストは、文字列の配列または記号の配列にすることもできます。

別のタスク内でレーキタスクを実行する

現在のタスクの前に実行される一連のタスクを使用する代わりに、現在のタスク内で別のタスクを実行する場合は、次のコードを使用できます。

task :coverage do
  ENV['COVERAGE'] = 'true'
  Rake::Task["test"].execute
end

これは、テストカバレッジやその他のオプションを有効にする環境変数を設定するのに役立ちます。

レーキルールの使用方法

ルールはファイル拡張子の変換を定義します。

task compress: FileList["/tmp/*.txt"].ext(".txt.gz")

rule '.txt.gz' => '.txt' do |t|
  sh "gzip", "-k", "-f", t.source
end

ルールを使用する利点は、ファイルが圧縮されると、ソースファイルが変更されるまで再度圧縮されないことです。

このコードのいくつかの点に注意してください

  1. FileListを使用します Rakeの一部であるクラスは、操作するファイルのリストを定義します。
  2. ルールはTARGET拡張子で始まります。ルールを一致させるには、.ext(".txt.gz")を使用する必要があります。 FileListで 。
  3. この.txt.gz => .txt txt.gzから移動するという意味ではありません txtへ 、その逆です。矢印はハッシュ構文です。

レーキオプションとコマンド

便利なレーキオプションのリストは次のとおりです

  • rake -T(利用可能なタスクのリスト)
  • rake -P(タスクとその依存関係を一覧表示)
  • rake -W(タスクとその定義場所を一覧表示)
  • rake -V(冗長モード、エコーシステムコマンド)
  • rake -t(デバッグモード)
  • rake -f(特定のRakefileを使用)

たとえば、Railsアプリの場合

> rake -T test

rake test         # Runs all tests in test folder except system ones
rake test:db      # Run tests quickly, but also reset db
rake test:system  # Run system tests only

概要

Rubyで人気のあるタスクランナーであるRakeについて学びました。

rake -Tを使用します 使用可能なタスクを見つけるには、独自のタスクを作成してRakefileに追加します 、またはlib/tasks内 フォルダを作成し、Rakeを覚えておいてください &Rack 別のものです。

RubyのRakeとは何ですか?その使用方法

より多くの人が楽しめるように、この記事を共有することを忘れないでください🙂

読んでくれてありがとう!


  1. ガイド付きアクセスとは?その使用方法は?

    人々は、携帯電話を渡した瞬間に周囲をのぞき見する傾向があります。たとえば、面白い写真をチェックするために携帯電話を友人に渡すと、友人はスクロールを開始し、次に知っていることとして、あなたの個人的なものを調べ始めます。これを避けるために、Apple には Guided Access と呼ばれる機能があります。 画像クレジット: いもれ.com ガイド付きアクセスは、iPhone および iPad を使用しているときに一度に 1 つのタスクに集中できるようにするアクセシビリティ機能です。デバイスを 1 つのアプリに限定するだけでなく、アプリの機能も制御できます。 ガイド付きアクセスが有効な場合

  2. RSS フィードの概要と使用方法

    読書は、十分な知識を得るだけでなく、対人スキルにも役立つ健康的な習慣です。インターネットを使えば、紙を節約して環境に配慮することができるようになりましたが、特に読む価値のあるものを見つけようとすると、頭痛の種にもなります。読み取り可能なコンテンツの選択は、大量のコレクションが原因でインターネットを読む際に直面する可能性がある主要な問題の 1 つです。 この問題を解決するために、RSS フィードが開発されました。これにより、コンテンツを読んだり見たりする時間を節約できます。 RSS を使用すると、購読している作成者 (Web サイト) から RSS アグリゲーター (プログラム) にアクセスし