Rails - 在启动时执行rake任务

时间:2015-05-23 09:23:29

标签: ruby-on-rails heroku rake

我在config/application.rb

中有以下代码
config.after_initialize do

      IndividualProject::Application.load_tasks
      #load File.join(Rails.root, 'lib', 'tasks', 'download_csv.rake')
      Rake::Task[ 'download_csv:get_files' ].invoke
      Rake::Task[ 'download_csv:place_in_database' ].invoke
    end

我的问题是,如果我尝试执行迁移,我会收到一个数据库错误,指出我在rake任务中引用的某个表不存在。

ActiveRecord::StatementInvalid: PG::UndefinedTable: ERROR:  relation "currencies" does not exist

我可以通过注释掉代码然后运行迁移来解决问题。在此之后,服务器运行正常。

但是,我想部署到Heroku,在运行迁移之前我无法注释掉代码。

我该如何解决这个问题? 我是否需要将代码放在项目的其他位置?

1 个答案:

答案 0 :(得分:2)

config/application.rb移除您的代码并更改Procfile中的网络流程,如下所示:

  web: rake download_csv:get_files && rake download_csv:place_in_database && bundle exec rails server -p $PORT

使用您用于启动服务器的任何代码更改bundle exec rails server -p $PORT

如果您的项目中还没有Procfile,请创建一个并将其添加到git。

现在,您的rake任务将仅在启动服务器之前执行。