在Ruby on Rails初始化过程中,如何执行特定的rake任务?

2026-04-11 15:071阅读0评论SEO问题
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计327个文字,预计阅读时间需要2分钟。

在Ruby on Rails初始化过程中,如何执行特定的rake任务?

我想执行两个rake任务,在服务器启动时初始化我的数据库。因此,我在config/application.rb中设置了以下代码:

rubyconfig.after_initialize do Rake::Task['download_csv:get_files'].invoke Rake::Task['download_csv:p'].invokeend

我想执行两个rake任务,在服务器启动时初始化我的数据库.
因此,我在config / application.rb中放置了以下代码:

config.after_initialize do Rake::Task[ 'download_csv:get_files' ].invoke Rake::Task[ 'download_csv:place_in_database' ].invoke end

但是,我收到以下错误:

.rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/rake/task_manager.rb:62:in `[]': Don't know how to build task 'download_csv:get_files' (RuntimeError)

我做错了什么?
(我的目标是在启动时初始化数据库).

Rails任务不会自动加载,您需要先加载它们:

config.after_initialize do Rails.application.load_tasks # <--- Rake::Task['download_csv:get_files'].invoke Rake::Task['download_csv:place_in_database'].invoke end

请注意,#load_tasks不存储状态,如果您在其他地方再次调用它,则可能会遇到问题.

另一方面,任务的名称表明它们不需要在每个Web实例上运行(例如Heroku Dynos);但是他们将使用上述策略在每台机器上运行.因此,如果您扩展了Web实例(在多台计算机上运行您的应用程序),则在单个实例(Hero上的一次性Dyno)上运行这些任务作为自动化的部署后任务会更有效.

在Ruby on Rails初始化过程中,如何执行特定的rake任务?

本文共计327个文字,预计阅读时间需要2分钟。

在Ruby on Rails初始化过程中,如何执行特定的rake任务?

我想执行两个rake任务,在服务器启动时初始化我的数据库。因此,我在config/application.rb中设置了以下代码:

rubyconfig.after_initialize do Rake::Task['download_csv:get_files'].invoke Rake::Task['download_csv:p'].invokeend

我想执行两个rake任务,在服务器启动时初始化我的数据库.
因此,我在config / application.rb中放置了以下代码:

config.after_initialize do Rake::Task[ 'download_csv:get_files' ].invoke Rake::Task[ 'download_csv:place_in_database' ].invoke end

但是,我收到以下错误:

.rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/rake/task_manager.rb:62:in `[]': Don't know how to build task 'download_csv:get_files' (RuntimeError)

我做错了什么?
(我的目标是在启动时初始化数据库).

Rails任务不会自动加载,您需要先加载它们:

config.after_initialize do Rails.application.load_tasks # <--- Rake::Task['download_csv:get_files'].invoke Rake::Task['download_csv:place_in_database'].invoke end

请注意,#load_tasks不存储状态,如果您在其他地方再次调用它,则可能会遇到问题.

另一方面,任务的名称表明它们不需要在每个Web实例上运行(例如Heroku Dynos);但是他们将使用上述策略在每台机器上运行.因此,如果您扩展了Web实例(在多台计算机上运行您的应用程序),则在单个实例(Hero上的一次性Dyno)上运行这些任务作为自动化的部署后任务会更有效.

在Ruby on Rails初始化过程中,如何执行特定的rake任务?