是否可以在rake任务中包含模块并使其方法可用于rails app中的任务?
在我们的rails 3.2.12
应用程序中,在lib/tasks
下创建了一个rake task
lib/tasks
。 rake task
需要调用一个方法find_config()
,该方法驻留在另一个rails模块authentify
(模块不在/ lib /下)。 我们include Authentify
在rake task
include Authentify
并使方法find_config()
可以在rake任务中调用吗?
以下是我们在rake task
要做的rake task
:
include Authentify config = Authentify::find_config()
感谢您的评论。
require 'modules/module_name' include ModuleName namespace :rake_name do desc "description of rake task" task example_task: :environment do result = ModuleName::method_name() end #end task end
这对我有用。 由于您的模块不在/ lib中,因此您可能需要编辑它的所需方式。 但它应该工作。 希望能帮助到你。
如何在Rake任务中要求Rails服务/模块?
我有同样的问题,并设法通过要求rake任务中的rails文件来解决它。
我在文件lib/tasks/a_task.rake
定义了一个名为give_something
的rake任务。
在该任务中,我需要从模块AService
调用函数give_something
,该模块位于文件app/services/a_service.rb
rake任务定义如下:
namespace :a_namespace do desc "give something to a list of users" task give_something: :environment do AService.give_something(something, users) end end
我收到了错误: uninitialized constant AService
为了解决这个问题,我不得不要求模块不在文件a_task.rake
的开头,而是在rake任务中:
namespace :a_namespace do desc "give something to a list of users" task give_something: :environment do require 'services/a_service' # <-- HERE! AService.give_something(something, users) end end