Ruby on rails 3 如何为Rails引擎创建一个不向主机应用程序公开的rake任务?
$rake应用程序:你好 要运行任务,我需要在它前面加上“app:”前缀,并且它在虚拟应用程序的上下文中运行。它还以Ruby on rails 3 如何为Rails引擎创建一个不向主机应用程序公开的rake任务?,ruby-on-rails-3,ruby-on-rails-3.1,rake,ruby-on-rails-plugins,Ruby On Rails 3,Ruby On Rails 3.1,Rake,Ruby On Rails Plugins,$rake应用程序:你好 要运行任务,我需要在它前面加上“app:”前缀,并且它在虚拟应用程序的上下文中运行。它还以rakehello的形式向主机应用程序公开(即在父Rails应用程序中用作插件时) 我想运行一个不需要Rails环境的rake任务,并运行一些命令,但它是从引擎根目录运行的,而不是从虚拟应用程序根目录运行的。我想对这个问题有一个更好的答案,但是我发现您可以在Rakefile中为引擎添加任务(因此。/Rakefile不在spec/dummy应用程序中),如下所示: 我更愿意将我的任务
rakehello
的形式向主机应用程序公开(即在父Rails应用程序中用作插件时)
我想运行一个不需要Rails环境的rake任务,并运行一些命令,但它是从引擎根目录运行的,而不是从虚拟应用程序根目录运行的。我想对这个问题有一个更好的答案,但是我发现您可以在Rakefile中为引擎添加任务(因此。/Rakefile不在spec/dummy应用程序中),如下所示: 我更愿意将我的任务放在另一个文件中,但至少这提供了一种前进的方式。在我的例子中,我希望在虚拟应用程序中运行Konacha javascript测试,因此我的Rakefile如下所示:
task :my_task do
puts "hi!"
end
task :default => [:spec, :my_task]
我知道这有点晚了,但对于正在寻找正确答案的其他人,请执行以下操作: 创建您的任务:
task :spec_javascript do
exec 'cd spec/dummy && rake konacha:run' # exec passes command return value up stack!
end
task :default => [:spec, :spec_javascript]
然后转到引擎。/Rakefile并添加
# lib/tasks/your_engine_tasks.rake
desc "Explaining what the task does"
task :your_task do
# Task goes here
end
现在我们开始:
load 'lib/tasks/your_engine_tasks.rake'
给你你的任务
希望我能帮上忙。您需要将:环境添加到您的任务中:
任务您的任务::环境执行
load 'lib/tasks/your_engine_tasks.rake'
$ rake -T