Actuellement, j'essaie de diviser mes fichiers de râteau pour mieux les organiser. Pour cela, j'ai ajouté un dossier rake
à mon répertoire assets
, qui contient un fichier rake pour chaque groupe de tâches.
Comme je viens de PHP, je n'ai que des connaissances très basiques de Ruby/Rake et je ne peux pas exécuter l'action par défaut de mes espaces de noms après le chargement du fichier.
La chaîne Rake :: Task ...
Mise en commentaire à l'intérieur de app:init
Me renvoie une erreur au CL:
rake aborted! uninitialized constant TASK
Voici l'espace de noms/classe (si c'est le bon mot).
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
Merci d'avance.
Edit: Au moins, je peux être sûr que le fichier est chargé, car le simple puts "file loaded"
Au début de ces fichiers est répété. Le problème semble uniquement être que l'action :default
Pour l'espace de noms dans le fichier râteau chargé ne se charge pas.
Si votre objectif est de charger des tâches de râteau à partir d'un fichier externe, vous pouvez le faire comme suit. Tout d'abord, supposons que vous ayez une tâche de râteau dans un fichier appelé <project>/lib/tasks/hello.rake
qui ressemble à ceci:
desc "Say hello"
task :hello do
puts "Hello World!"
end
Ensuite, vous pouvez créer un simple Rakefile
dans votre <project>
répertoire pour le charger comme ceci:
Dir.glob('lib/tasks/*.rake').each { |r| load r}
desc "Say goodbye"
task :goodbye do
puts "See you later!"
end
Bien sûr, cela chargera tous les fichiers se terminant par l'extension rake
. Vous pouvez simplement charger hello.rake
comme ça:
load './lib/tasks/hello.rake'
desc "Say goodbye"
task :goodbye do
puts "See you later!"
end
Pour voir toutes les tâches qui ont été chargées, utilisez rake -T
. Notez que j'ai utilisé lib/tasks
puisque c'est l'approche standard adoptée par Rails applications. Vous pouvez utiliser assets
ou ce que vous préférez, bien que je préfère lib/tasks
même dans les projets non-Rails. J'ai également tendance à séparer mes fichiers de tâches en fonction de leur espace de noms.
Vous pouvez soit mettre vos tâches dans rakelib/
dossier que rake
charge par défaut ou ajoutez un dossier spécifique dans votre Rakefile
via:
Rake.add_rakelib 'lib/tasks'
Vous pouvez toujours utiliser Rake.add_rakelib 'tasks'
, comme l'a dit @splattael. Une chose que vous devez savoir, les fichiers dans le répertoire "tâches" doivent avoir une extension ".rake" au lieu de ".rb", sinon, rake ne le chargera pas pour vous.
Exemple de fichier:
Après avoir fait tout ce qui précède, utilisez rake -T
pour vérifier votre travail pour voir si le râteau a réussi à charger vos tâches.