Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 可安装发动机的自定义耙任务_Ruby On Rails - Fatal编程技术网

Ruby on rails 可安装发动机的自定义耙任务

Ruby on rails 可安装发动机的自定义耙任务,ruby-on-rails,Ruby On Rails,我无法在我创建的可安装引擎中运行自定义rake任务。创建可装载引擎时,默认情况下,有一个Rails.root/lib/tasks目录,其中包含一个以引擎命名的rake文件: internal_management_system.rake 在这个文件中,我创建了一个简单的任务: task :internal_management_system do puts 'hello world' end 现在,从Rails.root目录,我尝试运行它: $ rake internal_manage

我无法在我创建的可安装引擎中运行自定义rake任务。创建可装载引擎时,默认情况下,有一个Rails.root/lib/tasks目录,其中包含一个以引擎命名的rake文件:

internal_management_system.rake
在这个文件中,我创建了一个简单的任务:

task :internal_management_system do
  puts 'hello world'
end 
现在,从Rails.root目录,我尝试运行它:

$ rake internal_management_system
rake aborted!
Don't know how to build task 'internal_management_system'

我做错了什么?

如果给任务一个名称空间,它应该可以工作。因此,在您的内部_management _system.rake文件中:

namespace :db do
 task :internal_management_system do
  puts 'hello world'
 end 
end
然后运行命令:

$ rake db:internal_management_system

解决方案是从虚拟应用程序根目录运行它。显然,您无法从引擎根目录运行它

所以在引擎根中,您有

/lib/tasks/hello.rake
及其内容:

task :hello do
  puts 'hello world'
end

然后转到虚拟应用程序并运行rake hello

这对于常规应用程序来说很好。但这不适用于可安装的发动机。