rake ファイルをロードし、他のファイルからタスクを実行する 質問する

rake ファイルをロードし、他のファイルからタスクを実行する 質問する

現在、rake ファイルを分割して整理しなおしています。このために、タスクのグループごとに 1 つの rake ファイルを保持するrakeフォルダーを dir に追加しました。assets

私はPHPから来たので、非常に基本的なRuby/Rake の知識がないため、ファイルを読み込んだ後に名前空間のデフォルト アクションを実行できません。

Rake :: Task ...内部のコメントアウトされた文字列app:initにより、CL でエラーが発生します。

rake aborted! 
uninitialized constant TASK

これが名前空間/クラスです (これが正しい言葉であれば)。

task :default => [ 'app:init' ]
namespace :app do

    rake_dir   = "#{Dir.pwd}/assets/rake/"
    rake_files = FileList.new( "#{rake_dir}*" )

    desc "Loads rake modules (Default action)"
    task :init do
        puts "\t Importing rake files for processing"

        puts "\t loading..."
        rake_files.each() { |rake|
            puts "\t #{rake}"
            require rake
            # @link rubular.com
            name = rake.split( rake_dir ).last.gsub( /.rb\z/, '' )
            puts "\t #{name}"
            #Rake :: Task[ "#{name}:default" ].invoke
        }
    end
end

前もって感謝します。

編集:puts "file loaded"少なくとも、ファイルの先頭のプレーンテキストがエコーされるので、ファイルがロードされることは確かです。問題は、のみ:default読み込まれた rake ファイル内の名前空間のアクションが読み込まれていない可能性があります。

ベストアンサー1

rakelib/デフォルトで読み込まれるフォルダーにタスクを配置するrakeか、次の方法で特定のフォルダーを追加することができますRakefile

Rake.add_rakelib 'lib/tasks'

おすすめ記事